<?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>43099</bug_id>
          
          <creation_ts>2010-07-27 18:51:58 -0700</creation_ts>
          <short_desc>Add JavaScript API to allow a page to go fullscreen</short_desc>
          <delta_ts>2013-08-13 10:44:57 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://wiki.mozilla.org/index.php?title=Gecko:FullScreenAPI</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>49481</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>abarth</cc>
    
    <cc>andreip</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jorlow</cc>
    
    <cc>ncalebrobinson</cc>
    
    <cc>peter</cc>
    
    <cc>pkchan+bugzilla=webkit</cc>
    
    <cc>roc</cc>
    
    <cc>sam</cc>
    
    <cc>scherkus</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>steveblock</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>256983</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 18:51:58 -0700</bug_when>
    <thetext>Mozilla has an API proposal for allowing arbitrary HTML elements to enter and exit full screen mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256986</commentid>
    <comment_count>1</comment_count>
      <attachid>62784</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 19:12:22 -0700</bug_when>
    <thetext>Created attachment 62784
FullScreen-WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256987</commentid>
    <comment_count>2</comment_count>
      <attachid>62785</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 19:12:52 -0700</bug_when>
    <thetext>Created attachment 62785
FullScreen-WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256988</commentid>
    <comment_count>3</comment_count>
      <attachid>62786</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 19:13:33 -0700</bug_when>
    <thetext>Created attachment 62786
FullScreen-WebKitTools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256989</commentid>
    <comment_count>4</comment_count>
      <attachid>62787</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 19:14:01 -0700</bug_when>
    <thetext>Created attachment 62787
FullScreen-LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256991</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-27 19:18:38 -0700</bug_when>
    <thetext>Attachment 62784 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLMediaElement.cpp:2016:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
WebCore/dom/WebKitFullScreenChangeEvent.cpp:38:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/WebKitFullScreenChangeEvent.h:35:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/dom/WebKitFullScreenChangeEvent.h:56:  Should have a space between // and comment  [whitespace/comments] [4]
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 5 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256994</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-07-27 19:22:06 -0700</bug_when>
    <thetext>Attachment 62785 did not build on mac:
Build output: http://queues.webkit.org/results/3619254</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256997</commentid>
    <comment_count>7</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-27 19:29:34 -0700</bug_when>
    <thetext>Attachment 62784 did not build on qt:
Build output: http://queues.webkit.org/results/3585620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257014</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-27 20:21:49 -0700</bug_when>
    <thetext>Attachment 62784 did not build on chromium:
Build output: http://queues.webkit.org/results/3638043</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257015</commentid>
    <comment_count>9</comment_count>
      <attachid>62793</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 20:36:21 -0700</bug_when>
    <thetext>Created attachment 62793
FullScreen-WebCore

Fixed a few style errors (except for the one in EventNames.h).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257016</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-27 20:42:53 -0700</bug_when>
    <thetext>Attachment 62793 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257019</commentid>
    <comment_count>11</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-07-27 20:49:34 -0700</bug_when>
    <thetext>Attachment 62793 did not build on qt:
Build output: http://queues.webkit.org/results/3636054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257024</commentid>
    <comment_count>12</comment_count>
      <attachid>62793</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-27 21:12:21 -0700</bug_when>
    <thetext>Comment on attachment 62793
FullScreen-WebCore

Cancelling review+ while I work on fixing the qt and gtk compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257052</commentid>
    <comment_count>13</comment_count>
      <attachid>62797</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 00:09:20 -0700</bug_when>
    <thetext>Created attachment 62797
FullScreen-WebCore

Changed the way that the new full screen symbols are exported from WebCore.  Also, the HTMLVideo and MediaElements retain their original implementations if ENABLE_FULLSCREEN is not turned on.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257056</commentid>
    <comment_count>14</comment_count>
      <attachid>62799</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 00:37:28 -0700</bug_when>
    <thetext>Created attachment 62799
FullScreen-WebCore

Recreated patch after resolving conflicts in the FeatureDefines.xcconfig file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257057</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 00:39:39 -0700</bug_when>
    <thetext>Attachment 62799 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/html/HTMLMediaElement.cpp:2021:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebCore/html/HTMLVideoElement.cpp:142:  Tab found; better to use spaces  [whitespace/tab] [1]
WebCore/html/HTMLVideoElement.cpp:145:  Tab found; better to use spaces  [whitespace/tab] [1]
Total errors found: 4 in 35 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257058</commentid>
    <comment_count>16</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 00:41:39 -0700</bug_when>
    <thetext>I&apos;ll fix the tabs next time I upload the FullScreen-WebCore patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257076</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 02:10:49 -0700</bug_when>
    <thetext>Attachment 62799 did not build on chromium:
Build output: http://queues.webkit.org/results/3588550</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257097</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 04:12:28 -0700</bug_when>
    <thetext>Attachment 62799 did not build on gtk:
Build output: http://queues.webkit.org/results/3643004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257195</commentid>
    <comment_count>19</comment_count>
      <attachid>62833</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 09:22:00 -0700</bug_when>
    <thetext>Created attachment 62833
FullScreen-WebCore

Fixed the mismatched braces in HTMLElement.cpp when ENABLE_FULLSCREEN is turned off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257206</commentid>
    <comment_count>20</comment_count>
      <attachid>62835</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 09:41:29 -0700</bug_when>
    <thetext>Created attachment 62835
FullScreen-WebCore

Fixed the merge conflicts resulting from &lt;r64210.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257207</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 09:42:46 -0700</bug_when>
    <thetext>Attachment 62835 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257262</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 11:31:50 -0700</bug_when>
    <thetext>Attachment 62835 did not build on chromium:
Build output: http://queues.webkit.org/results/3642031</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257340</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 13:36:12 -0700</bug_when>
    <thetext>Attachment 62835 did not build on gtk:
Build output: http://queues.webkit.org/results/3588563</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257349</commentid>
    <comment_count>24</comment_count>
      <attachid>62874</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-28 14:04:25 -0700</bug_when>
    <thetext>Created attachment 62874
FullScreen-WebCore

Unprotected ChromeClient::enter/exit/supportsFullScreenForElement().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257351</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-28 14:07:16 -0700</bug_when>
    <thetext>Attachment 62874 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 37 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257707</commentid>
    <comment_count>26</comment_count>
      <attachid>62954</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-29 09:05:57 -0700</bug_when>
    <thetext>Created attachment 62954
FullScreen-WebCore

Figured out the way the new exports mechanism works.  Added the symbols to WebCore.exp.in instead of ExportFileGenerator.cpp directly.  Also, modified HTMLIFrameElement.idl so the allowsFullScreen attribute is a boolean type (instead of a string).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257717</commentid>
    <comment_count>27</comment_count>
      <attachid>62954</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-29 09:15:41 -0700</bug_when>
    <thetext>Comment on attachment 62954
FullScreen-WebCore

Clearing review? due to merge conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257770</commentid>
    <comment_count>28</comment_count>
      <attachid>62968</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-29 11:02:05 -0700</bug_when>
    <thetext>Created attachment 62968
FullScreen-WebCore

Resolved merge conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257773</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-29 11:05:16 -0700</bug_when>
    <thetext>Attachment 62968 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257809</commentid>
    <comment_count>30</comment_count>
      <attachid>62968</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-07-29 12:32:48 -0700</bug_when>
    <thetext>Comment on attachment 62968
FullScreen-WebCore

In general, I think it might be helpful to split this commit up into multiple commits:
1. Add non-working support for the DOM API and events.
2. Add the security-related logic.
3. Add the code to make them work, with tests
4. Add the iframe-related logic
5. Convert the existing video fullscreen to use this

Tests I would like to see:
1. Test that takes an element fullscreen, then removes that element from the DOM
2. Test that takes an element fullscreen, then removes an ancestor of that element from the DOM
3. Test that takes an element fullscreen, then sets display:none on that element
4. Test that takes the document fullscreen, and then navigates
5. Test that takes the document fullscreen, then tries to take an element fullscreen

&gt; Index: JavaScriptCore/wtf/Platform.h
&gt; ===================================================================
&gt; --- JavaScriptCore/wtf/Platform.h	(revision 64291)
&gt; +++ JavaScriptCore/wtf/Platform.h	(working copy)
&gt; @@ -597,6 +597,7 @@
&gt;  #endif
&gt;  #define HAVE_READLINE 1
&gt;  #define HAVE_RUNLOOP_TIMER 1
&gt; +#define ENABLE_FULLSCREEN 1

I think this needs a slightly more descriptive name, like ENABLE_FULLSCREEN_API.

&gt; Index: WebCore/bindings/objc/PublicDOMInterfaces.h
&gt; ===================================================================
&gt; --- WebCore/bindings/objc/PublicDOMInterfaces.h	(revision 64291)
&gt; +++ WebCore/bindings/objc/PublicDOMInterfaces.h	(working copy)
&gt; @@ -156,6 +156,11 @@ @interface DOMDocument : DOMNode WEBKIT_
&gt;  - (DOMNodeList *)getElementsByClassName:(NSString *)tagname AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt;  - (DOMElement *)querySelector:(NSString *)selectors AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt;  - (DOMNodeList *)querySelectorAll:(NSString *)selectors AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; +- (void)webkitRequestFullScreen AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +- (void)webkitRequestFullScreenWithKeys AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +- (void)webkitCancelFullScreen AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +#endif
&gt;  @end
&gt;  
&gt;  @interface DOMDocumentFragment : DOMNode WEBKIT_VERSION_1_3
&gt; @@ -224,6 +229,10 @@ @interface DOMElement : DOMNode WEBKIT_V
&gt;  - (DOMNodeList *)getElementsByClassName:(NSString *)name AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt;  - (DOMElement *)querySelector:(NSString *)selectors AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt;  - (DOMNodeList *)querySelectorAll:(NSString *)selectors AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; +- (void)webkitRequestFullScreen AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +- (void)webkitRequestFullScreenWithKeys AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +#endif
&gt;  @end
&gt;  
&gt;  @interface DOMEntity : DOMNode WEBKIT_VERSION_1_3
&gt; @@ -569,6 +578,9 @@ @interface DOMHTMLIFrameElement : DOMHTM
&gt;  @property(copy) NSString *width;
&gt;  @property(readonly, retain) DOMDocument *contentDocument;
&gt;  @property(readonly, retain) DOMAbstractView *contentWindow AVAILABLE_IN_WEBKIT_VERSION_4_0;
&gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; +@property(assign) BOOL webkitAllowFullScreen;
&gt; +#endif
&gt;  @end

Does +#if ENABLE(FULLSCREEN) not work here?

&gt; Index: WebCore/css/CSSSelector.cpp
&gt; ===================================================================

&gt; +#if ENABLE(FULLSCREEN)
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, fullScreen, (&quot;-webkit-full-screen&quot;));
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, fullScreenDoc, (&quot;-webkit-full-screen-doc&quot;));
&gt; +    DEFINE_STATIC_LOCAL(AtomicString, fullScreenRootWithTarget, (&quot;-webkit-full-screen-root-with-target&quot;));
&gt; +#endif

I think -webkit-full-screen-doc should not abbreviate &quot;document&apos; (also applies to all the variable and type names).

This would require feedback on the Mozilla proposal (which should happen in what-wg, not just via the wiki).

We use &quot;full-page&quot; elsewhere; should &quot;full-screen-doc&quot; be &quot;full-screen-page&quot;?

&gt; Index: WebCore/css/CSSStyleSelector.cpp
&gt; ===================================================================

&gt;  static void loadSimpleDefaultStyle()
&gt; @@ -563,6 +571,13 @@ static void loadSimpleDefaultStyle()
&gt;      defaultStyle-&gt;addRulesFromSheet(simpleDefaultStyleSheet, screenEval());
&gt;      
&gt;      // No need to initialize quirks sheet yet as there are no quirk rules for elements allowed in simple default style.
&gt; +
&gt; +#if ENABLE(FULLSCREEN)
&gt; +    // Full-screen rules.
&gt; +    String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()-&gt;extraDefaultStyleSheet();
&gt; +    CSSStyleSheet* fullscreenSheet = parseUASheet(fullscreenRules);
&gt; +    defaultStyle-&gt;addRulesFromSheet(fullscreenSheet, screenEval());
&gt; +#endif

It&apos;s not obvious to me that we want to load fullscreen rules in loadSimpleDefaultStyle().

&gt; Index: WebCore/css/fullscreen.css
&gt; ===================================================================

&gt; +:-webkit-full-screen {
&gt; +  position:fixed;
&gt; +  top:0;
&gt; +  left:0;
&gt; +  right:0;
&gt; +  bottom:0;
&gt; +}
&gt; +:-webkit-full-screen-root-with-target {
&gt; +  overflow:hidden;
&gt; +}
&gt; +
&gt; +video:-webkit-full-screen {
&gt; +    width: 100%;
&gt; +    height: 100%
&gt; +    image-fit: fill;

Mixed 2- and 4-space indentation here.

&gt; \ No newline at end of file

Fix this.

&gt; Index: WebCore/dom/Document.cpp
&gt; ===================================================================
&gt; +#if ENABLE(FULLSCREEN)
&gt; +    else if (eventType == eventNames().webkitfullscreenchangeEvent)
&gt; +        addListenerType(FULLSCREEN_LISTENER);
&gt; +#endif

Should FULLSCREEN_LISTENER be FULLSCREEN_CHANGE_LISTENER?

&gt; +void Document::webkitWillEnterFullScreenForElement(Element* element)
&gt; +{
&gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;

I find it odd that this does these checks again; shouldn&apos;t it just assert?

&gt; +    m_fullScreenElement = element ? element : documentElement();

Why is m_fullScreenElement being set again? It seems like the role of this method is
being confused with the &quot;request&quot; methods. By this time, you should have everything
set up already.

&gt; +void Document::webkitDidExitFullScreenForElement(Element*)
&gt; +{
&gt; +    if (!page())
&gt; +        return;
&gt; +    
&gt; +    if (!page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;

Seems bad to bail here too. If you&apos;re in fullscreen, you sure need to be able to come out.

&gt; Index: WebCore/dom/Document.h
&gt; ===================================================================

&gt; +#if ENABLE(FULLSCREEN)
&gt; +    bool webkitIsFullScreen() const { return m_isFullScreen; }
&gt; +    bool webkitIsFullScreenWithKeysEnabled() const { return m_isFullScreen &amp;&amp; m_areKeysEnabled; }

I don&apos;t really like the &quot;keys enabled&quot; nomenclature. &quot;keys&quot; is too generic; it should be
&quot;key input&quot;. (This is feedback for the mozilla proposal too.)

&gt; +    Element* webkitCurrentFullScreenElement() const { return m_fullScreenElement; }
&gt; +    void webkitRequestFullScreen();
&gt; +    void webkitRequestFullScreenWithKeys();

Should be webkitRequestFullScreenAllowingKeyboardInput().

I&apos;m surprised these &apos;request fullscreen&apos; methods don&apos;t return a bool.

&gt; +    void webkitRequestFullScreenForElementWithKeys(Element*, bool keysEnabled);

Ditto.

&gt; +    void webkitCancelFullScreen();

Does &quot;cancel&quot; mean &quot;exit&quot;?

&gt; +#if ENABLE(FULLSCREEN)
&gt; +    bool m_isFullScreen;
&gt; +    bool m_areKeysEnabled;

The variable name should be qualified by fullscreen (otherwise it reads like it affects
the Document all the time), or you combine this and m_isFullScreen in a enum.

&gt; +    Element* m_fullScreenElement;

You may want to make this a RefPtr&lt;&gt; (taking care to avoid ref cycles).

&gt; Index: WebCore/dom/Document.idl
&gt; ===================================================================
&gt; --- WebCore/dom/Document.idl	(revision 64291)
&gt; +++ WebCore/dom/Document.idl	(working copy)
&gt; @@ -245,6 +245,15 @@ module core {
&gt;          [DontEnum] void initializeWMLPageState();
&gt;  #endif
&gt;  
&gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; +        void webkitRequestFullScreen();
&gt; +        void webkitRequestFullScreenWithKeys();

Why don&apos;t these return bools?

&gt; +        readonly attribute boolean webkitIsFullScreen;
&gt; +        readonly attribute boolean webkitIsFullScreenWithKeysEnabled;
&gt; +        readonly attribute Element webkitCurrentFullScreenElement;
&gt; +        void webkitCancelFullScreen();

&apos;cancel&apos; should be &apos;exit&apos;.

&gt; Index: WebCore/dom/EventNames.h
&gt; ===================================================================
&gt; +    macro(webkitfullscreenchange)
&gt; +    \

It&apos;s unfortunate that we use both &quot;foochange&quot; and &quot;foochanged&quot; for events. I find
the latter more readable.

&gt; Index: WebCore/html/HTMLIFrameElement.h
&gt; ===================================================================

&gt; +#if ENABLE(FULLSCREEN)
&gt; +    bool webkitAllowFullScreen() const { return m_allowFullScreen; }
&gt; +    void setWebkitAllowFullScreen(bool value) { m_allowFullScreen = value; }
&gt; +#endif

These methods should not use the webkit prefix. The only places you have to use the prefix
are those exposed to content, otherwise, when the prefix is removed, you have to make
lots of extra changes.

&gt; +#if ENABLE(FULLSCREEN)
&gt; +    bool m_allowFullScreen;
&gt; +#endif

I think m_allowsFullScreen would be better.

&gt; Index: WebCore/page/Settings.h
&gt; ===================================================================

&gt; +#if ENABLE(FULLSCREEN)
&gt; +        bool m_fullScreenEnabled : 1;

m_fullScreenEnabled would be better as m_fullScreenAPIEnabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257871</commentid>
    <comment_count>31</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-07-29 14:10:23 -0700</bug_when>
    <thetext>(In reply to comment #30)

First, much of your review focuses on changes you would like seen made to the Mozilla proposal.  I don&apos;t believe this is the correct forum for those changes.  The patch, as it is, hews very closely to the current Mozilla API proposal purposefully, so as to better understand the shortcomings of the actual proposal.  I don&apos;t foresee this being the final implementation; the proposal will surely change with feedback from the community and the implementation will have to change to match.

&gt; Tests I would like to see:
&gt; 1. Test that takes an element fullscreen, then removes that element from the DOM
&gt; 2. Test that takes an element fullscreen, then removes an ancestor of that element from the DOM
&gt; 3. Test that takes an element fullscreen, then sets display:none on that element
&gt; 4. Test that takes the document fullscreen, and then navigates
&gt; 5. Test that takes the document fullscreen, then tries to take an element fullscreen

I&apos;ll work on adding those tests to the LayoutTests patch.

&gt; I think this needs a slightly more descriptive name, like ENABLE_FULLSCREEN_API.

OK.

&gt; &gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; &gt; +@property(assign) BOOL webkitAllowFullScreen;
&gt; &gt; +#endif
&gt; &gt;  @end
&gt; 
&gt; Does +#if ENABLE(FULLSCREEN) not work here?

PublicDOMInterfaces.h does not include any files, and cannot therefore guarantee the ENABLE() macro has been defined.

&gt; I think -webkit-full-screen-doc should not abbreviate &quot;document&apos; (also applies to all the variable and type names).
&gt; 
&gt; This would require feedback on the Mozilla proposal (which should happen in what-wg, not just via the wiki).

This is a (relatively) strict implementation of the Mozilla spec.  I deliberately did not make any design or naming changes, apart from the -webkit prefix.

&gt; We use &quot;full-page&quot; elsewhere; should &quot;full-screen-doc&quot; be &quot;full-screen-page&quot;?

Seems like a good point for discussion with the what-wg.

&gt; It&apos;s not obvious to me that we want to load fullscreen rules in loadSimpleDefaultStyle().

OK.

&gt; &gt; Index: WebCore/css/fullscreen.css
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +:-webkit-full-screen {
&gt; &gt; +  position:fixed;
&gt; &gt; +  top:0;
&gt; &gt; +  left:0;
&gt; &gt; +  right:0;
&gt; &gt; +  bottom:0;
&gt; &gt; +}
&gt; &gt; +:-webkit-full-screen-root-with-target {
&gt; &gt; +  overflow:hidden;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +video:-webkit-full-screen {
&gt; &gt; +    width: 100%;
&gt; &gt; +    height: 100%
&gt; &gt; +    image-fit: fill;
&gt; 
&gt; Mixed 2- and 4-space indentation here.

OK.

&gt; &gt; \ No newline at end of file
&gt; 
&gt; Fix this.

OK.

&gt; &gt; Index: WebCore/dom/Document.cpp
&gt; &gt; ===================================================================
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    else if (eventType == eventNames().webkitfullscreenchangeEvent)
&gt; &gt; +        addListenerType(FULLSCREEN_LISTENER);
&gt; &gt; +#endif
&gt; 
&gt; Should FULLSCREEN_LISTENER be FULLSCREEN_CHANGE_LISTENER?

OK. (FULLSCREENCHANGE_LISTENER, to match the existing definitions.)

&gt; &gt; +void Document::webkitWillEnterFullScreenForElement(Element* element)
&gt; &gt; +{
&gt; &gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; &gt; +        return;
&gt; 
&gt; I find it odd that this does these checks again; shouldn&apos;t it just assert?

OK.

&gt; &gt; +    m_fullScreenElement = element ? element : documentElement();
&gt; 
&gt; Why is m_fullScreenElement being set again? It seems like the role of this method is
&gt; being confused with the &quot;request&quot; methods. By this time, you should have everything
&gt; set up already.

Whoops, m_fullScreenElement should not be set in webkitRequestFullScreenForElementWithKeys. 

&gt; &gt; +void Document::webkitDidExitFullScreenForElement(Element*)
&gt; &gt; +{
&gt; &gt; +    if (!page())
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    if (!page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; &gt; +        return;
&gt; 
&gt; Seems bad to bail here too. If you&apos;re in fullscreen, you sure need to be able to come out.

OK.

&gt; &gt; Index: WebCore/dom/Document.h
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    bool webkitIsFullScreen() const { return m_isFullScreen; }
&gt; &gt; +    bool webkitIsFullScreenWithKeysEnabled() const { return m_isFullScreen &amp;&amp; m_areKeysEnabled; }
&gt; 
&gt; I don&apos;t really like the &quot;keys enabled&quot; nomenclature. &quot;keys&quot; is too generic; it should be
&gt; &quot;key input&quot;. (This is feedback for the mozilla proposal too.)

Again, this is a discussion to have with the what-wg or Mozilla.

&gt; I&apos;m surprised these &apos;request fullscreen&apos; methods don&apos;t return a bool.

They are not specced to return a bool.

&gt; &gt; +    void webkitCancelFullScreen();
&gt; 
&gt; Does &quot;cancel&quot; mean &quot;exit&quot;?

From the Mozilla proposal: &quot;Requests that the UA exit fullscreen mode. The UA is not required to honor this, for example the UA might require that only a Document that last triggered fullscreen can cancel it.&quot;

&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    bool m_isFullScreen;
&gt; &gt; +    bool m_areKeysEnabled;
&gt; 
&gt; The variable name should be qualified by fullscreen (otherwise it reads like it affects
&gt; the Document all the time), or you combine this and m_isFullScreen in a enum.

It could be changed to m_areKeysEnabledInFullScreen;

&gt; &gt; +    Element* m_fullScreenElement;
&gt; 
&gt; You may want to make this a RefPtr&lt;&gt; (taking care to avoid ref cycles).

OK.

&gt; &gt; Index: WebCore/dom/Document.idl
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/dom/Document.idl	(revision 64291)
&gt; &gt; +++ WebCore/dom/Document.idl	(working copy)
&gt; &gt; @@ -245,6 +245,15 @@ module core {
&gt; &gt;          [DontEnum] void initializeWMLPageState();
&gt; &gt;  #endif
&gt; &gt;  
&gt; &gt; +#if defined(ENABLE_FULLSCREEN) &amp;&amp; ENABLE_FULLSCREEN
&gt; &gt; +        void webkitRequestFullScreen();
&gt; &gt; +        void webkitRequestFullScreenWithKeys();
&gt; 
&gt; Why don&apos;t these return bools?

They aren&apos;t specced to.  From the proposal: &quot;Typically the user agent would react by transitioning the Document to the fullscreen state, or by presenting asynchronous confirmation UI and transitioning to the fullscreen state if/when the user responds affirmatively.&quot; 

&gt; &gt; +        readonly attribute boolean webkitIsFullScreen;
&gt; &gt; +        readonly attribute boolean webkitIsFullScreenWithKeysEnabled;
&gt; &gt; +        readonly attribute Element webkitCurrentFullScreenElement;
&gt; &gt; +        void webkitCancelFullScreen();
&gt; 
&gt; &apos;cancel&apos; should be &apos;exit&apos;.

That&apos;s not the spec.

&gt; &gt; Index: WebCore/html/HTMLIFrameElement.h
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    bool webkitAllowFullScreen() const { return m_allowFullScreen; }
&gt; &gt; +    void setWebkitAllowFullScreen(bool value) { m_allowFullScreen = value; }
&gt; &gt; +#endif
&gt; 
&gt; These methods should not use the webkit prefix. The only places you have to use the prefix
&gt; are those exposed to content, otherwise, when the prefix is removed, you have to make
&gt; lots of extra changes.

They are exposed to content, by way of the DOMHTMLIFrameElement and JSHTMLIFrameElement.

&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    bool m_allowFullScreen;
&gt; &gt; +#endif
&gt; 
&gt; I think m_allowsFullScreen would be better.

OK.

&gt; &gt; Index: WebCore/page/Settings.h
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +        bool m_fullScreenEnabled : 1;
&gt; 
&gt; m_fullScreenEnabled would be better as m_fullScreenAPIEnabled.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259585</commentid>
    <comment_count>32</comment_count>
      <attachid>63360</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-03 11:35:21 -0700</bug_when>
    <thetext>Created attachment 63360
FullScree-LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259590</commentid>
    <comment_count>33</comment_count>
      <attachid>63361</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-03 11:43:27 -0700</bug_when>
    <thetext>Created attachment 63361
FullScreen-WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259594</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 11:47:42 -0700</bug_when>
    <thetext>Attachment 63361 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259769</commentid>
    <comment_count>35</comment_count>
      <attachid>63397</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-03 17:48:31 -0700</bug_when>
    <thetext>Created attachment 63397
FullScreen-WebCore

Fixed some merge conflicts that were confusing the EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>259771</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-03 17:52:12 -0700</bug_when>
    <thetext>Attachment 63397 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260139</commentid>
    <comment_count>37</comment_count>
      <attachid>63476</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-04 12:06:58 -0700</bug_when>
    <thetext>Created attachment 63476
FullScreen-WebCore

Updated patch after speaking with Robert O&apos;Callahan about the Mozilla proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260140</commentid>
    <comment_count>38</comment_count>
      <attachid>63477</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-04 12:07:41 -0700</bug_when>
    <thetext>Created attachment 63477
FullScreen-LayoutTests

Updated LayoutTests to match changes to the Mozilla proposal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260141</commentid>
    <comment_count>39</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-04 12:09:21 -0700</bug_when>
    <thetext>Attachment 63476 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260760</commentid>
    <comment_count>40</comment_count>
      <attachid>63476</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-05 12:18:05 -0700</bug_when>
    <thetext>Comment on attachment 63476
FullScreen-WebCore

I agree with Simon&apos;s comment above that it would be nice to break this into 
several smaller patches, this is a lot for one patch!

https://bugs.webkit.org/show_bug.cgi?id=34942 change all of Webkit to use 
&quot;FullScreen&quot; instead of &quot;Fullscreen&quot; and this goes back to using inner 
caps... I realize that these names are from the Mozilla proposal, but 
this is one more thing to discuss on the mailing list.


&gt; +        (WebCore::Event::isWebKitFullScreenChangeEvent): Overrided by WebKitFullScreenChangeEvent.

Typo, you want &quot;overridden&quot; I think.


&gt; +        (WebCore::HTMLMediaElement::HTMLMediaElement):
&gt; +        (WebCore::HTMLMediaElement::parseMappedAttribute):
&gt; +        (WebCore::HTMLMediaElement::removedFromDocument):
&gt; +        (WebCore::HTMLMediaElement::documentWillBecomeInactive):
&gt; +        (WebCore::HTMLMediaElement::isFullscreen):
&gt; +        (WebCore::HTMLMediaElement::enterFullscreen):
&gt; +        (WebCore::HTMLMediaElement::exitFullscreen):

No comments about what changed.

&gt; +        (WebCore::HTMLVideoElement::supportsFullscreen):

Ditto.

&gt; +void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)
&gt; +{
&gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;
&gt; +
&gt; +    if (!element)
&gt; +        element = documentElement();
&gt; +    
&gt; +    if (page()-&gt;chrome()-&gt;client()-&gt;supportsFullscreenForElement(element)) {

Might as well return early if we can&apos;t go fullscreen for the element.


&gt; +void Document::webkitCancelFullScreen()
&gt; +{
&gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;
&gt; +    
&gt; +    if (page()-&gt;chrome()-&gt;client()-&gt;supportsFullscreenForElement(m_fullScreenElement.get()))
&gt; +        page()-&gt;chrome()-&gt;client()-&gt;exitFullscreenForElement(m_fullScreenElement.get());
&gt; +}

You definitely shouldn&apos;t bail if fullscreen is disabled, and presumably m_fullScreenElement 
can not exist unless supportsFullscreenForElement() returned true for it previously, so maybe
you should have something like this instead:

    if (!page() || !m_fullScreenElement)
        return;
    page()-&gt;chrome()-&gt;client()-&gt;exitFullscreenForElement(m_fullScreenElement.get());


&gt; Index: WebCore/html/HTMLMediaElement.cpp
&gt; ===================================================================
&gt; --- WebCore/html/HTMLMediaElement.cpp	(revision 64653)
&gt; +++ WebCore/html/HTMLMediaElement.cpp	(working copy)
&gt; @@ -312,7 +312,7 @@ void HTMLMediaElement::removedFromDocume
&gt;  {
&gt;      if (m_networkState &gt; NETWORK_EMPTY)
&gt;          pause(processingUserGesture());
&gt; -    if (m_isFullscreen)
&gt; +    if (isFullscreen())
&gt;          exitFullscreen();
&gt;      HTMLElement::removedFromDocument();
&gt;  }
&gt; @@ -1852,7 +1852,7 @@ void HTMLMediaElement::userCancelledLoad
&gt;  
&gt;  void HTMLMediaElement::documentWillBecomeInactive()
&gt;  {
&gt; -    if (m_isFullscreen)
&gt; +    if (isFullscreen())
&gt;          exitFullscreen();

Why does the media element need to exit manually when ENABLE(FULLSCREEN_API) is true?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260785</commentid>
    <comment_count>41</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 12:49:01 -0700</bug_when>
    <thetext>(In reply to comment #40)
&gt; (From update of attachment 63476 [details])
&gt; I agree with Simon&apos;s comment above that it would be nice to break this into 
&gt; several smaller patches, this is a lot for one patch!

Okay, I&apos;ll see what I can do.

&gt; https://bugs.webkit.org/show_bug.cgi?id=34942 change all of Webkit to use 
&gt; &quot;FullScreen&quot; instead of &quot;Fullscreen&quot; and this goes back to using inner 
&gt; caps... I realize that these names are from the Mozilla proposal, but 
&gt; this is one more thing to discuss on the mailing list.

Noted. :)

&gt; &gt; +        (WebCore::Event::isWebKitFullScreenChangeEvent): Overrided by WebKitFullScreenChangeEvent.
&gt; 
&gt; Typo, you want &quot;overridden&quot; I think.

OK.

&gt; &gt; +        (WebCore::HTMLMediaElement::HTMLMediaElement):
&gt; &gt; +        (WebCore::HTMLMediaElement::parseMappedAttribute):
&gt; &gt; +        (WebCore::HTMLMediaElement::removedFromDocument):
&gt; &gt; +        (WebCore::HTMLMediaElement::documentWillBecomeInactive):
&gt; &gt; +        (WebCore::HTMLMediaElement::isFullscreen):
&gt; &gt; +        (WebCore::HTMLMediaElement::enterFullscreen):
&gt; &gt; +        (WebCore::HTMLMediaElement::exitFullscreen):
&gt; 
&gt; No comments about what changed.
&gt; 
&gt; &gt; +        (WebCore::HTMLVideoElement::supportsFullscreen):
&gt; 
&gt; Ditto.

I&apos;ll fill these out with more detail.

&gt; &gt; +void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)
&gt; &gt; +{
&gt; &gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (!element)
&gt; &gt; +        element = documentElement();
&gt; &gt; +    
&gt; &gt; +    if (page()-&gt;chrome()-&gt;client()-&gt;supportsFullscreenForElement(element)) {
&gt; 
&gt; Might as well return early if we can&apos;t go fullscreen for the element.

OK.

&gt; &gt; +void Document::webkitCancelFullScreen()
&gt; &gt; +{
&gt; &gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    if (page()-&gt;chrome()-&gt;client()-&gt;supportsFullscreenForElement(m_fullScreenElement.get()))
&gt; &gt; +        page()-&gt;chrome()-&gt;client()-&gt;exitFullscreenForElement(m_fullScreenElement.get());
&gt; &gt; +}
&gt; 
&gt; You definitely shouldn&apos;t bail if fullscreen is disabled, and presumably m_fullScreenElement 
&gt; can not exist unless supportsFullscreenForElement() returned true for it previously, so maybe
&gt; you should have something like this instead:
&gt; 
&gt;     if (!page() || !m_fullScreenElement)
&gt;         return;
&gt;     page()-&gt;chrome()-&gt;client()-&gt;exitFullscreenForElement(m_fullScreenElement.get());

OK.

&gt; &gt; Index: WebCore/html/HTMLMediaElement.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/HTMLMediaElement.cpp	(revision 64653)
&gt; &gt; +++ WebCore/html/HTMLMediaElement.cpp	(working copy)
&gt; &gt; @@ -312,7 +312,7 @@ void HTMLMediaElement::removedFromDocume
&gt; &gt;  {
&gt; &gt;      if (m_networkState &gt; NETWORK_EMPTY)
&gt; &gt;          pause(processingUserGesture());
&gt; &gt; -    if (m_isFullscreen)
&gt; &gt; +    if (isFullscreen())
&gt; &gt;          exitFullscreen();
&gt; &gt;      HTMLElement::removedFromDocument();
&gt; &gt;  }
&gt; &gt; @@ -1852,7 +1852,7 @@ void HTMLMediaElement::userCancelledLoad
&gt; &gt;  
&gt; &gt;  void HTMLMediaElement::documentWillBecomeInactive()
&gt; &gt;  {
&gt; &gt; -    if (m_isFullscreen)
&gt; &gt; +    if (isFullscreen())
&gt; &gt;          exitFullscreen();
&gt; 
&gt; Why does the media element need to exit manually when ENABLE(FULLSCREEN_API) is true?

I was trying to disrupt the media element as little as possible on this round of patches.  I&apos;ll break the media/video portion out into its own patch and address this comment there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260813</commentid>
    <comment_count>42</comment_count>
      <attachid>63623</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 13:38:17 -0700</bug_when>
    <thetext>Created attachment 63623
FullScreen-WebCore-ChangeLogs

Splitting up FullScreen-WebCore.patch into 5 parts.  With this break up, individual patches will not compile autonomously. Such is the price to pay to get patches reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260815</commentid>
    <comment_count>43</comment_count>
      <attachid>63624</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 13:38:49 -0700</bug_when>
    <thetext>Created attachment 63624
FullScreen-WebCore-Config</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260817</commentid>
    <comment_count>44</comment_count>
      <attachid>63626</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 13:39:26 -0700</bug_when>
    <thetext>Created attachment 63626
FullScreen-WebCore-IDL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260818</commentid>
    <comment_count>45</comment_count>
      <attachid>63627</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 13:39:59 -0700</bug_when>
    <thetext>Created attachment 63627
FullScreen-WebCore-MediaElements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260820</commentid>
    <comment_count>46</comment_count>
      <attachid>63628</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 13:40:33 -0700</bug_when>
    <thetext>Created attachment 63628
FullScreen-WebCore</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260824</commentid>
    <comment_count>47</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-05 13:45:47 -0700</bug_when>
    <thetext>Attachment 63628 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:163:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260836</commentid>
    <comment_count>48</comment_count>
      <attachid>62786</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 13:57:27 -0700</bug_when>
    <thetext>Comment on attachment 62786
FullScreen-WebKitTools

&gt; +- (BOOL)webView:(WebView *)wv supportsFullscreenForElement:(DOMElement*)element
&gt; +- (void)webView:(WebView *)wv enterFullscreenForElement:(DOMElement*)element listener:(NSObject&lt;WebKitFullScreenListener&gt;*)listener
&gt; +- (void)webView:(WebView *)wv exitFullscreenForElement:(DOMElement*)element listener:(NSObject&lt;WebKitFullScreenListener&gt;*)listener

Please write &quot;webView&quot; in full here, not &quot;wv&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260841</commentid>
    <comment_count>49</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 14:04:20 -0700</bug_when>
    <thetext>(In reply to comment #48)
&gt; (From update of attachment 62786 [details])
&gt; &gt; +- (BOOL)webView:(WebView *)wv supportsFullscreenForElement:(DOMElement*)element
&gt; &gt; +- (void)webView:(WebView *)wv enterFullscreenForElement:(DOMElement*)element listener:(NSObject&lt;WebKitFullScreenListener&gt;*)listener
&gt; &gt; +- (void)webView:(WebView *)wv exitFullscreenForElement:(DOMElement*)element listener:(NSObject&lt;WebKitFullScreenListener&gt;*)listener
&gt; 
&gt; Please write &quot;webView&quot; in full here, not &quot;wv&quot;.

OK. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260845</commentid>
    <comment_count>50</comment_count>
      <attachid>62785</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:12:46 -0700</bug_when>
    <thetext>Comment on attachment 62785
FullScreen-WebKit

&gt; Index: WebKit/mac/Configurations/FeatureDefines.xcconfig
&gt; ===================================================================

You should probably land the xconfig changes for all projects at the same time.

&gt; Index: WebKit/mac/WebCoreSupport/WebChromeClient.mm
&gt; ===================================================================

&gt; -#if ENABLE(VIDEO)
&gt; +#if ENABLE(FULLSCREEN)

These (and other) changes regress apps that get video fullscreen now, but won&apos;t have generic fullscreen enabled unless they set the preference.

I think we should keep video fullscreen the way it works currently, and only switch over to generic fullscreen when we&apos;re ready to do so with zero regressions.

&gt; +#if ENABLE(FULLSCREEN)
&gt; +@implementation WebKitFullScreenListener
&gt; +- (id)initWithElement:(Element*)element
&gt; +{
&gt; +    if (!(self = [super init]))
&gt; +        return nil;
&gt; +    
&gt; +    _element = element;
&gt; +    return self;
&gt; +}
&gt; +
&gt; +- (void)webkitWillEnterFullScreen
&gt; +{
&gt; +    if (_element)
&gt; +        _element-&gt;document()-&gt;webkitWillEnterFullScreenForElement(_element.get());
&gt; +}
&gt; +
&gt; +- (void)webkitDidEnterFullScreen
&gt; +{
&gt; +    if (_element)
&gt; +        _element-&gt;document()-&gt;webkitDidEnterFullScreenForElement(_element.get());
&gt; +}
&gt; +
&gt; +- (void)webkitWillExitFullScreen
&gt; +{
&gt; +    if (_element)
&gt; +        _element-&gt;document()-&gt;webkitWillExitFullScreenForElement(_element.get());
&gt; +}
&gt; +
&gt; +- (void)webkitDidExitFullScreen
&gt; +{
&gt; +    if (_element)
&gt; +        _element-&gt;document()-&gt;webkitDidExitFullScreenForElement(_element.get());
&gt; +}
&gt; +
&gt; +@end

I&apos;m not sure I see the benefit of having this object that just turns around and calls back into the document. Why not make the WebView the UI delegate?

Also fullscreen/fullScreen inconsistency here.


&gt; +#if ENABLE(FULLSCREEN)
&gt; +- (void)setFullScreenEnabled:(BOOL)flag
&gt; +{
&gt; +    [self _setBoolValue:flag forKey:WebKitFullScreenEnabledPreferenceKey];
&gt; +}
&gt; +
&gt; +- (BOOL)fullScreenEnabled
&gt; +{
&gt; +    return [self _boolValueForKey:WebKitFullScreenEnabledPreferenceKey];
&gt; +}
&gt; +#endif

Fullscreen/fullScreen inconsistency here (and in the pref name).

&gt; Index: WebKit/mac/WebView/WebUIDelegatePrivate.h
&gt; ===================================================================
&gt;  
&gt; +#if ENABLE(FULLSCREEN)
&gt; +@protocol WebKitFullScreenListener&lt;NSObject&gt;
&gt; +- (void)webkitWillEnterFullScreen;
&gt; +- (void)webkitDidEnterFullScreen;
&gt; +- (void)webkitWillExitFullScreen;
&gt; +- (void)webkitDidExitFullScreen;
&gt; +@end

Fullscreen/fullScreen inconsistency.

&gt; +#if ENABLE(FULLSCREEN)
&gt; +- (BOOL)webView:(WebView *)sender supportsFullscreenForElement:(DOMElement *)element;
&gt; +- (void)webView:(WebView *)sender enterFullscreenForElement:(DOMElement *)element;
&gt; +- (void)webView:(WebView *)sender exitFullscreenForElement:(DOMElement *)element;
&gt; +#endif

Fullscreen/fullScreen inconsistency.

&gt;  @end
&gt; Index: WebKit/mac/WebView/WebView.mm
&gt; ===================================================================
&gt; --- WebKit/mac/WebView/WebView.mm	(revision 64185)
&gt; +++ WebKit/mac/WebView/WebView.mm	(working copy)
&gt; @@ -1434,6 +1434,9 @@ - (void)_preferencesChangedNotification:
&gt;      settings-&gt;setHTML5ParserEnabled([preferences html5ParserEnabled]);
&gt;      settings-&gt;setHTML5TreeBuilderEnabled_DO_NOT_USE([preferences html5TreeBuilderEnabled]);
&gt;      settings-&gt;setPaginateDuringLayoutEnabled([preferences paginateDuringLayoutEnabled]);
&gt; +#if ENABLE(FULLSCREEN)
&gt; +    settings-&gt;setFullScreenEnabled([preferences fullScreenEnabled]);
&gt; +#endif
&gt;      settings-&gt;setMemoryInfoEnabled([preferences memoryInfoEnabled]);
&gt;  }

Fullscreen/fullScreen inconsistency.

r- for breaking the existing video fullscreen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260849</commentid>
    <comment_count>51</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-05 14:19:56 -0700</bug_when>
    <thetext>Attachment 63627 did not build on qt:
Build output: http://queues.webkit.org/results/3559953</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260853</commentid>
    <comment_count>52</comment_count>
      <attachid>63477</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:22:08 -0700</bug_when>
    <thetext>Comment on attachment 63477
FullScreen-LayoutTests

&gt; Index: LayoutTests/ChangeLog
&gt; ===================================================================

&gt; +        * fullscreen: Added.
&gt; +        * fullscreen/full-screen-api-expected.txt: Added.
&gt; +        * fullscreen/full-screen-api.html: Added.
&gt; +        * fullscreen/full-screen-css-expected.txt: Added.
&gt; +        * fullscreen/full-screen-css.html: Added.
&gt; +        * fullscreen/full-screen-request-expected.txt: Added.
&gt; +        * fullscreen/full-screen-request.html: Added.
&gt; +        * fullscreen/full-screen-test.js: Added.
&gt; +        (disableFullTestDetailsPrinting):
&gt; +        (logConsole):
&gt; +        (testAndEnd):
&gt; +        (test):
&gt; +        (testExpected):
&gt; +        (reportExpected):
&gt; +        (runSilently):
&gt; +        (run):
&gt; +        (waitForEventAndEnd):
&gt; +        (waitForEvent._eventCallback):
&gt; +        (waitForEvent):
&gt; +        (waitForEventTestAndEnd):
&gt; +        (waitForEventAndFail):
&gt; +        (waitForEventAndTest._eventCallback):
&gt; +        (waitForEventAndTest):
&gt; +        (testException):
&gt; +        (endTest):
&gt; +        (endTestLater):
&gt; +        (failTestIn):
&gt; +        (failTest):
&gt; +        (logResult):
&gt; +        (consoleWrite):
&gt; +        (relativeURL):
&gt; +        (isInTimeRanges):

You can remove the method listing from the Changelog for new files.

&gt; Index: LayoutTests/fullscreen/full-screen-css-expected.txt
&gt; ===================================================================
&gt; --- LayoutTests/fullscreen/full-screen-css-expected.txt	(revision 0)
&gt; +++ LayoutTests/fullscreen/full-screen-css-expected.txt	(revision 0)
&gt; @@ -0,0 +1,13 @@
&gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(0, 255, 0)&apos;) OK
&gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(255, 0, 0)&apos;) OK
&gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;color&apos;) != &apos;rgb(0, 0, 255)&apos;) OK
&gt; +EVENT(webkitfullscreenchange)
&gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(0, 255, 0)&apos;) OK
&gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(255, 0, 0)&apos;) OK
&gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;color&apos;) == &apos;rgb(0, 0, 255)&apos;) OK
&gt; +EVENT(webkitfullscreenchange)
&gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(0, 255, 0)&apos;) OK
&gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(255, 0, 0)&apos;), OBSERVED &apos;rgb(255, 0, 0)&apos; FAIL

You have a FAIL in the results here.

&gt; Index: LayoutTests/fullscreen/full-screen-css.html
&gt; ===================================================================

&gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;

Please quote the src attribute.

&gt; Index: LayoutTests/fullscreen/full-screen-remove-ancestor.html
&gt; ===================================================================
&gt; --- LayoutTests/fullscreen/full-screen-remove-ancestor.html	(revision 0)
&gt; +++ LayoutTests/fullscreen/full-screen-remove-ancestor.html	(revision 0)
&gt; @@ -0,0 +1,30 @@
&gt; +&lt;body&gt;
&gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;
&gt; +&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&gt; +&lt;script&gt;
&gt; +    var callback;
&gt; +    var fullscreenChanged = function(event)
&gt; +    {
&gt; +        if (callback)
&gt; +            callback(event)
&gt; +    };
&gt; +    waitForEvent(document, &apos;webkitfullscreenchange&apos;, fullscreenChanged);
&gt; +
&gt; +    var span = document.getElementsByTagName(&apos;span&apos;)[0];
&gt; +    var div = span.parentNode;
&gt; +
&gt; +    var spanIsFullScreen = function(event) {
&gt; +        callback = documentIsFullScreen;
&gt; +        testExpected(&quot;document.webkitCurrentFullScreenElement&quot;, span);
&gt; +        document.body.removeChild(div);
&gt; +    };

spanIsFullScreen is a confusing name for the variable; maybe
spanEnteredFullScreen.

I don&apos;t see anything actually being tested.Shouldn&apos;t you test that you came out
of fullscreen?

&gt; Index: LayoutTests/fullscreen/full-screen-remove.html
&gt; ===================================================================

&gt; +&lt;body&gt;
&gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;
&gt; +&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&gt; +&lt;script&gt;
&gt; +    var callback;
&gt; +    var fullscreenChanged = function(event)
&gt; +    {
&gt; +        if (callback)
&gt; +            callback(event)
&gt; +    };
&gt; +    waitForEvent(document, &apos;webkitfullscreenchange&apos;, fullscreenChanged);
&gt; +    
&gt; +    var span = document.getElementsByTagName(&apos;span&apos;)[0];
&gt; +    
&gt; +    var spanIsFullScreen = function(event) {
&gt; +        callback = documentIsFullScreen;
&gt; +        testExpected(&quot;document.webkitCurrentFullScreenElement&quot;, span);
&gt; +        span.parentNode.removeChild(span);
&gt; +    };

Ditto.

&gt; Index: LayoutTests/fullscreen/full-screen-twice.html
&gt; ===================================================================

&gt; +&lt;body&gt;
&gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;
&gt; +&lt;span&gt;&lt;/span&gt;
&gt; +&lt;script&gt;
&gt; +    var callback;
&gt; +    var fullscreenChanged = function(event)
&gt; +    {
&gt; +        if (callback)
&gt; +            callback(event)
&gt; +    };
&gt; +    waitForEvent(document, &apos;webkitfullscreenchange&apos;, fullscreenChanged);
&gt; +    
&gt; +    var span = document.getElementsByTagName(&apos;span&apos;)[0];
&gt; +
&gt; +    var spanIsFullScreen = function() {
&gt; +        testExpected(&quot;document.webkitCurrentFullScreenElement&quot;, span);
&gt; +        callback = documentIsFullScreen;
&gt; +        document.webkitRequestFullScreen();
&gt; +    };

Same comments about it being unclear what is being tested.

If you run all the LayoutTests, you&apos;ll fine some others whose results dump all properties of the Document object. You&apos;ll have to supply new results for these tests, for platforms which enable the FULLSCREEN_API #ifdef.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260858</commentid>
    <comment_count>53</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-05 14:27:26 -0700</bug_when>
    <thetext>Attachment 63627 did not build on mac:
Build output: http://queues.webkit.org/results/3583897</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260859</commentid>
    <comment_count>54</comment_count>
      <attachid>63624</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:27:53 -0700</bug_when>
    <thetext>Comment on attachment 63624
FullScreen-WebCore-Config

&gt; Index: JavaScriptCore/wtf/Platform.h
&gt; ===================================================================
&gt; --- JavaScriptCore/wtf/Platform.h	(revision 64653)
&gt; +++ JavaScriptCore/wtf/Platform.h	(working copy)
&gt; @@ -594,6 +594,7 @@
&gt;  #endif
&gt;  #define HAVE_READLINE 1
&gt;  #define HAVE_RUNLOOP_TIMER 1
&gt; +#define ENABLE_FULLSCREEN_API 1

I think this should go along with the things like:

#if !defined(ENABLE_DRAG_SUPPORT)
#define ENABLE_DRAG_SUPPORT 1
#endif

and default to 0. It will get enabled via the xconfig files on platforms that want it.

The rest of this patch doesn&apos;t stand alone, because it&apos;s adding new files to the projects without supplying the new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260861</commentid>
    <comment_count>55</comment_count>
      <attachid>63623</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:28:32 -0700</bug_when>
    <thetext>Comment on attachment 63623
FullScreen-WebCore-ChangeLogs

It doesn&apos;t really make sense to break out the changelogs into their own patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260865</commentid>
    <comment_count>56</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-05 14:30:28 -0700</bug_when>
    <thetext>Attachment 63627 did not build on chromium:
Build output: http://queues.webkit.org/results/3643341</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260866</commentid>
    <comment_count>57</comment_count>
      <attachid>63626</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:31:00 -0700</bug_when>
    <thetext>Comment on attachment 63626
FullScreen-WebCore-IDL


&gt; Index: WebCore/dom/WebKitFullScreenChangeEvent.idl
&gt; ===================================================================

&gt; +module events {
&gt; +
&gt; +    interface [
&gt; +        Conditional=WORKERS&amp;FULLSCREEN_API,

Why WORKERS?

&gt; +        NoStaticTables
&gt; +    ] WebKitFullScreenChangeEvent : Event {
&gt; +
&gt; +        void initWebKitFullScreenChangeEvent(in DOMString eventTypeArg, 
&gt; +                                      in boolean canBubbleArg, 
&gt; +                                      in boolean cancelableArg);
&gt; +    };
&gt; +
&gt; +}
&gt; Index: WebCore/html/HTMLElement.idl
&gt; ===================================================================
&gt; --- WebCore/html/HTMLElement.idl	(revision 64653)
&gt; +++ WebCore/html/HTMLElement.idl	(working copy)
&gt; @@ -64,6 +64,11 @@ module html {
&gt;  #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
&gt;          readonly attribute DOMString titleDisplayString;
&gt;  #endif
&gt; +
&gt; +#if defined(ENABLE_FULLSCREEN_API) &amp;&amp; ENABLE_FULLSCREEN_API
&gt; +        void webkitRequestFullScreen();
&gt; +        void webkitRequestFullScreenWithKeys();
&gt; +#endif

Why do you need these here? HTMLElement derives from Element.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260869</commentid>
    <comment_count>58</comment_count>
      <attachid>63627</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:33:01 -0700</bug_when>
    <thetext>Comment on attachment 63627
FullScreen-WebCore-MediaElements

I think we have to figure out how to get the generic fullscreen code in without breaking video element fullscreen, so this patch isn&apos;t really suitable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260878</commentid>
    <comment_count>59</comment_count>
      <attachid>63628</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-08-05 14:47:02 -0700</bug_when>
    <thetext>Comment on attachment 63628
FullScreen-WebCore



&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    ASSERT(n);
&gt; +    if (n-&gt;contains(m_fullScreenElement.get())) {
&gt; +        ASSERT(n != documentElement());
&gt; +        m_fullScreenElement = documentElement();
&gt; +        m_fullScreenElement-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +    }
&gt; +#endif

Who&apos;s actually telling the UA that it&apos;s leaving fullscreen in this case?

Also, what happens when an &lt;iframe&gt;, &lt;object&gt;, or &lt;embed&gt; is fullscreen, then one of its parent nodes is removed? I think this deserves a testcase.

&gt; +void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)
&gt; +{
&gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;
&gt; +
&gt; +    if (!element)
&gt; +        element = documentElement();
&gt; +    
&gt; +    if (!page()-&gt;chrome()-&gt;client()-&gt;supportsFullscreenForElement(element))
&gt; +        return;
&gt; +    
&gt; +    m_fullScreenElement = 0;
&gt; +    m_areKeysEnabledInFullScreen = keysEnabled;
&gt; +    page()-&gt;chrome()-&gt;client()-&gt;enterFullscreenForElement(element);
&gt; +}

Should this method bail earlier if the doc is already fullscreen?

&gt; +void Document::webkitWillEnterFullScreenForElement(Element* element)
&gt; +{
&gt; +    ASSERT(page() &amp;&amp; page()-&gt;settings()-&gt;fullScreenEnabled());
&gt; +
&gt; +    m_fullScreenElement = element;
&gt; +    m_isFullScreen = true;
&gt; +    documentElement()-&gt;setNeedsStyleRecalc(FullStyleChange);

I&apos;d like to see a comment saying that Document::isFullscreen() applies some pseudoclasses,
so we need to do the style recalc.

&gt; +    if (m_fullScreenElement)

Hadn&apos;t we better always have a m_fullScreenElement here, so maybe ASSERT()?

&gt; Index: WebCore/html/HTMLIFrameElement.cpp
&gt; ===================================================================
&gt; --- WebCore/html/HTMLIFrameElement.cpp	(revision 64653)
&gt; +++ WebCore/html/HTMLIFrameElement.cpp	(working copy)
&gt; @@ -38,6 +38,9 @@ using namespace HTMLNames;
&gt;  
&gt;  inline HTMLIFrameElement::HTMLIFrameElement(const QualifiedName&amp; tagName, Document* document)
&gt;      : HTMLFrameElementBase(tagName, document)
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    , m_allowsFullScreen(false)
&gt; +#endif
&gt;  {
&gt;      ASSERT(hasTagName(iframeTag));
&gt;  }
&gt; @@ -132,6 +135,10 @@ void HTMLIFrameElement::parseMappedAttri
&gt;      else if (attr-&gt;name() == sandboxAttr)
&gt;          setSandboxFlags(parseSandboxAttribute(attr));
&gt;  #endif
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    if (attr-&gt;name() == webkitallowfullscreenAttr)
&gt; +        m_allowsFullScreen = true;
&gt; +#endif
&gt;      else
&gt;          HTMLFrameElementBase::parseMappedAttribute(attr);

I think we should postpone the frame/object/emebed-related stuff for a later patch.
There are lots of complexities we need to figure out, and make tests for.

I think this is generally OK, but I&apos;d like to see more consideration of actions that should force us to leave fullscreen.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260889</commentid>
    <comment_count>60</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-05 15:02:58 -0700</bug_when>
    <thetext>Attachment 63628 did not build on chromium:
Build output: http://queues.webkit.org/results/3590938</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260911</commentid>
    <comment_count>61</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 15:45:55 -0700</bug_when>
    <thetext>(In reply to comment #50)
&gt; (From update of attachment 62785 [details])
&gt; &gt; Index: WebKit/mac/Configurations/FeatureDefines.xcconfig
&gt; &gt; ===================================================================
&gt; 
&gt; You should probably land the xconfig changes for all projects at the same time.

Will Do.

&gt; &gt; Index: WebKit/mac/WebCoreSupport/WebChromeClient.mm
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; -#if ENABLE(VIDEO)
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; 
&gt; These (and other) changes regress apps that get video fullscreen now, but won&apos;t have generic fullscreen enabled unless they set the preference.
&gt; 
&gt; I think we should keep video fullscreen the way it works currently, and only switch over to generic fullscreen when we&apos;re ready to do so with zero regressions.

I&apos;m going to update this patch to do precisely that.  Unless a client of WebKit specifically requests the new full screen API, they&apos;ll get the old behavior.

&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +@implementation WebKitFullScreenListener
&gt; &gt; +- (id)initWithElement:(Element*)element
&gt; &gt; +{
&gt; &gt; +    if (!(self = [super init]))
&gt; &gt; +        return nil;
&gt; &gt; +    
&gt; &gt; +    _element = element;
&gt; &gt; +    return self;
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (void)webkitWillEnterFullScreen
&gt; &gt; +{
&gt; &gt; +    if (_element)
&gt; &gt; +        _element-&gt;document()-&gt;webkitWillEnterFullScreenForElement(_element.get());
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (void)webkitDidEnterFullScreen
&gt; &gt; +{
&gt; &gt; +    if (_element)
&gt; &gt; +        _element-&gt;document()-&gt;webkitDidEnterFullScreenForElement(_element.get());
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (void)webkitWillExitFullScreen
&gt; &gt; +{
&gt; &gt; +    if (_element)
&gt; &gt; +        _element-&gt;document()-&gt;webkitWillExitFullScreenForElement(_element.get());
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (void)webkitDidExitFullScreen
&gt; &gt; +{
&gt; &gt; +    if (_element)
&gt; &gt; +        _element-&gt;document()-&gt;webkitDidExitFullScreenForElement(_element.get());
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +@end
&gt; 
&gt; I&apos;m not sure I see the benefit of having this object that just turns around and calls back into the document. Why not make the WebView the UI delegate?

The geolocation feature already does something very similar with a listener object.  Since it&apos;s seen by clients as a protocol, there&apos;s nothing keeping the WebView from passing itself instead of a separate listener object.

But, since there&apos;s no specific need for a WebView to be involved; a lightweight object like the WebKitFullScreenListener is all that&apos;s needed.

&gt; Also fullscreen/fullScreen inconsistency here.

Whoops!  Definitely will fix this.

&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +- (void)setFullScreenEnabled:(BOOL)flag
&gt; &gt; +{
&gt; &gt; +    [self _setBoolValue:flag forKey:WebKitFullScreenEnabledPreferenceKey];
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +- (BOOL)fullScreenEnabled
&gt; &gt; +{
&gt; &gt; +    return [self _boolValueForKey:WebKitFullScreenEnabledPreferenceKey];
&gt; &gt; +}
&gt; &gt; +#endif
&gt; 
&gt; Fullscreen/fullScreen inconsistency here (and in the pref name).

OK.

&gt; &gt; Index: WebKit/mac/WebView/WebUIDelegatePrivate.h
&gt; &gt; ===================================================================
&gt; &gt;  
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +@protocol WebKitFullScreenListener&lt;NSObject&gt;
&gt; &gt; +- (void)webkitWillEnterFullScreen;
&gt; &gt; +- (void)webkitDidEnterFullScreen;
&gt; &gt; +- (void)webkitWillExitFullScreen;
&gt; &gt; +- (void)webkitDidExitFullScreen;
&gt; &gt; +@end
&gt; 
&gt; Fullscreen/fullScreen inconsistency.

OK.

&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +- (BOOL)webView:(WebView *)sender supportsFullscreenForElement:(DOMElement *)element;
&gt; &gt; +- (void)webView:(WebView *)sender enterFullscreenForElement:(DOMElement *)element;
&gt; &gt; +- (void)webView:(WebView *)sender exitFullscreenForElement:(DOMElement *)element;
&gt; &gt; +#endif
&gt; 
&gt; Fullscreen/fullScreen inconsistency.

OK.

&gt; &gt;  @end
&gt; &gt; Index: WebKit/mac/WebView/WebView.mm
&gt; &gt; ===================================================================
&gt; &gt; --- WebKit/mac/WebView/WebView.mm	(revision 64185)
&gt; &gt; +++ WebKit/mac/WebView/WebView.mm	(working copy)
&gt; &gt; @@ -1434,6 +1434,9 @@ - (void)_preferencesChangedNotification:
&gt; &gt;      settings-&gt;setHTML5ParserEnabled([preferences html5ParserEnabled]);
&gt; &gt;      settings-&gt;setHTML5TreeBuilderEnabled_DO_NOT_USE([preferences html5TreeBuilderEnabled]);
&gt; &gt;      settings-&gt;setPaginateDuringLayoutEnabled([preferences paginateDuringLayoutEnabled]);
&gt; &gt; +#if ENABLE(FULLSCREEN)
&gt; &gt; +    settings-&gt;setFullScreenEnabled([preferences fullScreenEnabled]);
&gt; &gt; +#endif
&gt; &gt;      settings-&gt;setMemoryInfoEnabled([preferences memoryInfoEnabled]);
&gt; &gt;  }
&gt; 
&gt; Fullscreen/fullScreen inconsistency.

OK.

&gt; r- for breaking the existing video fullscreen.

New patch is coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260913</commentid>
    <comment_count>62</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 15:50:34 -0700</bug_when>
    <thetext>(In reply to comment #52)
&gt; (From update of attachment 63477 [details])
&gt; &gt; Index: LayoutTests/ChangeLog
...
&gt; You can remove the method listing from the Changelog for new files.

OK.

&gt; &gt; Index: LayoutTests/fullscreen/full-screen-css-expected.txt
&gt; &gt; ===================================================================
&gt; &gt; --- LayoutTests/fullscreen/full-screen-css-expected.txt	(revision 0)
&gt; &gt; +++ LayoutTests/fullscreen/full-screen-css-expected.txt	(revision 0)
&gt; &gt; @@ -0,0 +1,13 @@
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(0, 255, 0)&apos;) OK
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(255, 0, 0)&apos;) OK
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;color&apos;) != &apos;rgb(0, 0, 255)&apos;) OK
&gt; &gt; +EVENT(webkitfullscreenchange)
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(0, 255, 0)&apos;) OK
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(255, 0, 0)&apos;) OK
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;color&apos;) == &apos;rgb(0, 0, 255)&apos;) OK
&gt; &gt; +EVENT(webkitfullscreenchange)
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(span, null).getPropertyValue(&apos;background-color&apos;) == &apos;rgb(0, 255, 0)&apos;) OK
&gt; &gt; +EXPECTED (document.defaultView.getComputedStyle(document.documentElement, null).getPropertyValue(&apos;background-color&apos;) != &apos;rgb(255, 0, 0)&apos;), OBSERVED &apos;rgb(255, 0, 0)&apos; FAIL
&gt; 
&gt; You have a FAIL in the results here.

That&apos;s definitely not right. It looks like it should be a pass; both are rgb(255, 0, 0).  One is probably a string and the other an object or something.  I&apos;ll figure out why that test isn&apos;t passing.

&gt; &gt; Index: LayoutTests/fullscreen/full-screen-css.html
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;
&gt; 
&gt; Please quote the src attribute.

OK.

&gt; &gt; Index: LayoutTests/fullscreen/full-screen-remove-ancestor.html
&gt; &gt; ===================================================================
&gt; &gt; --- LayoutTests/fullscreen/full-screen-remove-ancestor.html	(revision 0)
&gt; &gt; +++ LayoutTests/fullscreen/full-screen-remove-ancestor.html	(revision 0)
&gt; &gt; @@ -0,0 +1,30 @@
&gt; &gt; +&lt;body&gt;
&gt; &gt; +&lt;script src=full-screen-test.js&gt;&lt;/script&gt;
&gt; &gt; +&lt;div&gt;&lt;span&gt;&lt;/span&gt;&lt;/div&gt;
&gt; &gt; +&lt;script&gt;
&gt; &gt; +    var callback;
&gt; &gt; +    var fullscreenChanged = function(event)
&gt; &gt; +    {
&gt; &gt; +        if (callback)
&gt; &gt; +            callback(event)
&gt; &gt; +    };
&gt; &gt; +    waitForEvent(document, &apos;webkitfullscreenchange&apos;, fullscreenChanged);
&gt; &gt; +
&gt; &gt; +    var span = document.getElementsByTagName(&apos;span&apos;)[0];
&gt; &gt; +    var div = span.parentNode;
&gt; &gt; +
&gt; &gt; +    var spanIsFullScreen = function(event) {
&gt; &gt; +        callback = documentIsFullScreen;
&gt; &gt; +        testExpected(&quot;document.webkitCurrentFullScreenElement&quot;, span);
&gt; &gt; +        document.body.removeChild(div);
&gt; &gt; +    };
&gt; 
&gt; spanIsFullScreen is a confusing name for the variable; maybe
&gt; spanEnteredFullScreen.

OK.

&gt; I don&apos;t see anything actually being tested.Shouldn&apos;t you test that you came out
&gt; of fullscreen?

The line: &quot;callback = documentIsFullScreen&quot; changes which function is called when the &apos;webkitfullscreenchange&apos; event is caught.  In this case, if that function isn&apos;t called in response to document.body.removeChild(div), the test will fail.

&gt; If you run all the LayoutTests, you&apos;ll fine some others whose results dump all properties of the Document object. You&apos;ll have to supply new results for these tests, for platforms which enable the FULLSCREEN_API #ifdef.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260915</commentid>
    <comment_count>63</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 15:54:40 -0700</bug_when>
    <thetext>(In reply to comment #54)
&gt; (From update of attachment 63624 [details])
&gt; &gt; Index: JavaScriptCore/wtf/Platform.h
&gt; &gt; ===================================================================
&gt; &gt; --- JavaScriptCore/wtf/Platform.h	(revision 64653)
&gt; &gt; +++ JavaScriptCore/wtf/Platform.h	(working copy)
&gt; &gt; @@ -594,6 +594,7 @@
&gt; &gt;  #endif
&gt; &gt;  #define HAVE_READLINE 1
&gt; &gt;  #define HAVE_RUNLOOP_TIMER 1
&gt; &gt; +#define ENABLE_FULLSCREEN_API 1
&gt; 
&gt; I think this should go along with the things like:
&gt; 
&gt; #if !defined(ENABLE_DRAG_SUPPORT)
&gt; #define ENABLE_DRAG_SUPPORT 1
&gt; #endif
&gt; 
&gt; and default to 0. It will get enabled via the xconfig files on platforms that want it.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>260919</commentid>
    <comment_count>64</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-05 15:58:43 -0700</bug_when>
    <thetext>(In reply to comment #57)
&gt; (From update of attachment 63626 [details])
&gt; 
&gt; &gt; Index: WebCore/dom/WebKitFullScreenChangeEvent.idl
&gt; &gt; ===================================================================
&gt; 
&gt; &gt; +module events {
&gt; &gt; +
&gt; &gt; +    interface [
&gt; &gt; +        Conditional=WORKERS&amp;FULLSCREEN_API,
&gt; 
&gt; Why WORKERS?

No good reason.  Removed.

&gt; &gt; Index: WebCore/html/HTMLElement.idl
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/html/HTMLElement.idl	(revision 64653)
&gt; &gt; +++ WebCore/html/HTMLElement.idl	(working copy)
&gt; &gt; @@ -64,6 +64,11 @@ module html {
&gt; &gt;  #if defined(LANGUAGE_OBJECTIVE_C) &amp;&amp; LANGUAGE_OBJECTIVE_C
&gt; &gt;          readonly attribute DOMString titleDisplayString;
&gt; &gt;  #endif
&gt; &gt; +
&gt; &gt; +#if defined(ENABLE_FULLSCREEN_API) &amp;&amp; ENABLE_FULLSCREEN_API
&gt; &gt; +        void webkitRequestFullScreen();
&gt; &gt; +        void webkitRequestFullScreenWithKeys();
&gt; &gt; +#endif
&gt; 
&gt; Why do you need these here? HTMLElement derives from Element.

My first pass at the API put these functions here.  It appears I never removed them, which I&apos;ll do now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262344</commentid>
    <comment_count>65</comment_count>
      <attachid>63936</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:27:57 -0700</bug_when>
    <thetext>Created attachment 63936
Part 1: FullScreen-ChangeLogs

Changed the layout of the patches for this bug.  I&apos;ve separated them out so that each one will build independently (if applied incrementally).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262345</commentid>
    <comment_count>66</comment_count>
      <attachid>63937</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:28:39 -0700</bug_when>
    <thetext>Created attachment 63937
Part 2: FullScreen-WebCore-NewFiles</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262346</commentid>
    <comment_count>67</comment_count>
      <attachid>63938</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:29:11 -0700</bug_when>
    <thetext>Created attachment 63938
Part 3: FullScreen-WebCore-NewAPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262348</commentid>
    <comment_count>68</comment_count>
      <attachid>63939</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:29:43 -0700</bug_when>
    <thetext>Created attachment 63939
Part 4: FullScreen-WebCore-CSS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262350</commentid>
    <comment_count>69</comment_count>
      <attachid>63941</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:31:12 -0700</bug_when>
    <thetext>Created attachment 63941
Part 5: FullScreen-WebCore-MediaElements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262352</commentid>
    <comment_count>70</comment_count>
      <attachid>63943</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 15:31:58 -0700</bug_when>
    <thetext>Created attachment 63943
Part 6: FullScreen-WebKit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262357</commentid>
    <comment_count>71</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-09 15:36:28 -0700</bug_when>
    <thetext>Attachment 63938 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:167:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262393</commentid>
    <comment_count>72</comment_count>
      <attachid>63949</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 16:27:18 -0700</bug_when>
    <thetext>Created attachment 63949
Part 7: FullScreen-LayoutTests

These layout tests were previously review+, but they&apos;ve been moved into LayoutTests/platform/mac/fullscreen.  Also, other tests which count the number of properties on an HTML element have been modified to remove the specific count.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262418</commentid>
    <comment_count>73</comment_count>
      <attachid>63955</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-09 17:04:44 -0700</bug_when>
    <thetext>Created attachment 63955
Part 3: FullScreen-WebCore-NewAPI</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262420</commentid>
    <comment_count>74</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-09 17:06:26 -0700</bug_when>
    <thetext>Attachment 63955 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:167:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262593</commentid>
    <comment_count>75</comment_count>
      <attachid>63477</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 03:16:33 -0700</bug_when>
    <thetext>Comment on attachment 63477
FullScreen-LayoutTests

Cleared Simon Fraser&apos;s review+ from obsolete attachment 63477 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>262594</commentid>
    <comment_count>76</comment_count>
      <attachid>63628</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-10 03:16:41 -0700</bug_when>
    <thetext>Comment on attachment 63628
FullScreen-WebCore

Cleared Simon Fraser&apos;s review+ from obsolete attachment 63628 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264671</commentid>
    <comment_count>77</comment_count>
      <attachid>63936</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-14 07:44:57 -0700</bug_when>
    <thetext>Comment on attachment 63936
Part 1: FullScreen-ChangeLogs

It is a bit strange for me that there is a patch just with the ChangeLogs. Is this because you have to land all the other patches together?

If not, please add one ChangeLog for each of your other patches so that they can be landed part per part.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264723</commentid>
    <comment_count>78</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-14 12:24:24 -0700</bug_when>
    <thetext>(In reply to comment #77)
&gt; (From update of attachment 63936 [details])
&gt; It is a bit strange for me that there is a patch just with the ChangeLogs. Is this because you have to land all the other patches together?

Yes, I plan on landing all these patches at once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265209</commentid>
    <comment_count>79</comment_count>
      <attachid>63937</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-16 13:18:18 -0700</bug_when>
    <thetext>Comment on attachment 63937
Part 2: FullScreen-WebCore-NewFiles

You shouldn&apos;t need to define an entirely new event type since it doesn&apos;t have fields not in Event. Just define the event name(s) and pass a name to Event::create().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265223</commentid>
    <comment_count>80</comment_count>
      <attachid>63941</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-16 13:53:57 -0700</bug_when>
    <thetext>Comment on attachment 63941
Part 5: FullScreen-WebCore-MediaElements

&gt; +        if (document()-&gt;page()-&gt;settings()-&gt;fullScreenEnabled()) {

Document has a settings() method so you don&apos;t have to go through page. settings() can return NULL if there isn&apos;t a frame.

r=me with these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265248</commentid>
    <comment_count>81</comment_count>
      <attachid>63955</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-16 14:52:42 -0700</bug_when>
    <thetext>Comment on attachment 63955
Part 3: FullScreen-WebCore-NewAPI

&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +#include &quot;WebKitFullScreenChangeEvent.h&quot;
&gt; +#endif

Not necessary.


&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    ASSERT(n);
&gt; +    if (n-&gt;contains(m_fullScreenElement.get())) {
&gt; +        ASSERT(n != documentElement());
&gt; +        m_fullScreenElement = documentElement();
&gt; +        m_fullScreenElement-&gt;setNeedsStyleRecalc();
&gt; +        m_fullScreenElement-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +    }

It took me a minute to figure out why this is necessary, so a comment would be nice.

&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    else if (eventType == &quot;WebKitFullScreenChange&quot;)
&gt; +        event = WebKitFullScreenChangeEvent::create();
&gt; +#endif

Not necessary.

&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    else if (eventType == eventNames().webkitfullscreenchangeEvent)
&gt; +        addListenerType(FULLSCREENCHANGE_LISTENER);
&gt; +#endif

Ditto.

+void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)

Shouldn&apos;t this take the flags word so we don&apos;t have to create a new method once there are new flags?

+void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)

This should be &quot;webkitRequestFullScreenForElementWithFlags&quot;.


&gt; +void Document::webkitWillEnterFullScreenForElement(Element* element)
&gt; +{
&gt; +    ASSERT(page() &amp;&amp; page()-&gt;settings()-&gt;fullScreenEnabled());
&gt; +
&gt; +    m_fullScreenElement = element;
&gt; +    m_isFullScreen = true;
&gt; +    documentElement()-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; +    if (m_fullScreenElement)
&gt; +        m_fullScreenElement-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; +    updateStyleIfNeeded();
&gt; +    
&gt; +    if (m_fullScreenElement)
&gt; +        m_fullScreenElement-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +    else 
&gt; +        documentElement()-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +}

It shouldn&apos;t be legal to pass a NULL element, I would ASSERT and remove support for it.


&gt; +void Document::webkitDidExitFullScreenForElement(Element* element)
&gt; +{
&gt; +    m_isFullScreen = false;
&gt; +    m_areKeysEnabledInFullScreen = false;
&gt; +    // m_fullScreenElement has already been cleared; recalc the style of 
&gt; +    // the passed in element instead.
&gt; +    
&gt; +    if (element)
&gt; +        element-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; +    documentElement()-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; +    updateStyleIfNeeded();
&gt; +    
&gt; +    if (element)
&gt; +        element-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +    else
&gt; +        documentElement()-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; +}

Ditto.

&gt; +        FULLSCREENCHANGE_LISTENER            = 0x8000,

Not necessary once you get rid of the custom event type.


&gt; +void Element::webkitRequestFullScreen(unsigned short flags)
&gt; +{
&gt; +    document()-&gt;webkitRequestFullScreenForElement(this, flags == ALLOW_KEYBOARD_INPUT);
&gt; +}

Should just pass the flags through to webkitRequestFullScreenForElement



&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +bool Event::isWebKitFullScreenChangeEvent() const
&gt; +{
&gt; +    return false;
&gt; +}

Not needed.

&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +        virtual bool isWebKitFullScreenChangeEvent() const;
&gt; +#endif

Ditto.

r= for now since a fair amount of cleanup is still needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265334</commentid>
    <comment_count>82</comment_count>
      <attachid>64545</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-16 18:25:10 -0700</bug_when>
    <thetext>Created attachment 64545
Part 1-3: FullScreen-WebCore-NewAPI

This patch makes obsolete and integrates patches Part 1, 2, &amp; 3 above.  WebKitFullScreenChangeEvent has been removed, and Eric&apos;s reviews of Parts 2 &amp; 3 have been addressed:


(In reply to comment #81)
&gt; (From update of attachment 63955 [details])
&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +#include &quot;WebKitFullScreenChangeEvent.h&quot;
&gt; &gt; +#endif
&gt; 
&gt; Not necessary.

Removed.

&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +    ASSERT(n);
&gt; &gt; +    if (n-&gt;contains(m_fullScreenElement.get())) {
&gt; &gt; +        ASSERT(n != documentElement());
&gt; &gt; +        m_fullScreenElement = documentElement();
&gt; &gt; +        m_fullScreenElement-&gt;setNeedsStyleRecalc();
&gt; &gt; +        m_fullScreenElement-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; &gt; +    }
&gt; 
&gt; It took me a minute to figure out why this is necessary, so a comment would be nice.

Added a comment here.

&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +    else if (eventType == &quot;WebKitFullScreenChange&quot;)
&gt; &gt; +        event = WebKitFullScreenChangeEvent::create();
&gt; &gt; +#endif
&gt; 
&gt; Not necessary.

Removed.

&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +    else if (eventType == eventNames().webkitfullscreenchangeEvent)
&gt; &gt; +        addListenerType(FULLSCREENCHANGE_LISTENER);
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Removed.

&gt; +void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)
&gt; 
&gt; Shouldn&apos;t this take the flags word so we don&apos;t have to create a new method once there are new flags?
&gt; 
&gt; +void Document::webkitRequestFullScreenForElementWithKeys(Element* element, bool keysEnabled)
&gt; 
&gt; This should be &quot;webkitRequestFullScreenForElementWithFlags&quot;.

Actually, in a previous review, it was decided drop the &quot;WithFlags/WithKeys&quot; part entirely.  Regardless, the Document::webkitRequestFullScreenForElement() function now takes a flags parameter.

&gt; &gt; +void Document::webkitWillEnterFullScreenForElement(Element* element)
&gt; &gt; +{
&gt; &gt; +    ASSERT(page() &amp;&amp; page()-&gt;settings()-&gt;fullScreenEnabled());
&gt; &gt; +
&gt; &gt; +    m_fullScreenElement = element;
&gt; &gt; +    m_isFullScreen = true;
&gt; &gt; +    documentElement()-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; &gt; +    if (m_fullScreenElement)
&gt; &gt; +        m_fullScreenElement-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; &gt; +    updateStyleIfNeeded();
&gt; &gt; +    
&gt; &gt; +    if (m_fullScreenElement)
&gt; &gt; +        m_fullScreenElement-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; &gt; +    else 
&gt; &gt; +        documentElement()-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; &gt; +}
&gt; 
&gt; It shouldn&apos;t be legal to pass a NULL element, I would ASSERT and remove support for it.

Done.

&gt; &gt; +void Document::webkitDidExitFullScreenForElement(Element* element)
&gt; &gt; +{
&gt; &gt; +    m_isFullScreen = false;
&gt; &gt; +    m_areKeysEnabledInFullScreen = false;
&gt; &gt; +    // m_fullScreenElement has already been cleared; recalc the style of 
&gt; &gt; +    // the passed in element instead.
&gt; &gt; +    
&gt; &gt; +    if (element)
&gt; &gt; +        element-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; &gt; +    documentElement()-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; &gt; +    updateStyleIfNeeded();
&gt; &gt; +    
&gt; &gt; +    if (element)
&gt; &gt; +        element-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; &gt; +    else
&gt; &gt; +        documentElement()-&gt;dispatchEvent(WebKitFullScreenChangeEvent::create());
&gt; &gt; +}
&gt; 
&gt; Ditto.

Done.

&gt; &gt; +        FULLSCREENCHANGE_LISTENER            = 0x8000,
&gt; 
&gt; Not necessary once you get rid of the custom event type.

Removed.

&gt; &gt; +void Element::webkitRequestFullScreen(unsigned short flags)
&gt; &gt; +{
&gt; &gt; +    document()-&gt;webkitRequestFullScreenForElement(this, flags == ALLOW_KEYBOARD_INPUT);
&gt; &gt; +}
&gt; 
&gt; Should just pass the flags through to webkitRequestFullScreenForElement

Done.

&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +bool Event::isWebKitFullScreenChangeEvent() const
&gt; &gt; +{
&gt; &gt; +    return false;
&gt; &gt; +}
&gt; 
&gt; Not needed.

Removed.

&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +        virtual bool isWebKitFullScreenChangeEvent() const;
&gt; &gt; +#endif
&gt; 
&gt; Ditto.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265336</commentid>
    <comment_count>83</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-16 18:28:56 -0700</bug_when>
    <thetext>Attachment 64545 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/dom/EventNames.h:167:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266955</commentid>
    <comment_count>84</comment_count>
      <attachid>63939</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-19 14:20:08 -0700</bug_when>
    <thetext>Comment on attachment 63939
Part 4: FullScreen-WebCore-CSS

&gt; @@ -553,6 +553,14 @@ static void loadFullDefaultStyle()
&gt;      String quirksRules = String(quirksUserAgentStyleSheet, sizeof(quirksUserAgentStyleSheet)) + RenderTheme::defaultTheme()-&gt;extraQuirksStyleSheet();
&gt;      CSSStyleSheet* quirksSheet = parseUASheet(quirksRules);
&gt;      defaultQuirksStyle-&gt;addRulesFromSheet(quirksSheet, screenEval());
&gt; +    
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +    // Full-screen rules.
&gt; +    String fullscreenRules = String(fullscreenUserAgentStyleSheet, sizeof(fullscreenUserAgentStyleSheet)) + RenderTheme::defaultTheme()-&gt;extraDefaultStyleSheet();
&gt; +    CSSStyleSheet* fullscreenSheet = parseUASheet(fullscreenRules);
&gt; +    defaultStyle-&gt;addRulesFromSheet(fullscreenSheet, screenEval());
&gt; +    defaultQuirksStyle-&gt;addRulesFromSheet(fullscreenSheet, screenEval());
&gt; +#endif

All of the other style sheets added for optionally compiled features are added in CSSStyleSelector::styleForElement. Is there a reason to load this in loadFullDefaultStyle instead?

&gt; +            case CSSSelector::PseudoFullScreen:
&gt; +                // While a Document is in the fullscreen state, and the document&apos;s current fullscreen 
&gt; +                // element is an element in the document, the &apos;full-screen&apos; pseudoclass applies to 
&gt; +                // that element. Also, an &lt;iframe&gt;, &lt;object&gt; or &lt;embed&gt; element whose child browsing 
&gt; +                // context&apos;s Document is in the fullscreen state has the &apos;full-screen&apos; pseudoclass applied.
&gt; +                if (!e-&gt;document()-&gt;webkitFullScreen())
&gt; +                    return false;
&gt; +                if (e != e-&gt;document()-&gt;webkitCurrentFullScreenElement())
&gt; +                    return false;

Is the &quot;... an &lt;iframe&gt;, &lt;object&gt; or &lt;embed&gt; element whose child browsing context&apos;s ...&quot; comment specifically relevant here?

r=me if you address these comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266976</commentid>
    <comment_count>85</comment_count>
      <attachid>63949</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-19 14:42:16 -0700</bug_when>
    <thetext>Comment on attachment 63949
Part 7: FullScreen-LayoutTests

You should put these tests in LayoutTests/media/fullscreen and add &quot;fullscreen/&quot; to all of the other port&apos;s skiplist files instead of putting them in platform/mac now and moving them later.

r-</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266994</commentid>
    <comment_count>86</comment_count>
      <attachid>64545</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-19 15:09:20 -0700</bug_when>
    <thetext>Comment on attachment 64545
Part 1-3: FullScreen-WebCore-NewAPI

&gt; +++ WebCore/ChangeLog	(working copy)
&gt;
&gt; +        * html/HTMLIFrameElement.h:

Looks like this is left over from a previous version.

&gt; +        * rendering/MediaControlElements.cpp:
&gt; +        (WebCore::MediaControlFullscreenButtonElement::defaultEventHandler): The full screen button now toggles full screen mode (previously, it only entered).
&gt; +        * rendering/style/RenderStyleConstants.h: Added new style constants.
Ditto.

&gt; +    
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +void Document::webkitRequestFullScreenForElement(Element* element, unsigned short flags)
&gt; +{
&gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; +        return;
&gt; +
&gt; +    if (!element)
&gt; +        element = documentElement();
&gt; +    
&gt; +    if (!page()-&gt;chrome()-&gt;client()-&gt;supportsFullScreenForElement(element))
&gt; +        return;
&gt; +    
&gt; +    m_fullScreenElement = 0;
&gt; +    m_areKeysEnabledInFullScreen = flags &amp; Element::ALLOW_KEYBOARD_INPUT;
&gt; +    page()-&gt;chrome()-&gt;client()-&gt;enterFullScreenForElement(element);

If enterFullScreenForElement fails and m_fullScreenElement is non-NULL, we won&apos;t ever fire a webkitfullscreenchange event. Is this worth worrying about?

&gt; +void Document::webkitDidExitFullScreenForElement(Element* element)
&gt; +{
&gt; +    ASSERT(element);
&gt; +    m_isFullScreen = false;
&gt; +    m_areKeysEnabledInFullScreen = false;
&gt; +    // m_fullScreenElement has already been cleared; recalc the style of 
&gt; +    // the passed in element instead.
&gt; +    
&gt; +    element-&gt;setNeedsStyleRecalc(FullStyleChange);

The blank line should go above the comment instead of below it.


&gt; Index: WebCore/dom/Element.cpp
&gt; ===================================================================
&gt; --- WebCore/dom/Element.cpp	(revision 65463)
&gt; +++ WebCore/dom/Element.cpp	(working copy)
&gt; @@ -1441,7 +1441,7 @@ void Element::normalizeAttributes()
&gt;              attr-&gt;normalize();
&gt;      }
&gt;  }
&gt; -
&gt; +    
Don&apos;t need the new white space.

r=m with these minor changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267001</commentid>
    <comment_count>87</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-19 15:28:45 -0700</bug_when>
    <thetext>(In reply to comment #86)
&gt; (From update of attachment 64545 [details])
&gt; &gt; +++ WebCore/ChangeLog	(working copy)
&gt; &gt;
&gt; &gt; +        * html/HTMLIFrameElement.h:
&gt; 
&gt; Looks like this is left over from a previous version.

Whoops, will delete.

&gt; &gt; +        * rendering/MediaControlElements.cpp:
&gt; &gt; +        (WebCore::MediaControlFullscreenButtonElement::defaultEventHandler): The full screen button now toggles full screen mode (previously, it only entered).
&gt; &gt; +        * rendering/style/RenderStyleConstants.h: Added new style constants.
&gt; Ditto.

This is technically a comment for the Part5: FullScreen-WebCore-MediaElements patch.  They will all be committed at the same time, so I didn&apos;t break out this minor part of the ChangeLog into it&apos;s own patch.

&gt; &gt; +    
&gt; &gt; +#if ENABLE(FULLSCREEN_API)
&gt; &gt; +void Document::webkitRequestFullScreenForElement(Element* element, unsigned short flags)
&gt; &gt; +{
&gt; &gt; +    if (!page() || !page()-&gt;settings()-&gt;fullScreenEnabled())
&gt; &gt; +        return;
&gt; &gt; +
&gt; &gt; +    if (!element)
&gt; &gt; +        element = documentElement();
&gt; &gt; +    
&gt; &gt; +    if (!page()-&gt;chrome()-&gt;client()-&gt;supportsFullScreenForElement(element))
&gt; &gt; +        return;
&gt; &gt; +    
&gt; &gt; +    m_fullScreenElement = 0;
&gt; &gt; +    m_areKeysEnabledInFullScreen = flags &amp; Element::ALLOW_KEYBOARD_INPUT;
&gt; &gt; +    page()-&gt;chrome()-&gt;client()-&gt;enterFullScreenForElement(element);
&gt; 
&gt; If enterFullScreenForElement fails and m_fullScreenElement is non-NULL, we won&apos;t ever fire a webkitfullscreenchange event. Is this worth worrying about?

The Mozilla spec says: &quot;When a Document enters or leaves the fullscreen state, the user agent must queue a task to dispatch [the fullscreenchange event].&quot;  So, because the fullscreen state isn&apos;t changing, the event shouldn&apos;t be dispatched.  Granted, this case occurs only when another element was previously full screen, which is not specifically addressed in the documentation.

&gt; &gt; +void Document::webkitDidExitFullScreenForElement(Element* element)
&gt; &gt; +{
&gt; &gt; +    ASSERT(element);
&gt; &gt; +    m_isFullScreen = false;
&gt; &gt; +    m_areKeysEnabledInFullScreen = false;
&gt; &gt; +    // m_fullScreenElement has already been cleared; recalc the style of 
&gt; &gt; +    // the passed in element instead.
&gt; &gt; +    
&gt; &gt; +    element-&gt;setNeedsStyleRecalc(FullStyleChange);
&gt; 
&gt; The blank line should go above the comment instead of below it.

Will change.

&gt; &gt; Index: WebCore/dom/Element.cpp
&gt; &gt; ===================================================================
&gt; &gt; --- WebCore/dom/Element.cpp	(revision 65463)
&gt; &gt; +++ WebCore/dom/Element.cpp	(working copy)
&gt; &gt; @@ -1441,7 +1441,7 @@ void Element::normalizeAttributes()
&gt; &gt;              attr-&gt;normalize();
&gt; &gt;      }
&gt; &gt;  }
&gt; &gt; -
&gt; &gt; +    
&gt; Don&apos;t need the new white space.

Will remove.

&gt; r=m with these minor changes.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267003</commentid>
    <comment_count>88</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-19 15:31:57 -0700</bug_when>
    <thetext>(In reply to comment #87)
&gt; (In reply to comment #86)
&gt; &gt; &gt; +    m_fullScreenElement = 0;
&gt; &gt; &gt; +    m_areKeysEnabledInFullScreen = flags &amp; Element::ALLOW_KEYBOARD_INPUT;
&gt; &gt; &gt; +    page()-&gt;chrome()-&gt;client()-&gt;enterFullScreenForElement(element);
&gt; &gt; 
&gt; &gt; If enterFullScreenForElement fails and m_fullScreenElement is non-NULL, we won&apos;t ever fire a webkitfullscreenchange event. Is this worth worrying about?
&gt; 
&gt; The Mozilla spec says: &quot;When a Document enters or leaves the fullscreen state, the user agent must queue a task to dispatch [the fullscreenchange event].&quot;  So, because the fullscreen state isn&apos;t changing, the event shouldn&apos;t be dispatched.  Granted, this case occurs only when another element was previously full screen, which is not specifically addressed in the documentation.

On second thought, setting m_fullScreenElement to 0 here seems unnecessary. If the UA decides to ignore the new full screen request, we should leave the existing m_fullScreenElement alone.

I&apos;ll remove that &quot;m_fullScreenElement = 0;&quot; line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>267440</commentid>
    <comment_count>89</comment_count>
      <attachid>64997</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-20 14:58:43 -0700</bug_when>
    <thetext>Created attachment 64997
Part 7: FullScreen-LayoutTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269982</commentid>
    <comment_count>90</comment_count>
      <attachid>63943</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-26 11:23:55 -0700</bug_when>
    <thetext>Comment on attachment 63943
Part 6: FullScreen-WebKit

&gt;  // These are private both because callers should be using the cover methods and because the
&gt; Index: WebKit/mac/WebView/WebPreferences.h
&gt; ===================================================================
&gt; --- WebKit/mac/WebView/WebPreferences.h	(revision 65005)
&gt; +++ WebKit/mac/WebView/WebPreferences.h	(working copy)
&gt; @@ -437,6 +437,28 @@ caching behavior.
&gt;  */
&gt;  - (WebCacheModel)cacheModel;
&gt;  
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +/*!
&gt; + @method setFullScreenEnabled:
&gt; + 
&gt; + @abstract
&gt; + 
&gt; + @param 
&gt; + 
&gt; + @discussion
&gt; + */
&gt; +- (void)setFullScreenEnabled:(BOOL)flag;
&gt; +
&gt; +/*!
&gt; + @method fullScreenEnabled:
&gt; + 
&gt; + @abstract
&gt; + 
&gt; + @result
&gt; + */
&gt; +- (BOOL)fullScreenEnabled;
&gt; +#endif
&gt; +
&gt;  @end
&gt;  
  You should fill in @abstract and @result for both of these.

r=me with this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269991</commentid>
    <comment_count>91</comment_count>
      <attachid>63943</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-26 11:31:43 -0700</bug_when>
    <thetext>Comment on attachment 63943
Part 6: FullScreen-WebKit


&gt; Index: WebKit/mac/WebView/WebPreferences.h
&gt; ===================================================================
&gt; --- WebKit/mac/WebView/WebPreferences.h	(revision 65005)
&gt; +++ WebKit/mac/WebView/WebPreferences.h	(working copy)
&gt; @@ -437,6 +437,28 @@ caching behavior.
&gt;  */
&gt;  - (WebCacheModel)cacheModel;
&gt;  
&gt; +#if ENABLE(FULLSCREEN_API)
&gt; +/*!
&gt; + @method setFullScreenEnabled:
&gt; + 
&gt; + @abstract
&gt; + 
&gt; + @param 
&gt; + 
&gt; + @discussion
&gt; + */
&gt; +- (void)setFullScreenEnabled:(BOOL)flag;
&gt; +
&gt; +/*!
&gt; + @method fullScreenEnabled:
&gt; + 
&gt; + @abstract
&gt; + 
&gt; + @result
&gt; + */
&gt; +- (BOOL)fullScreenEnabled;
&gt; +#endif
&gt; +
&gt; 
Dan reminds me that #if ENABLE() can&apos;t be in a public header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270011</commentid>
    <comment_count>92</comment_count>
      <attachid>65593</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-26 11:53:21 -0700</bug_when>
    <thetext>Created attachment 65593
Part 6: FullScreen-WebKit

Moved the new API for setting fullscreen preferences into WebPreferencesPrivate.h, and removed the #if ENABLE(FULLSCREEN_API) guards.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270014</commentid>
    <comment_count>93</comment_count>
      <attachid>64997</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-26 11:59:37 -0700</bug_when>
    <thetext>Comment on attachment 64997
Part 7: FullScreen-LayoutTests


&gt; +2010-08-19  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +

...

&gt; +        * fullscreen/full-screen-twice.html: Added.
&gt; +
&gt; +2010-08-09  Jer Noble  &lt;jer.noble@apple.com&gt;
&gt; +
These two entries should be combined.


&gt; +        Add JavaScript API to allow a page to go fullscreen.
&gt; +        rdar://problem/6867795
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=43099
&gt; +
&gt; +        New tests for the new full screen API:
&gt; +
&gt; +        full-screen-api.html: tests for the presence of the new full screen apis.
&gt; +        full-screen-request.html: tests that clients can request the browser enter full screen mode successfully.
&gt; +        full-screen-css.html: tests that the new full screen pseudo classes are applied once full screen mode is entered.
&gt; +        full-screen-remove.html: tests that the document&apos;s current full screen element is changed when that element is removed from the DOM tree.
&gt; +        full-screen-remove-ancestor.html: tests that the document&apos;s current full screen element is changed an ancestor of that element is removed from the DOM tree.
&gt; +        full-screen-twice.html: tests that entering full screen mode on two different elements in a row does not fail.

Please wrap the long lines so they are readable without horizontal scrolling in a reasonable size window.

&gt; ===================================================================
&gt; --- LayoutTests/fullscreen/full-screen-api.html	(revision 0)
&gt; +++ LayoutTests/fullscreen/full-screen-api.html	(revision 0)
&gt; @@ -0,0 +1,13 @@
&gt; +&lt;body&gt;
&gt; +    &lt;script src=&quot;full-screen-test.js&quot;&gt;&lt;/script&gt;
&gt; +&lt;span&gt;&lt;/span&gt;
&gt; +&lt;script&gt;
&gt; +    span = document.getElementsByTagName(&apos;span&apos;)[0];
&gt; +	testExpected(&quot;document.webkitFullScreen&quot;, false);
&gt; +	testExpected(&quot;document.webkitCancelFullScreen&quot;, undefined, &quot;!=&quot;);
&gt; +	testExpected(&quot;document.webkitCurrentFullScreenElement&quot;, null);
&gt; +	testExpected(&quot;document.onwebkitfullscreenchange&quot;, null)
&gt; +	testExpected(&quot;span.webkitRequestFullScreen&quot;, undefined, &quot;!=&quot;);
&gt; +	testExpected(&quot;span.onwebkitfullscreenchange&quot;, null)	
&gt; +	endTest();
&gt; +&lt;/script&gt;

Ack, tabs!

&gt; Index: LayoutTests/fullscreen/full-screen-css.html
&gt; +&lt;script&gt;
&gt; +    // Bail out early if the full screen API is not enabled or is missing:
&gt; +    if (Element.prototype.webkitRequestFullScreen == undefined)
&gt; +        endTest();

Shouldn&apos;t this be an explicit fail?


&gt; Index: LayoutTests/fullscreen/full-screen-remove-ancestor.html
&gt; +&lt;script&gt;
&gt; +    // Bail out early if the full screen API is not enabled or is missing:
&gt; +    if (Element.prototype.webkitRequestFullScreen == undefined) 
&gt; +        endTest();

Here too.

&gt; Index: LayoutTests/fullscreen/full-screen-remove.html
&gt; +&lt;script&gt;
&gt; +    // Bail out early if the full screen API is not enabled or is missing:
&gt; +    if (Element.prototype.webkitRequestFullScreen == undefined)
&gt; +        endTest();

And here.

&gt; Index: LayoutTests/fullscreen/full-screen-request.html
&gt; +&lt;script&gt;
&gt; +    // Bail out early if the full screen API is not enabled or is missing:
&gt; +    if (Element.prototype.webkitRequestFullScreen == undefined)
&gt; +        endTest();

And here.

&gt; +        case &apos;&lt;&apos;:   success = observed &lt;  expected; break;
&gt; +        case &apos;&lt;=&apos;: success = observed &lt;= expected; break;
&gt; +        case &apos;&gt;&apos;:   success = observed &gt;  expected; break;
&gt; +        case &apos;&gt;=&apos;: success = observed &gt;= expected; break;
&gt; +        case &apos;!=&apos;:  success = observed != expected; break;
&gt; +        case &apos;==&apos;: success = observed == expected; break;

Strange spacing here...

&gt; +function waitForEventAndEnd(eventName, funcString)
&gt; +function waitForEventAndFail(element, eventName)
&gt; +function waitForEventAndTest(element, eventName, testFuncString, endit)

These aren&apos;t used, you should remove them.

&gt; Index: LayoutTests/fullscreen/full-screen-twice.html
&gt; +&lt;script&gt;
&gt; +    // Bail out early if the full screen API is not enabled or is missing:
&gt; +    if (Element.prototype.webkitRequestFullScreen == undefined) 
&gt; +        endTest();

Fail here.


&gt; Index: LayoutTests/platform/android-v8/Skipped
&gt; Index: LayoutTests/platform/android/Skipped
&gt; Index: LayoutTests/platform/chromium-linux/Skipped
&gt; Index: LayoutTests/platform/chromium-linux/Skipped
&gt; Index: LayoutTests/platform/chromium-mac/Skipped
&gt; Index: LayoutTests/platform/chromium-win-vista/Skipped
&gt; Index: LayoutTests/platform/chromium-win-xp/Skipped
&gt; Index: LayoutTests/platform/chromium-win/Skipped
&gt; Index: LayoutTests/platform/chromium/Skipped
&gt; Index: LayoutTests/platform/google-chrome-linux64/Skipped
&gt; Index: LayoutTests/platform/gtk/Skipped
&gt; Index: LayoutTests/platform/qt-linux/Skipped
&gt; Index: LayoutTests/platform/qt-mac/Skipped
&gt; Index: LayoutTests/platform/qt-win/Skipped
&gt; Index: LayoutTests/platform/qt/Skipped
&gt; Index: LayoutTests/platform/win-wk2/Skipped
&gt; Index: LayoutTests/platform/win/Skipped

You should only need to add the test the top level Skipped file for each port (eg.
LayoutTests/platform/chromium/Skipped skips all chromium). You should add a comment 
to each Skipped file about why the tests are disabled.


r=me with these changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270624</commentid>
    <comment_count>94</comment_count>
      <attachid>65593</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2010-08-27 11:33:31 -0700</bug_when>
    <thetext>Comment on attachment 65593
Part 6: FullScreen-WebKit

&gt; Index: WebKit/WebKit.xcodeproj/project.pbxproj
&gt; ===================================================================
&gt; --- WebKit/WebKit.xcodeproj/project.pbxproj	(revision 65463)
&gt; +++ WebKit/WebKit.xcodeproj/project.pbxproj	(working copy)
&gt; @@ -1623,7 +1623,6 @@
&gt;  			isa = PBXProject;
&gt;  			buildConfigurationList = 149C283208902B0F008A9EFC /* Build configuration list for PBXProject &quot;WebKit&quot; */;
&gt;  			compatibilityVersion = &quot;Xcode 2.4&quot;;
&gt; -			developmentRegion = English;
&gt;  			hasScannedForEncodings = 1;
&gt;  			knownRegions = (
&gt;  				English,

Don&apos;t need this change.


&gt; Index: WebKit/mac/WebCoreSupport/WebSystemInterface.mm
&gt; ===================================================================
&gt; --- WebKit/mac/WebCoreSupport/WebSystemInterface.mm	(revision 65463)
&gt; +++ WebKit/mac/WebCoreSupport/WebSystemInterface.mm	(working copy)
&gt; @@ -84,6 +84,7 @@ void InitWebCoreSystemInterface(void)
&gt;      INIT(SignalCFReadStreamHasBytes);
&gt;      INIT(QTIncludeOnlyModernMediaFileTypes);
&gt;      INIT(QTMovieDataRate);
&gt; +    INIT(QTMovieDisableComponent);
&gt;      INIT(QTMovieMaxTimeLoaded);
&gt;      INIT(QTMovieMaxTimeLoadedChangeNotification);
&gt;      INIT(QTMovieMaxTimeSeekable);

This is unrelated to this patch.

r=me with the unrelated changes removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270716</commentid>
    <comment_count>95</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-27 13:49:27 -0700</bug_when>
    <thetext>Committed r66251: &lt;http://trac.webkit.org/changeset/66251&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270782</commentid>
    <comment_count>96</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2010-08-27 15:40:01 -0700</bug_when>
    <thetext>Committed r66267: &lt;http://trac.webkit.org/changeset/66267&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>270812</commentid>
    <comment_count>97</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-27 16:52:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/66267 might have broken Qt Linux Release
The following changes are on the blame list:
http://trac.webkit.org/changeset/66267
http://trac.webkit.org/changeset/66268
http://trac.webkit.org/changeset/66271</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274357</commentid>
    <comment_count>98</comment_count>
    <who name="Jeremy Orlow">jorlow</who>
    <bug_when>2010-09-04 06:04:39 -0700</bug_when>
    <thetext>(In reply to comment #93)
&gt; (From update of attachment 64997 [details])
&gt; &gt; Index: LayoutTests/platform/android-v8/Skipped
&gt; &gt; Index: LayoutTests/platform/android/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-linux/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-linux/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-mac/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-win-vista/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-win-xp/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium-win/Skipped
&gt; &gt; Index: LayoutTests/platform/chromium/Skipped
&gt; &gt; Index: LayoutTests/platform/google-chrome-linux64/Skipped
&gt; &gt; Index: LayoutTests/platform/gtk/Skipped
&gt; &gt; Index: LayoutTests/platform/qt-linux/Skipped
&gt; &gt; Index: LayoutTests/platform/qt-mac/Skipped
&gt; &gt; Index: LayoutTests/platform/qt-win/Skipped
&gt; &gt; Index: LayoutTests/platform/qt/Skipped
&gt; &gt; Index: LayoutTests/platform/win-wk2/Skipped
&gt; &gt; Index: LayoutTests/platform/win/Skipped
&gt; 
&gt; You should only need to add the test the top level Skipped file for each port (eg.
&gt; LayoutTests/platform/chromium/Skipped skips all chromium). You should add a comment 
&gt; to each Skipped file about why the tests are disabled.

Chromium doesn&apos;t use skip lists.  I&apos;m not sure if Android does or not.  In the future, if you&apos;re adding a Skipped file, there&apos;s a good chance you&apos;re doing something wrong or the skipped list isn&apos;t upstreamed.  In this case, chromium uses a test-expectations file (because we run tests even when we expect them to fail).  The top of the file describes how it works.  If anything, please don&apos;t create skip list files since they&apos;ll only serve to confuse people.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274366</commentid>
    <comment_count>99</comment_count>
    <who name="Steve Block">steveblock</who>
    <bug_when>2010-09-04 11:08:06 -0700</bug_when>
    <thetext>Android does not used a Skipped list. I removed it in http://trac.webkit.org/changeset/66793</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>294015</commentid>
    <comment_count>100</comment_count>
      <attachid>63939</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2010-10-14 01:47:31 -0700</bug_when>
    <thetext>Comment on attachment 63939
Part 4: FullScreen-WebCore-CSS

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

&gt; WebCore/rendering/style/RenderStyleConstants.h:82
&gt; +    FULL_SCREEN, FULL_SCREEN_DOCUMENT,

This line should be put *before* AFTER_LAST_INTERNAL_PSEUDOID.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>916789</commentid>
    <comment_count>101</comment_count>
    <who name="Nicky Robinson">ncalebrobinson</who>
    <bug_when>2013-08-13 10:44:57 -0700</bug_when>
    <thetext>(In reply to comment #100)
&gt; (From update of attachment 63939 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=63939&amp;action=review
&gt; 
&gt; &gt; WebCore/rendering/style/RenderStyleConstants.h:82
&gt; &gt; +    FULL_SCREEN, FULL_SCREEN_DOCUMENT,
&gt; 
&gt; This line should be put *before* AFTER_LAST_INTERNAL_PSEUDOID.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62784</attachid>
            <date>2010-07-27 19:12:22 -0700</date>
            <delta_ts>2010-07-27 20:36:48 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>63619</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQxIEBACisyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBKYXZhU2NyaXB0IEFQSSB0byBhbGxvdyBhIHBhZ2UgdG8gZ28gZnVsbHNjcmVlbi4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjg2Nzc5NQorICAgICAgICAKKyAgICAgICAgTW96aWxsYSBoYXMg
cHJvcG9zZWQgYSBuZXcgc2V0IG9mIEphdmFTY3JpcHQgQVBJcyB3aGljaCBhbGxvdyBhbnkgZWxl
bWVudCBpbgorICAgICAgICBhIGRvY3VtZW50IHRvIGdvIGZ1bGwtc2NyZWVuLiAgVGhlIGN1cnJl
bnQgcmV2aXNpb24gb2YgdGhlaXIgcHJvcG9zYWwgY2FuIGJlIAorICAgICAgICBmb3VuZCBoZXJl
OgorICAgICAgICA8aHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL2luZGV4LnBocD90aXRsZT1HZWNr
bzpGdWxsU2NyZWVuQVBJJm9sZGlkPTIzNTYwMT4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9w
b3NlZCBzcGVjaWZpY2F0aW9uIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAg
ICAgICBEb2N1bWVudDoKKyAgICAgICAgLSBUaHJlZSBuZXcgbWV0aG9kcyBvbiBEb2N1bWVudDoK
KyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCisgICAgICAgICAgICArIHZvaWQgY2FuY2Vs
RnVsbFNjcmVlbigpCisgICAgICAgIC0gVGhyZWUgbmV3IGF0dHJpYnV0ZXMgb2YgRG9jdW1lbnQ6
CisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW4KKyAg
ICAgICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbldpdGhLZXlz
CisgICAgICAgICAgICArIChvcHRpb25hbCkgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgY3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50CisgICAgICAgICAgICAKKyAgICAgICAgRWxlbWVudDoKKyAg
ICAgICAgLSBUd28gbmV3IG1ldGhvZHMgb24gRWxlbWVudDoKKyAgICAgICAgICAgICsgdm9pZCBy
ZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpCisgICAgICAgIAorICAgICAgICBIVE1MSUZyYW1lRWxlbWVudDoKKyAgICAgICAg
LSBPbmUgbmV3IGNvbnRlbnQgYXR0cmlidXRlOgorICAgICAgICAgICAgKyBhbGxvd0Z1bGxTY3Jl
ZW4KKyAgICAgICAgICAgIAorICAgICAgICBFdmVudHM6CisgICAgICAgIC0gT25lIG5ldyBldmVu
dDoKKyAgICAgICAgICAgICsgZnVsbFNjcmVlbkNoYW5nZQorICAgICAgICAKKyAgICAgICAgQ1NT
IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAtIFRocmVlIG5ldyBQc2V1ZG8tY2xhc3NlczoKKyAg
ICAgICAgICAgICsgOmZ1bGwtc2NyZWVuCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1kb2MK
KyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQKKyAgICAgICAgCisg
ICAgICAgIEZvciBXZWJLaXQncyBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbGwgdGhlIGFib3Zl
IG5ldyBBUElzIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAKKyAgICAgICAgIndlYmtpdCIgb3IgIi13
ZWJraXQiIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RzOgor
ICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCisgICAg
ICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwKKyAgICAgICAg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKKworICAgICAg
ICBQcm9qZWN0IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzogQWRkZWQgYW4gRU5BQkxFX0ZVTExTQ1JFRU4gZW50cnkuCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3Nz
IGFuZCBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVl
bi5leHA6IEFkZGVkIGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5j
dGlvbnMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcg
c291cmNlIGZpbGVzIGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2Vz
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4g
QVBJIHRvIHRoZSBEb2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1l
bnQncyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbDogQWRkZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAg
U291cmNlIGNoYW5nZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmg6IEV4cG9zZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMg
aW4gdGhlIERPTSBjbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVk
IG5ldyBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnBzZXVkb0lkKTogCisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6Cisg
ICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6Oik6IEFkZGVkIG5ldyBmdWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3NlcyB0byB0aGUgUHNldWRv
VHlwZSBlbnVtLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisgICAgICAg
IChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3Nz
IHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBhbmQgdGhlIGRlZmF1bHRRdWlya3NTdHlsZSBz
aGVldHMuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKTogUHVsbCB0
aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIHNoZWV0LgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogQ2hlY2sgZm9yIHRoZSBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8gY2xhc3Nlcy4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6IFN1
cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOiBTdXBwb3J0IGxp
c3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyk6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGVudGVyIGZ1bGwg
c2NyZWVuIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVs
bFNjcmVlbik6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGV4aXQgZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFNldHMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNz
ZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTog
Q3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENs
ZWFycyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxl
bWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBj
b25zdCBhY2Nlc3NvcnMgZm9yIG5ldyBmdWxsLXNjcmVlbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRJc0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVk
KTogQWNjZXNzb3IgZm9yIG1faXNGdWxsU2NyZW4gYW5kIG1fYXJlS2V5c0VuYWJsZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KTog
QWNjZXNzb3IgZm9yIG1fZnVsbFNjcmVlbkVsZW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4p
OiBDYWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtl
eXMuIAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyk6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1l
bnRXaXRoS2V5cy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOiBPdmVycmlkZWQgYnkgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6aXNXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFBhcnNlIHRoZSBu
ZXcgIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCByZWdpc3RlciBhIGxp
c3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojp3ZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3Nv
ciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxl
bWVudDo6c2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxs
U2NyZWVuLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6IFJlLWltcGxlbWVu
dGVkIHRoZSBIVE1MTWVkaWFFbGVtZW50IGZ1bGwgc2NyZWVuIHN1cHBvcnQgaW4gdGVybXMgb2Yg
dGhlIG5ldyAoZ2VuZXJpYykgZnVsbCBzY3JlZW4gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JFbGVtZW50KTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JF
bGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVnYXRlLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZCBhIG5ldyBzZXR0aW5n
IHRvIGNvbnRyb2wgcnVudGltZSBzdXBwb3J0IGZvciBmdWxsIHNjcmVlbiBtb2RlIChkZWZhdWx0
cyB0byBvZmYpCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RnVsbFNjcmVlbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmZ1bGxTY3JlZW5FbmFibGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBUaGUgZnVsbCBzY3JlZW4gYnV0dG9uIG5vdyB0b2dnbGVzIGZ1bGwgc2NyZWVuIG1v
ZGUgKHByZXZpb3VzbHksIGl0IG9ubHkgZW50ZXJlZCkuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDEw
LTA3LTI3ICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDY0MTg1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC00NDksNiArNDQ5LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZSBcCiAgICAgV2ViS2l0Q1NTTWF0cml4IFwKICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSBcCisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IFwKICAgICBXZWJLaXRQb2ludCBc
CiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50IFwKICAgICBXZWJTb2NrZXQgXApAQCAtNjYyLDYg
KzY2MywxMCBAQCBpZmVxICgkKE9TKSxNQUNPUykKIGVuZGlmCiBlbmRpZgogCitpZmVxICgkKGZp
bmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JFRU4sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZV
TExTQ1JFRU4pCisgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5j
cHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApAQCAtODQwLDYgKzg0NSw3MiBAQCBhbGwg
OiBXZWJDb3JlLmV4cCBXZWJDb3JlLkxQNjQuZXhwCiBXZWJDb3JlLmV4cCA6ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9XZWJDb3JlRXhwb3J0RmlsZUdlbmVyYXRvcgogCSReID4gJEAKIAorIyBGSVhN
RTogV1RGX1VTRV9QTFVHSU5fSE9TVF9QUk9DRVNTIGlzIG9ubHkgdHJ1ZSB3aGVuIGJ1aWxkaW5n
IGZvciB4ODZfNjQsIGJ1dCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byBrbm93IGFib3V0IHRoYXQgaGVy
ZS4KK2lmZXEgKCQoZmluZHN0cmluZyB4ODZfNjQsJChBUkNIUykpICQoZmluZHN0cmluZyB4ODZf
NjQsJChWQUxJRF9BUkNIUykpLCB4ODZfNjQgeDg2XzY0KQoraWZlcSAoJChzaGVsbCBnY2MgLWFy
Y2ggeDg2XzY0IC1FIC1QIC1kTSAkKEZSQU1FV09SS19GTEFHUykgV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvUGxhdGZvcm0uaCB8IGdyZXAgV1RGX1VTRV9QTFVHSU5fSE9TVF9QUk9DRVNT
IHwgY3V0IC1kJyAnIC1mMyksIDEpCisgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNz
LmV4cAorZW5kaWYKK2VuZGlmCisKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfM0RfUkVOREVS
SU5HLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV8zRF9SRU5ERVJJTkcpCisgICAgV0VCQ09S
RV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBX
ZWJDb3JlLjNEUmVuZGVyaW5nLmV4cAorZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLWFyY2gg
eDg2XzY0IC1FIC1QIC1kTSAkKEZSQU1FV09SS19GTEFHUykgV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvUGxhdGZvcm0uaCB8IGdyZXAgV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElO
RyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6
PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5BY2NlbGVyYXRlZENvbXBv
c2l0aW5nLmV4cAorZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLUUgLVAgLWRNICQoRlJBTUVX
T1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oIHwgZ3Jl
cCBFTkFCTEVfQ09OVEVYVF9NRU5VUyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdFQkNPUkVf
RVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2Vi
Q29yZS5Db250ZXh0TWVudXMuZXhwCitlbmRpZgorCitpZmVxICgkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCksIDEpCisgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09S
RV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLkRhc2hib2FyZFN1cHBvcnQuZXhwCitlbmRp
ZgorCitpZmVxICgkKHNoZWxsIGdjYyAtRSAtUCAtZE0gJChGUkFNRVdPUktfRkxBR1MpIFdlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmggfCBncmVwIEVOQUJMRV9EUkFHX1NV
UFBPUlQgfCBjdXQgLWQnICcgLWYzKSwgMSkKKyAgICBXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJ
RVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdlYkNvcmUuRHJhZ1N1cHBvcnQu
ZXhwCitlbmRpZgorCitpZmVxICgkKHNoZWxsIGdjYyAtRSAtUCAtZE0gJChGUkFNRVdPUktfRkxB
R1MpIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmggfCBncmVwIEVOQUJM
RV9JTlNQRUNUT1IgfCBjdXQgLWQnICcgLWYzKSwgMSkKKyAgICBXRUJDT1JFX0VYUE9SVF9ERVBF
TkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdlYkNvcmUuSW5zcGVj
dG9yLmV4cAorZW5kaWYKKworaWZlcSAoJChFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTKSwgMSkK
KyAgICBXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBF
TkRFTkNJRVMpIFdlYkNvcmUuT3JpZW50YXRpb25FdmVudHMuZXhwCitlbmRpZgorCitpZmVxICgk
KGZpbmRzdHJpbmcgMTAuNCwkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCkpLCAxMC40KQorICAg
IFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVO
Q0lFUykgV2ViQ29yZS5UaWdlci5leHAKK2VuZGlmCisKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFC
TEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTywkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlZpZGVvUHJveHkuZXhwCitl
bmRpZgorCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX1ZJREVPLCQoRkVBVFVSRV9ERUZJTkVT
KSksIEVOQUJMRV9WSURFTykKKyAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQo
V0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlZpZGVvLmV4cAorZW5kaWYKKwor
aWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykp
LCBFTkFCTEVfR0VPTE9DQVRJT04pCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNP
UkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5DbGllbnRCYXNlZEdlb2xvY2F0aW9uLmV4
cAorZWxzZQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQ
T1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5HZW9sb2NhdGlvbi5leHAKK2VuZGlmCitlbmRpZgor
CitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JFRU4sJChGRUFUVVJFX0RFRklORVMp
KSwgRU5BQkxFX0ZVTExTQ1JFRU4pCisgICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6
PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5GdWxsU2NyZWVuLmV4cAor
ZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX1BS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdF
QkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lF
UykgV2ViQ29yZS5Qcm90ZWN0aW9uU3BhY2VBdXRoQ2FsbGJhY2suZXhwCitlbmRpZgorCitXZWJD
b3JlLmV4cCA6IFdlYkNvcmUuYmFzZS5leHAgJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMp
CisJY2F0ICReID4gJEAKKwogIyBTd2l0Y2ggTlNSZWN0LCBOU1NpemUgYW5kIE5TUG9pbnQgd2l0
aCB0aGVpciBDRyBjb3VudGVycGFydHMgZm9yIHRoZSA2NC1iaXQgZXhwb3J0cyBmaWxlLgogV2Vi
Q29yZS5MUDY0LmV4cCA6IFdlYkNvcmUuZXhwCiAJY2F0ICReIHwgc2VkIC1lIHMvN19OU1JlY3Qv
NkNHUmVjdC8gLWUgcy83X05TU2l6ZS82Q0dTaXplLyAtZSBzLzhfTlNQb2ludC83Q0dQb2ludC8g
PiAkQApJbmRleDogV2ViQ29yZS9XZWJDb3JlLkZ1bGxTY3JlZW4uZXhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5GdWxsU2NyZWVuLmV4cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
V2ViQ29yZS5GdWxsU2NyZWVuLmV4cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBO
U183RWxlbWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdlYmtp
dFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3Jl
OERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50
RQpJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgRU5BQkxFX0VW
RU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNFOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVf
RklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJM
RV9GSUxFX1dSSVRFUiA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOID0gRU5BQkxFX0ZVTExTQ1JFRU47
CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9JTUFHRV9SRVNJWkVSID0gOwpA
QCAtODUsNCArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJM
RV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0Rf
UkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkg
JChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdF
KSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9S
RUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BS
T0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChF
TkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9E
QVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChF
TkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZVTExTQ1JFRU4pICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQxODUpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDk4MCw2ICs0OTgwLDggQEAKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAq
LzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAq
LzsgfTsKKwkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5o
ICovOyB9OworCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuY3BwICovOyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJv
bGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAw
RTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0Ez
OEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTA2NDcsNiArMTA2NDks
MTEgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAw
QjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
MTQ1NUU5MTFGNkEyOTIwMENBODdBNSAvKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5leHBvcnRzOyBwYXRoID0gV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4
NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2NzQsNiArMTE2ODEsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJNUQ4N0JCODIxMUUzRUQ4NjAwNzAyQjZGIC8qIEV4cG9ydEZp
bGVHZW5lcmF0b3IuY3BwICovLAogCQkJCTVENEI4QzUyMTFFNTJDOEIwMEJCQjYyRiAvKiBXZWJD
b3JlLmV4cC5pbiAqLywKKwkJCQlDRDE0NTVFOTExRjZBMjkyMDBDQTg3QTUgLyogV2ViQ29yZS5G
dWxsU2NyZWVuLmV4cCAqLywKIAkJCSk7CiAJCQluYW1lID0gRXhwb3J0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjYwMSw2ICsxNjYwOSw3IEBACiAJCQkJQkM5QUREMjIwQ0M0
MDMyNjAwMDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFF
NTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJ
CQk0Q0RFNTRFQzBFNTU3OTc4MDA4OUUyNkMgLyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTEx
RjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNz
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzEzNiw2ICsxNzE0NSw5IEBACiAJ
CQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAq
LywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZl
bnQuaWRsICovLAorCQkJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaCAqLywKKwkJCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4
NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYx
RTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkz
MUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJ
CQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwg
Ki8sCkBAIC0xOTg0Nyw2ICsxOTg1OSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMx
MUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMjI0Miw2ICsyMjI1NSw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5
QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1
MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYs
NiArMTU2LDExIEBAIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlIFdFQktJVF8KIC0g
KERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKil0YWduYW1l
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01FbGVtZW50ICopcXVlcnlT
ZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9O
XzRfMDsKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxl
Y3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJM
RV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorLSAodm9pZCl3ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80
XzA7CistICh2b2lkKXdlYmtpdENhbmNlbEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21l
bnQgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtMjI0LDYgKzIyOSwxMCBAQCBAaW50
ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2RlIFdFQktJVF9WCiAtIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICop
c2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlz
dCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5B
QkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxF
X0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAK
IEBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTU2
OSw2ICs1NzgsOSBAQCBAaW50ZXJmYWNlIERPTUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRNCiBA
cHJvcGVydHkoY29weSkgTlNTdHJpbmcgKndpZHRoOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRh
aW4pIERPTURvY3VtZW50ICpjb250ZW50RG9jdW1lbnQ7CiBAcHJvcGVydHkocmVhZG9ubHksIHJl
dGFpbikgRE9NQWJzdHJhY3RWaWV3ICpjb250ZW50V2luZG93IEFWQUlMQUJMRV9JTl9XRUJLSVRf
VkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZV
TExTQ1JFRU4KK0Bwcm9wZXJ0eShhc3NpZ24pIEJPT0wgd2Via2l0QWxsb3dGdWxsU2NyZWVuOwor
I2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NSFRNTEltYWdlRWxlbWVudCA6IERPTUhUTUxF
bGVtZW50IFdFQktJVF9WRVJTSU9OXzFfMwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NCw2ICsyNDQsMTUgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5
cAogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NS
RUVOOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgcmV0dXJuIEZVTExf
U0NSRUVOX0RPQzsKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAg
ICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQ7CisjZW5kaWYKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgUHNldWRvSW5wdXRMaXN0QnV0dG9uOgogI2lmIEVOQUJMRShEQVRB
TElTVCkKICAgICAgICAgcmV0dXJuIElOUFVUX0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYgKzQzMSwx
MSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGVmdFBhZ2UsICgibGVmdCIpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmlnaHRQYWdlLCAoInJpZ2h0Iikp
OworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4iKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5Eb2MsICgiLXdlYmtpdC1mdWxs
LXNjcmVlbi1kb2MiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1
bGxTY3JlZW5Sb290V2l0aFRhcmdldCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10
YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGUgPSAwOwogICAgIGlm
ICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAtNTMzLDYgKzU0NywxMSBAQCBzdGF0aWMgSGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxlZnRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHJpZ2h0UGFnZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UpOworI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbi5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+
c2V0KGZ1bGxTY3JlZW5Eb2MuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRv
Yyk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuUm9vdFdpdGhUYXJn
ZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0KTsK
KyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbmFtZVRvUHNldWRvVHlwZTsKIH0KQEAgLTY2Miw2
ICs2ODEsMTEgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwogICAg
IGNhc2UgUHNldWRvU2luZ2xlQnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm9CdXR0b246CiAgICAg
Y2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgY2FzZSBQ
c2V1ZG9GdWxsU2NyZWVuOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICBjYXNl
IFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKICAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgUHNldWRvTGVmdFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9SaWdodFBh
Z2UsCiAgICAgICAgICAgICBQc2V1ZG9GaXJzdFBhZ2UsCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuLAorICAgICAgICAgICAgUHNldWRvRnVsbFNj
cmVlbkRvYywKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwKKyNl
bmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gTWFyZ2luQm94VHlwZSB7CkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwxNCBAQCBz
dGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgU3RyaW5nIHF1aXJrc1J1bGVz
ID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdl
bnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhUXVpcmtz
U3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNo
ZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVs
ZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2Ny
ZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5l
eHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNo
ZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVm
YXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVl
bkV2YWwoKSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHls
ZSgpCkBAIC01NjMsNiArNTcxLDEzIEBAIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5
bGUoKQogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgCiAgICAgLy8gTm8gbmVlZCB0byBpbml0aWFs
aXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhlcmUgYXJlIG5vIHF1aXJrIHJ1bGVzIGZvciBlbGVt
ZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgorCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgLy8gRnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5S
dWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxz
Y3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkt
PmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVu
U2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNlbmRp
ZgogfQogICAgIAogc3RhdGljIHZvaWQgbG9hZFZpZXdTb3VyY2VTdHlsZSgpCkBAIC0yNjE5LDYg
KzI2MzQsMzcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBE
b2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVudCdzIGN1
cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1l
bnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVz
IHRvIAorICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFtZT4s
IDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAKKyAgICAg
ICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3Rh
dGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAgICAg
ICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRv
Y3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICAg
ICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIHRo
ZSAnZnVsbC1zY3JlZW4tZG9jJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIAorICAgICAgICAgICAgICAg
IC8vIHRvIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAg
ICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAgICAgICAgICAgICAgICAv
LyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUgZG9j
dW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gZWxlbWVudCAKKyAgICAgICAgICAgICAgICAvLyBp
cyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0aC10
YXJnZXQnIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhlIHJv
b3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9j
dW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDogV2Vi
Q29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVsbHNj
cmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorOi13ZWJraXQtZnVsbC1zY3JlZW4geworICBwb3Np
dGlvbjpmaXhlZDsKKyAgdG9wOjA7CisgIGxlZnQ6MDsKKyAgcmlnaHQ6MDsKKyAgYm90dG9tOjA7
Cit9Cis6LXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0IHsKKyAgb3ZlcmZsb3c6
aGlkZGVuOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBoZWlnaHQ6IDEwMCUKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK2ltZzotd2Vi
a2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cisg
ICAgaW1hZ2UtZml0OiBmaWxsOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBi
b3R0b206IDBweDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk5LDYgKzE5OSwxMCBAQAogI2luY2x1ZGUgIkhUTUxOb1NjcmlwdEVsZW1lbnQu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5jbHVkZSAiV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTQwNCw2ICs0
MDgsMTEgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSwogI2VuZGlm
CiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgLCBtX2lzRnVsbFNjcmVlbigwKQorICAgICwgbV9hcmVLZXlzRW5hYmxlZCgwKQor
ICAgICwgbV9mdWxsU2NyZWVuRWxlbWVudCgwKQorI2VuZGlmCiB7CiAgICAgbV9kb2N1bWVudCA9
IHRoaXM7CiAKQEAgLTMyNzIsNiArMzI4MSwxMCBAQCBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRXZlbnQoCiAjZW5kaWYKICAgICAgICAgZXZlbnQgPSBUb3VjaEV2ZW50OjpjcmVh
dGUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAgICAgIGV2ZW50ID0gV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJEZXZpY2VPcmllbnRh
dGlvbkV2ZW50IikKICAgICAgICAgZXZlbnQgPSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpjcmVh
dGUoKTsKQEAgLTMzMjMsNiArMzMzNiwxMCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChjCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRU
b3VjaEV2ZW50cyh0cnVlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JFRU5fTElTVEVORVIp
OworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlk
ZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQpAQCAtNTAzNiw1ICs1MDUzLDg0IEBAIElu
c3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3IKICAgICByZXR1cm4gcGFnZSgp
ID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwogfQogI2VuZGlmCisgICAgCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbigpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMo
ZG9jdW1lbnRFbGVtZW50KCksIGZhbHNlKTsKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5G
b3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRFbGVtZW50KCksIHRydWUpOworfQorICAgIAordm9p
ZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxl
bWVudCogZWxlbWVudCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAh
cGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQo
KTsKKyAgICAKKyAgICBpZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVs
bHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICBtX2FyZUtleXNFbmFibGVkID0g
a2V5c0VuYWJsZWQ7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNj
cmVlbkVsZW1lbnQpKQorICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1
bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQpOworfQorICAgIAordm9pZCBE
b2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
ID0gZWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICBtX2lzRnVsbFNj
cmVlbiA9IHRydWU7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChkb2N1bWVudEVsZW1lbnQoKSAhPSBtX2Z1bGxT
Y3JlZW5FbGVtZW50KQorICAgICAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJl
Y2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNo
RXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgdXBkYXRl
U3R5bGVJZk5lZWRlZCgpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Vi
a2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBE
b2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQorewor
ICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFwYWdlKCkt
PnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkID0g
ZmFsc2U7CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6Y3JlYXRlKCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgZG9jdW1lbnRFbGVtZW50KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICB1cGRhdGVTdHlsZUlm
TmVlZGVkKCk7Cit9CisgICAgCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3NCw2ICsyNzQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Up
OworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtNjc1LDcgKzY3OCw4IEBAIHB1YmxpYzoKICAgICAgICAg
VFJBTlNJVElPTkVORF9MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg4MDAsCiAgICAgICAgIEJF
Rk9SRUxPQURfTElTVEVORVIgICAgICAgICAgICAgICAgICA9IDB4MTAwMCwKICAgICAgICAgVE9V
Q0hfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAwLAotICAgICAgICBCRUZP
UkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAKKyAgICAgICAgQkVGT1JF
UFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAwLAorICAgICAgICBGVUxMU0NS
RUVOX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDgwMDAsCiAgICAgfTsKIAogICAgIGJv
b2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsgcmV0
dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9CkBAIC0xMDAxLDYgKzEwMDUs
MjEgQEAgcHVibGljOgogICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcigpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgaWRBdHRyaWJ1dGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZEF0dHJpYnV0ZU5hbWU7IH0KKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbiAmJiBtX2FyZUtleXNFbmFi
bGVkOyB9CisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudDsgfQorICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMo
KTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVs
ZW1lbnQqLCBib29sIGtleXNFbmFibGVkKTsKKyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW4oKTsKKyAgICAKKyAgICB2b2lkIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOworICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCopOworI2VuZGlmCiAKICAgICBib29sIHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3dyaXRlRGlzYWJsZWQ7IH0KICAgICB2b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFn
KSB7IG1fd3JpdGVEaXNhYmxlZCA9IGZsYWc7IH0KQEAgLTEyODYsNiArMTMwNSwxMiBAQCBwcml2
YXRlOgogICAgIEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0
TGlzdGVuZXJzOwogCiAgICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBib29sIG1faXNGdWxsU2NyZWVuOworICAgIGJv
b2wgbV9hcmVLZXlzRW5hYmxlZDsKKyAgICBFbGVtZW50KiBtX2Z1bGxTY3JlZW5FbGVtZW50Owor
I2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9t
aWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDY0MTg1KQor
KysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQw
LDE1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0RvbnRFbnVtXSB2b2lkIGluaXRpYWxpemVX
TUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikg
JiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5
c0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudDsKKyAgICAgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFO
R1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRl
cwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4Miw1ICsxNTgyLDE3IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcigKICAgICByZXR1cm4gTm9kZTo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjaGlsZCk7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
K3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKQoreworICAgIGRvY3VtZW50
KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIGZhbHNl
KTsKK30KKwordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkK
K3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyh0aGlzLCB0cnVlKTsKK30KKyNlbmRpZiAgICAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCkBAIC0yOTIsNiArMjk1LDEx
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsgCiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTikKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjQx
ODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYg
KzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVO
KSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOwor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdF
X09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAg
ICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpAQCAtMjA1
LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxD
b25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBv
bnRvdWNobW92ZTsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VD
SF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwogICAg
ICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVk
QXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5dIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlmCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20v
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2
ICsxNjIsMTMgQEAgYm9vbCBFdmVudDo6aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjbwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorYm9vbCBFdmVudDo6
aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysr
IFdlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlv
bkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25F
dmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBj
b25zdDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdmlydHVhbCBib29sIGlzV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZH
KQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKGxvYWRlbmQpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKKyAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
CiAKICAgICBjbGFzcyBFdmVudE5hbWVzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdl
YkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTikKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorICAgIC8vIEZyb20gdGhlIE1vemlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBb
ZnVsbFNjcmVlbkNoYW5nZUV2ZW50XSBidWJibGVzIAorICAgIC8vIGFuZCBpcyBub3QgY2FuY2Vs
bGFibGUuIgorICAgIAorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KCkKKyAgICA6IEV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRmdWxs
c2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKQorICAgIHsKKyAgICB9CisgICAgCisgICAg
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
KCkKKyAgICB7CisgICAgfQorICAgIAorICAgIHZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5jZWxhYmxlQXJnKQorICAgIHsKKyAgICAgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJi
bGVBcmcsIGNhbmNlbGFibGVBcmcpOworICAgIH0KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorI2RlZmluZSBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisKKyNpbmNsdWRlICJFdmVudC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudD4gY3JlYXRlKCkKKyAgICAg
ICAgeworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQpOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgdmlydHVhbCB+V2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgICAgIAorICAgICAgICB2b2lkIGluaXRXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxh
YmxlQXJnKTsKKyAgICAgICAgCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAgICAgCisgICAgcHJp
dmF0ZToKKyAgICAgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgICAgIFdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOworICAg
IH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvL0VOQUJMRShGVUxM
U0NSRUVOKQorCisjZW5kaWYgLy8gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKSW5kZXg6
IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworICAg
IGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdPUktFUlMmRlVMTFNDUkVFTiwKKyAg
ICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IEV2ZW50
IHsKKworICAgICAgICB2b2lkIGluaXRFcnJvckV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBp
biBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01T
dHJpbmcgbWVzc2FnZUFyZywgaW4gRE9NU3RyaW5nIGZpbGVuYW1lQXJnLCBpbiB1bnNpZ25lZCBs
b25nIGxpbmVub0FyZyk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3Rm
L1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5jbHVkZSAiV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjYyLDcgKzI2NiwxMSBAQCB2b2lk
IEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBCiAgICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgp
ID09IG9udG91Y2hjYW5jZWxBdHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIH0gZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIpIHsKKyAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVl
bmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICB9CisjZW5kaWYKIH0KIAogU3RyaW5nIEhUTUxFbGVtZW50Ojppbm5lckhUTUwoKSBjb25z
dApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDExIEBAIG1vZHVs
ZSBodG1sIHsKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9P
QkpFQ1RJVkVfQwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlRGlz
cGxheVN0cmluZzsKICNlbmRpZgorCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYg
RU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
OworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRp
ZgogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNp
b24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzIsNiArMTMyLDEwIEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmkKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpCiAg
ICAgICAgIHNldFNhbmRib3hGbGFncyhwYXJzZVNhbmRib3hBdHRyaWJ1dGUoYXR0cikpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3ZWJr
aXRhbGxvd2Z1bGxzY3JlZW5BdHRyKQorICAgICAgICBtX2FsbG93RnVsbFNjcmVlbiA9IHRydWU7
CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShy
ZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMSw2ICszMSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhU
TUxJRnJhbWVFbGVtZW50IDogcHVibGljIEhUTUxGcmFtZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIAorICAgIGJvb2wgd2Via2l0QWxsb3dGdWxs
U2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0Z1bGxTY3JlZW47IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEFsbG93RnVsbFNjcmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dGdWxsU2NyZWVuID0g
dmFsdWU7IH0KIAogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTUwLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKICAgICBBdG9taWNT
dHJpbmcgbV9uYW1lOworICAgIGJvb2wgbV9hbGxvd0Z1bGxTY3JlZW47CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlz
aW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHNhbmRib3g7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5n
IHNjcm9sbGluZzsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVM
TFNDUkVFTgorICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB3ZWJraXRBbGxv
d0Z1bGxTY3JlZW47CisjZW5kaWYKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgc3JjOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB3aWR0aDsKIApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw3ICsx
MjMsNiBAQCBIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KGNvbnN0CiAgICAgLCBt
X3NlbnRFbmRFdmVudChmYWxzZSkKICAgICAsIG1fcGF1c2VkSW50ZXJuYWwoZmFsc2UpCiAgICAg
LCBtX3NlbmRQcm9ncmVzc0V2ZW50cyh0cnVlKQotICAgICwgbV9pc0Z1bGxzY3JlZW4oZmFsc2Up
CiAgICAgLCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZShmYWxzZSkKICNpZiBFTkFCTEUoUExVR0lO
X1BST1hZX0ZPUl9WSURFTykKICAgICAsIG1fbmVlZFdpZGdldFVwZGF0ZShmYWxzZSkKQEAgLTI2
MCwxMCArMjU5LDYgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYgog
ICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS52b2x1bWVjaGFu
Z2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ck5hbWUgPT0gb253YWl0aW5nQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2FpdGluZ0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbndl
YmtpdGJlZ2luZnVsbHNjcmVlbkF0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKLSAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBv
bndlYmtpdGVuZGZ1bGxzY3JlZW5BdHRyKQotICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1l
bnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpAQCAtMzEyLDggKzMwNywxMCBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lCiB7CiAgICAgaWYgKG1fbmV0
d29ya1N0YXRlID4gTkVUV09SS19FTVBUWSkKICAgICAgICAgcGF1c2UocHJvY2Vzc2luZ1VzZXJH
ZXN0dXJlKCkpOwotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7Cisj
ZW5kaWYKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQogCkBAIC0x
ODUyLDggKzE4NDksMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkK
IHsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAg
aWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOworI2VuZGlmCiAK
ICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKICAgICB1c2VyQ2FuY2VsbGVkTG9hZCgp
OwpAQCAtMjAxMywyNSArMjAxMiwyNCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1l
ZGlhUGxheWVyCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2Ny
ZWVuKCkgY29uc3QgeworICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdGhpcyA6IGZhbHNlOworfQorCiB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0gICAgQVNTRVJUKCFtX2lzRnVs
bHNjcmVlbik7Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOwotICAgIGlmIChkb2N1bWVudCgp
ICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNo
cm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKLSAgICAgICAg
c2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOwot
ICAgIH0KKyAgICBBU1NFUlQoIWlzRnVsbHNjcmVlbigpKTsKKyAgICB3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbldpdGhLZXlzKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxz
Y3JlZW4oKQogewotICAgIEFTU0VSVChtX2lzRnVsbHNjcmVlbik7Ci0gICAgbV9pc0Z1bGxzY3Jl
ZW4gPSBmYWxzZTsKLSAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsK
LSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxs
c2NyZWVuRm9yTm9kZSh0aGlzKTsKLSAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCku
d2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKLSAgICB9CisgICAgQVNTRVJUKGlzRnVsbHNjcmVl
bigpKTsKKyAgICBpZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2Fu
Y2VsRnVsbFNjcmVlbigpOwogfQorI2VuZGlmCiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxl
bWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU3LDkgKzE1NywxMSBAQCBwdWJsaWM6CiAKICAgICBib29sIGhh
c1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxh
eWVyLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAgCi0gICAgYm9vbCBpc0Z1bGxz
Y3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbHNjcmVlbjsgfQorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBlbnRlckZ1
bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKIAogICAgIGJv
b2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKICAgICBib29sIGNsb3NlZENhcHRpb25zVmlz
aWJsZSgpIGNvbnN0OwpAQCAtMzU1LDcgKzM1Nyw2IEBAIHByaXZhdGU6CiAgICAgLy8gc3VwcG9y
dCBwcm9ncmVzcyBldmVudHMgc28gc2V0dGluZyBtX3NlbmRQcm9ncmVzc0V2ZW50cyBkaXNhYmxl
cyB0aGVtIAogICAgIGJvb2wgbV9zZW5kUHJvZ3Jlc3NFdmVudHMgOiAxOwogCi0gICAgYm9vbCBt
X2lzRnVsbHNjcmVlbiA6IDE7CiAgICAgYm9vbCBtX2Nsb3NlZENhcHRpb25zVmlzaWJsZSA6IDE7
CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRl
b0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8u
aCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEy
MCwxOCArMTIxLDIzIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIK
ICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9
CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9y
dHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdlID0gZG9jdW1lbnQoKSA/IGRv
Y3VtZW50KCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKCFwYWdlKSAKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFwbGF5ZXIoKSB8fCAhcGxheWVy
KCktPnN1cHBvcnRzRnVsbHNjcmVlbigpIHx8ICFwbGF5ZXIoKS0+aGFzVmlkZW8oKSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgd2l0aCB0aGUgcGxhdGZvcm0gY2xpZW50
LgotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVl
bkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3Vw
cG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKIH0KKyNlbmRpZgogCiB1bnNpZ25lZCBI
VE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKIHsKQEAgLTIwNCw2ICsyMTAsNyBA
QCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZpZGVvCiAgICAgcmV0dXJuIHBs
YXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTikKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50ZXJGdWxsc2NyZWVuKGJvb2wg
aXNVc2VyR2VzdHVyZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKGlzRnVsbHNjcmVl
bigpKQpAQCAtMjM0LDYgKzI0MSw3IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RGlz
cGxheWluZ0YKIHsKICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCk7CiB9CisjZW5kaWYKIAogdm9p
ZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpCiB7CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1s
L0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQCBwdWJs
aWM6CiAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCgpIGNvbnN0OwogICAgIHVuc2lnbmVkIHZpZGVv
SGVpZ2h0KCkgY29uc3Q7CiAgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCiAgICAgLy8gRnVs
bHNjcmVlbgogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVuKGJvb2wgaXNVc2VyR2VzdHVy
ZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxzY3JlZW4oKTsKQEAg
LTU0LDcgKzU1LDggQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zNjA4MQogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsU2NyZWVuKGJvb2wg
aXNVc2VyR2VzdHVyZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgd2Via2l0RW50ZXJGdWxsc2NyZWVu
KGlzVXNlckdlc3R1cmUsIGVjKTsgfQogICAgIHZvaWQgd2Via2l0RXhpdEZ1bGxTY3JlZW4oKSB7
IHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7IH0KLQorI2VuZGlmCisgICAgCiAgICAgYm9vbCBzaG91
bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZERpc3BsYXlQb3N0
ZXJJbWFnZTsgfQogCiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8gZ2FpbiByYXcgcGl4ZWwgYWNj
ZXNzCkBAIC03Myw3ICs3NSw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZpZGVvKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBoYXNWaWRlbygpIGNvbnN0IHsg
cmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygpOyB9CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbigpIGNvbnN0Owor
I2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0
OwogICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1dGVO
YW1lKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysg
V2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksOSArMjE5
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAot
ICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2Rl
KikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVl
bkZvck5vZGUoTm9kZSopIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5G
b3JOb2RlKE5vZGUqKSB7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopIHsgcmV0
dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JFbGVt
ZW50KEVsZW1lbnQqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9y
RWxlbWVudChFbGVtZW50KikgeyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5H
X1NUT1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tp
bmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJbmRleDogV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShy
ZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw2ICsxMzYsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAg
ICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwgYmUgZGVsZXRlZCBz
b29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoZmFs
c2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgICwgbV9mdWxsU2NyZWVuRW5hYmxlZChmYWxzZSkKKyNlbmRpZgogICAgICwg
bV9tZW1vcnlJbmZvRW5hYmxlZChmYWxzZSkKICAgICAsIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRh
dGlvbihmYWxzZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUv
cGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJs
ZWQoYm9vbCBmbGFnKSB7IG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkID0gZmxhZzsgfQog
ICAgICAgICBib29sIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICAgICAgdm9pZCBzZXRGdWxsU2NyZWVuRW5hYmxlZChib29sIGZsYWcpIHsgbV9mdWxs
U2NyZWVuRW5hYmxlZCA9IGZsYWc7IH0KKyAgICAgICAgYm9vbCBmdWxsU2NyZWVuRW5hYmxlZCgp
IGNvbnN0ICB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbmFibGVkOyB9CisjZW5kaWYKKwogICAgICAg
ICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21lbW9yeUluZm9FbmFi
bGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9FbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC00MDMsOCArNDA4LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFibGVkOiAx
OyAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAgICAgICAgYm9vbCBtX3Bh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9kbnNQcmVmZXRj
aGluZ0VuYWJsZWQgOiAxOworPDw8PDw8PCAubWluZQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQor
ICAgICAgICBib29sIG1fZnVsbFNjcmVlbkVuYWJsZWQgOiAxOworI2VuZGlmCis9PT09PT09CiAg
ICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBtX2ludGVy
YWN0aXZlRm9ybVZhbGlkYXRpb246IDE7Cis+Pj4+Pj4+IC5yNjQxODUKICAgICAKICNpZiBVU0Uo
U0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hvdWxkUGFpbnROYXRpdmVDb250
cm9sczsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJ
KHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNyArNzc2LDEwIEBAIFBhc3NSZWZQdHI8TWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlm
IChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1l
ZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVu
dCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5leGl0RnVs
bHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50
ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAg
IH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKSW5k
ZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAko
cmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNv
bnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIGVudW0gUHNldWRvSWQg
ewogICAgIE1FVEVSX0hPUklaT05UQUxfQkFSLCBNRVRFUl9IT1JJWk9OVEFMX09QVElNVU0sIE1F
VEVSX0hPUklaT05UQUxfU1VCT1BUSU1BTCwgTUVURVJfSE9SSVpPTlRBTF9FVkVOX0xFU1NfR09P
RCwKICAgICBNRVRFUl9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZFUlRJQ0FMX09QVElNVU0sIE1FVEVS
X1ZFUlRJQ0FMX1NVQk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FMX0VWRU5fTEVTU19HT09ELCAKICAg
ICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAorICAgIEZVTExfU0NSRUVOLCBGVUxMX1ND
UkVFTl9ET0MsIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQsCiAgICAgRklSU1RfUFVCTElD
X1BTRVVET0lEID0gRklSU1RfTElORSwKICAgICBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCA9IEZJ
TEVfVVBMT0FEX0JVVFRPTiwKICAgICBQVUJMSUNfUFNFVURPSURfTUFTSyA9ICgoMSA8PCBGSVJT
VF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwgRklSU1RfUFVCTElDX1BTRVVET0lE
KSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62785</attachid>
            <date>2010-07-27 19:12:52 -0700</date>
            <delta_ts>2010-08-09 15:27:57 -0700</delta_ts>
            <desc>FullScreen-WebKit</desc>
            <filename>FullScreen-WebKit.patch</filename>
            <type>text/plain</type>
            <size>12755</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2NyZWVu
LgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAgQWRkZWQgY2hyb21l
IGNsaWVudCBvdmVycmlkZXMgd2hpY2ggc3VwcG9ydCBlbnRlcmluZyBhbmQgZXhpdGluZyBmdWxs
IHNjcmVlbi4gIEEgbmV3IHByZWZlcmVuY2UgaGFzCisgICAgICAgIGJlZW4gYWRkZWQgKHNldEZ1
bGxTY3JlZW5FbmFibGVkOikgdG8gY29udHJvbCBhdCBydW50aW1lIHdoZXRoZXIgZnVsbCBzY3Jl
ZW4gc3VwcG9ydCBpcyBlbmFibGVkIAorICAgICAgICAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiAg
QWRkZWQgYSBuZXcgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGNhbGxiYWNrIG9iamVjdCB3aGlj
aCBub3RpZmllcyBXZWJDb3JlCisgICAgICAgIHdoZW4gdGhlIGNocm9tZSBoYXMgc3RhcnRlZC9m
aW5pc2hlZCBpdHMgZnVsbCBzY3JlZW4gYW5pbWF0aW9uLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVu
dCk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBpbml0V2l0aEVsZW1lbnQ6
XSk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciB3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuXSk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciB3ZWJraXRE
aWRFbnRlckZ1bGxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVy
IHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbl0pOgorICAgICAgICAoLVtXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tX
ZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNl
dEZ1bGxTY3JlZW5FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBmdWxsU2Ny
ZWVuRW5hYmxlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZl
cmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKwogMjAxMC0wNy0yNyAgU3RldmUgQmxvY2sg
IDxzdGV2ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2Nv
bmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYktpdC9tYWMvQ29uZmlndXJhdGlv
bnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcg
QEAgRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNFOwogRU5BQkxFX0ZJTFRF
UlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JF
QURFUjsKIEVOQUJMRV9GSUxFX1dSSVRFUiA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOID0gRU5BQkxF
X0ZVTExTQ1JFRU47CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiBF
TkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9JTUFHRV9S
RVNJWkVSID0gOwpAQCAtODUsNCArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9Y
UEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykg
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxF
X0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChF
TkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NB
VElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVO
QUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pB
VkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAk
KEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMp
ICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkg
JChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1B
VElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElO
R1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVO
QUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5B
QkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVf
WEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FH
SU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNF
KSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9P
UklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JB
R0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxF
X1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZVTExTQ1JFRU4pICQoRU5B
QkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JF
U0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkg
JChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9N
RVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQ
UExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJM
RV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJM
RV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01f
T0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9P
QkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09D
S0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJT
KSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4
OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9u
IDY0MTg1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTU4LDEwICsxNTgsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzY2hlZHVsZUNvbXBvc2l0aW5nTGF5ZXJTeW5jKCk7CiAjZW5kaWYKIAotI2lmIEVOQUJM
RShWSURFTykKLSAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25z
dCBXZWJDb3JlOjpOb2RlKik7Ci0gICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5v
ZGUoV2ViQ29yZTo6Tm9kZSopOwotICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5v
ZGUoV2ViQ29yZTo6Tm9kZSopOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpF
bGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChXZWJD
b3JlOjpFbGVtZW50Kik7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9j
YXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2Nh
dGlvbiopOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0JKHJldmlzaW9uIDY0MTg1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwNSw2ICsxMDUsMTYgQEAgQGludGVy
ZmFjZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIAogLSAoaWQpaW5pdFdpdGhHZW9sb2Nh
dGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uOwogQGVuZAogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCitAaW50ZXJmYWNlIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciA6IE5TT2JqZWN0IDxX
ZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI+Cit7CisgICAgUmVmUHRyPEVsZW1lbnQ+IF9lbGVtZW50
OworfQorCistIChpZClpbml0V2l0aEVsZW1lbnQ6KEVsZW1lbnQqKWVsZW1lbnQ7CitAZW5kCisj
ZW5kaWYKKwogV2ViQ2hyb21lQ2xpZW50OjpXZWJDaHJvbWVDbGllbnQoV2ViVmlldyAqd2ViVmll
dykgCiAgICAgOiBtX3dlYlZpZXcod2ViVmlldykKIHsKQEAgLTc2MSwyNSArNzcxLDI1IEBAIHZv
aWQgV2ViQ2hyb21lQ2xpZW50OjpzY2hlZHVsZUNvbXBvc2l0aW4KIAogI2VuZGlmCiAKLSNpZiBF
TkFCTEUoVklERU8pCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCiAKLWJvb2wgV2ViQ2hyb21lQ2xp
ZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqIG5vZGUpCitib29sIFdl
YkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50
KiBlbGVtZW50KQogewotICAgIHJldHVybiBub2RlLT5oYXNUYWdOYW1lKFdlYkNvcmU6OkhUTUxO
YW1lczo6dmlkZW9UYWcpOworICAgIHJldHVybiBDYWxsVUlEZWxlZ2F0ZVJldHVybmluZ0Jvb2xl
YW4oZmFsc2UsIG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6c3VwcG9ydHNGdWxsc2NyZWVu
Rm9yRWxlbWVudDopLCBraXQoY29uc3RfY2FzdDxXZWJDb3JlOjpFbGVtZW50Kj4oZWxlbWVudCkp
KTsKIH0KIAotdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9k
ZSogbm9kZSkKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwot
ICAgIFttX3dlYlZpZXcgX2VudGVyRnVsbHNjcmVlbkZvck5vZGU6bm9kZV07Ci0gICAgRU5EX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKKyAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIqIGxpc3Rl
bmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDpl
bGVtZW50XTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3
OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQ6bGlzdGVuZXI6KSwga2l0KGVsZW1lbnQpLCBsaXN0
ZW5lcik7CisgICAgW2xpc3RlbmVyIHJlbGVhc2VdOwogfQogCi12b2lkIFdlYkNocm9tZUNsaWVu
dDo6ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKQordm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4
aXRGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQogewotICAgIEJFR0lOX0JM
T0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBbbV93ZWJWaWV3IF9leGl0RnVsbHNjcmVlbl07Ci0g
ICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsgICAgCisgICAgV2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyKiBsaXN0ZW5lciA9IFtbV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFsbG9jXSBpbml0
V2l0aEVsZW1lbnQ6ZWxlbWVudF07CisgICAgQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBAc2Vs
ZWN0b3Iod2ViVmlldzpleGl0RnVsbHNjcmVlbkZvckVsZW1lbnQ6bGlzdGVuZXI6KSwga2l0KGVs
ZW1lbnQpLCBsaXN0ZW5lcik7CisgICAgW2xpc3RlbmVyIHJlbGVhc2VdOwogfQogCiAjZW5kaWYK
QEAgLTg4OCwzICs4OTgsNDEgQEAgLSAodm9pZClkZW55CiB9CiAKIEBlbmQKKworI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorQGltcGxlbWVudGF0aW9uIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lcgor
LSAoaWQpaW5pdFdpdGhFbGVtZW50OihFbGVtZW50KillbGVtZW50Cit7CisgICAgaWYgKCEoc2Vs
ZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisgICAgX2VsZW1l
bnQgPSBlbGVtZW50OworICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXdlYmtpdFdpbGxF
bnRlckZ1bGxTY3JlZW4KK3sKKyAgICBpZiAoX2VsZW1lbnQpCisgICAgICAgIF9lbGVtZW50LT5k
b2N1bWVudCgpLT53ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChfZWxlbWVudC5n
ZXQoKSk7Cit9CisKKy0gKHZvaWQpd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuCit7CisgICAgaWYg
KF9lbGVtZW50KQorICAgICAgICBfZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChfZWxlbWVudC5nZXQoKSk7Cit9CisKKy0gKHZvaWQpd2Via2l0
V2lsbEV4aXRGdWxsU2NyZWVuCit7CisgICAgaWYgKF9lbGVtZW50KQorICAgICAgICBfZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChfZWxlbWVu
dC5nZXQoKSk7Cit9CisKKy0gKHZvaWQpd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW4KK3sKKyAgICBp
ZiAoX2VsZW1lbnQpCisgICAgICAgIF9lbGVtZW50LT5kb2N1bWVudCgpLT53ZWJraXREaWRFeGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQoX2VsZW1lbnQuZ2V0KCkpOworfQorCitAZW5kCisjZW5kaWYK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJ
KHJldmlzaW9uIDY0MTg1KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlz
UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBACiAjZGVmaW5lIFdlYktp
dEhUTUw1VHJlZUJ1aWxkZXJFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEhUTUw1VHJlZUJ1
aWxkZXJFbmFibGVkIiAvLyBUZW1wb3JhcnksIGRvIG5vdCB1c2UuCiAjZGVmaW5lIFdlYktpdFBh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRQYWdpbmF0ZUR1
cmluZ0xheW91dEVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdEROU1ByZWZldGNoaW5nRW5hYmxlZFBy
ZWZlcmVuY2VLZXkgQCJXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWQiCisjZGVmaW5lIFdlYktp
dEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdEZ1bGxTY3JlZW5FbmFibGVk
IgogI2RlZmluZSBXZWJLaXRNZW1vcnlJbmZvRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRN
ZW1vcnlJbmZvRW5hYmxlZCIKIAogLy8gVGhlc2UgYXJlIHByaXZhdGUgYm90aCBiZWNhdXNlIGNh
bGxlcnMgc2hvdWxkIGJlIHVzaW5nIHRoZSBjb3ZlciBtZXRob2RzIGFuZCBiZWNhdXNlIHRoZQpJ
bmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgJKHJldmlzaW9uIDY0MTg1KQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTQz
Nyw2ICs0MzcsMjggQEAgY2FjaGluZyBiZWhhdmlvci4KICovCiAtIChXZWJDYWNoZU1vZGVsKWNh
Y2hlTW9kZWw7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKy8qIQorIEBtZXRob2Qgc2V0RnVs
bFNjcmVlbkVuYWJsZWQ6CisgCisgQGFic3RyYWN0CisgCisgQHBhcmFtIAorIAorIEBkaXNjdXNz
aW9uCisgKi8KKy0gKHZvaWQpc2V0RnVsbFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZzsKKworLyoh
CisgQG1ldGhvZCBmdWxsU2NyZWVuRW5hYmxlZDoKKyAKKyBAYWJzdHJhY3QKKyAKKyBAcmVzdWx0
CisgKi8KKy0gKEJPT0wpZnVsbFNjcmVlbkVuYWJsZWQ7CisjZW5kaWYKKwogQGVuZAogCiAjdW5k
ZWYgV2ViTlNVSW50ZWdlcgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5tbQko
cmV2aXNpb24gNjQxODUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTM2Myw2ICszNjMsOSBAQCArICh2b2lkKWluaXRpYWxpemUKICAg
ICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRIVE1MNVBhcnNlckVu
YWJsZWRQcmVmZXJlbmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9d
LCAgIFdlYktpdEhUTUw1VHJlZUJ1aWxkZXJFbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAg
W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10sICBXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJs
ZWRQcmVmZXJlbmNlS2V5LAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICBbTlNOdW1i
ZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5j
ZUtleSwKKyNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdl
YktpdE1lbW9yeUluZm9FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgbmlsXTsKIApAQCAt
NzU0LDYgKzc1NywxOCBAQCAtIChXZWJDYWNoZU1vZGVsKWNhY2hlTW9kZWwKICAgICByZXR1cm4g
W3NlbGYgX2ludGVnZXJWYWx1ZUZvcktleTpXZWJLaXRDYWNoZU1vZGVsUHJlZmVyZW5jZUtleV07
CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKy0gKHZvaWQpc2V0RnVsbFNjcmVlbkVuYWJs
ZWQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6ZmxhZyBmb3JLZXk6V2Vi
S2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAoQk9PTClmdWxsU2Ny
ZWVuRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9yS2V5OldlYktpdEZ1
bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisjZW5kaWYKKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJL
aXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
OTUsNiArOTUsMTUgQEAgZW51bSB7IAogLSAodm9pZClkZW55OwogQGVuZAogCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU4pCitAcHJvdG9jb2wgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPE5TT2JqZWN0
PgorLSAodm9pZCl3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuOworLSAodm9pZCl3ZWJraXREaWRF
bnRlckZ1bGxTY3JlZW47CistICh2b2lkKXdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbjsKKy0gKHZv
aWQpd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW47CitAZW5kCisjZW5kaWYKKwogQGludGVyZmFjZSBO
U09iamVjdCAoV2ViVUlEZWxlZ2F0ZVByaXZhdGUpCiAKIC0gKHZvaWQpd2ViVmlldzooV2ViVmll
dyAqKXdlYlZpZXcgYWRkTWVzc2FnZVRvQ29uc29sZTooTlNEaWN0aW9uYXJ5ICopbWVzc2FnZTsK
QEAgLTE1NCw0ICsxNjMsMTAgQEAgQGludGVyZmFjZSBOU09iamVjdCAoV2ViVUlEZWxlZ2F0ZVBy
aXZhdAogKi8KIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBwcmludEZyYW1lOihX
ZWJGcmFtZSAqKWZyYW1lOwogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCistIChCT09MKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgc3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudDooRE9NRWxl
bWVudCAqKWVsZW1lbnQ7CistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZW50ZXJG
dWxsc2NyZWVuRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CistICh2b2lkKXdlYlZp
ZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50
ICopZWxlbWVudDsKKyNlbmRpZgorCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2
aXNpb24gNjQxODUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTQzNCw2ICsxNDM0LDkgQEAgLSAodm9pZClfcHJlZmVyZW5jZXNDaGFuZ2VkTm90
aWZpY2F0aW9uOgogICAgIHNldHRpbmdzLT5zZXRIVE1MNVBhcnNlckVuYWJsZWQoW3ByZWZlcmVu
Y2VzIGh0bWw1UGFyc2VyRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRIVE1MNVRyZWVCdWls
ZGVyRW5hYmxlZF9ET19OT1RfVVNFKFtwcmVmZXJlbmNlcyBodG1sNVRyZWVCdWlsZGVyRW5hYmxl
ZF0pOwogICAgIHNldHRpbmdzLT5zZXRQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoW3ByZWZl
cmVuY2VzIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZF0pOworI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgIHNldHRpbmdzLT5zZXRGdWxsU2NyZWVuRW5hYmxlZChbcHJlZmVyZW5jZXMgZnVs
bFNjcmVlbkVuYWJsZWRdKTsKKyNlbmRpZgogICAgIHNldHRpbmdzLT5zZXRNZW1vcnlJbmZvRW5h
YmxlZChbcHJlZmVyZW5jZXMgbWVtb3J5SW5mb0VuYWJsZWRdKTsKIH0KIAo=
</data>
<flag name="review"
          id="51031"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62786</attachid>
            <date>2010-07-27 19:13:33 -0700</date>
            <delta_ts>2010-08-09 15:30:01 -0700</delta_ts>
            <desc>FullScreen-WebKitTools</desc>
            <filename>FullScreen-WebKitTools.patch</filename>
            <type>text/plain</type>
            <size>3093</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2Ny
ZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisgICAgICAgIAorICAgICAgICBB
ZGRlZCBiYXNpYyBmdWxsIHNjcmVlbiBzdXBwb3J0IHRvIER1bXBSZW5kZXJUcmVlOiB3aGVuIGEg
d2ViVmlldyByZXF1ZXN0cworICAgICAgICB0aGF0IER1bXBSZW5kZXJUcmVlIGdvICJmdWxsIHNj
cmVlbiIsIGp1c3QgY2FsbCB0aGUgcHJvdmlkZWQgY2FsbGJhY2sgbGlzdGVuZXIgb2JqZWN0J3MK
KyAgICAgICAgd2lsbC9kaWQgRW50ZXIvRXhpdCBmdWxsIHNjcmVlbiBtZXRob2RzLiAgQWxzbywg
cmVnaXN0ZXIgYSBuZXcgdXNlciBkZWZhdWx0IHdoaWNoIAorICAgICAgICBlbmFibGVzIGZ1bGwg
c2NyZWVuIHN1cHBvcnQuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRl
clRyZWUubW06CisgICAgICAgIChyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVUlE
ZWxlZ2F0ZSB3ZWJWaWV3OnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQ6XSk6CisgICAgICAg
ICgtW1VJRGVsZWdhdGUgd2ViVmlldzplbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50Omxpc3RlbmVy
Ol0pOgorICAgICAgICAoLVtVSURlbGVnYXRlIHdlYlZpZXc6ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVt
ZW50Omxpc3RlbmVyOl0pOgorCiAyMDEwLTA3LTI3ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9iaW5z
b25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9EdW1wUmVuZGVyVHJlZS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvRHVtcFJlbmRlclRyZWUubW0J
KHJldmlzaW9uIDY0MTg1KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0R1bXBS
ZW5kZXJUcmVlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTEsNiArMzkxLDcgQEAgc3RhdGljIHZv
aWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbAogICAgIFtkZWZhdWx0cyBzZXRPYmplY3Q6
QCIwLjUwMDAwMCAwLjUwMDAwMCAwLjUwMDAwMCIgZm9yS2V5OkAiQXBwbGVPdGhlckhpZ2hsaWdo
dENvbG9yIl07CiAgICAgW2RlZmF1bHRzIHNldE9iamVjdDpbTlNBcnJheSBhcnJheVdpdGhPYmpl
Y3Q6QCJlbiJdIGZvcktleTpAIkFwcGxlTGFuZ3VhZ2VzIl07CiAgICAgW2RlZmF1bHRzIHNldEJv
b2w6WUVTIGZvcktleTpXZWJLaXRFbmFibGVGdWxsRG9jdW1lbnRUZWFyZG93blByZWZlcmVuY2VL
ZXldOworICAgIFtkZWZhdWx0cyBzZXRCb29sOllFUyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVu
YWJsZWRQcmVmZXJlbmNlS2V5XTsKIAogICAgIC8vIFNjcm9sbGJhcnMgYXJlIGRyYXduIGVpdGhl
ciB1c2luZyBBcHBLaXQgKHdoaWNoIHVzZXMgTlNVc2VyRGVmYXVsdHMpIG9yIHVzaW5nIEhJVG9v
bGJveCAod2hpY2ggdXNlcyBDRlByZWZlcmVuY2VzIC8ga0NGUHJlZmVyZW5jZXNBbnlBcHBsaWNh
dGlvbiAvIGtDRlByZWZlcmVuY2VzQ3VycmVudFVzZXIgLyBrQ0ZQcmVmZXJlbmNlc0FueUhvc3Qp
CiAgICAgW2RlZmF1bHRzIHNldE9iamVjdDpAIkRvdWJsZU1heCIgZm9yS2V5OkAiQXBwbGVTY3Jv
bGxCYXJWYXJpYW50Il07CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvVUlE
ZWxlZ2F0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMv
VUlEZWxlZ2F0ZS5tbQkocmV2aXNpb24gNjQxODUpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9tYWMvVUlEZWxlZ2F0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtMTgzLDYgKzE4MywyMyBA
QCAtIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc2hvdWxkCiAgICAgcmV0dXJuIE5P
OwogfQogCistIChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKil3diBzdXBwb3J0c0Z1bGxzY3JlZW5G
b3JFbGVtZW50OihET01FbGVtZW50KillbGVtZW50Cit7CisgICAgcmV0dXJuIFlFUzsKK30KKwor
LSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopd3YgZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudDoo
RE9NRWxlbWVudCopZWxlbWVudCBsaXN0ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxp
c3RlbmVyPiopbGlzdGVuZXIKK3sKKyAgICBbbGlzdGVuZXIgd2Via2l0V2lsbEVudGVyRnVsbFNj
cmVlbl07CisgICAgW2xpc3RlbmVyIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbl07Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXd2IGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudDooRE9N
RWxlbWVudCopZWxlbWVudCBsaXN0ZW5lcjooTlNPYmplY3Q8V2ViS2l0RnVsbFNjcmVlbkxpc3Rl
bmVyPiopbGlzdGVuZXIKK3sKKyAgICBbbGlzdGVuZXIgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVu
XTsKKyAgICBbbGlzdGVuZXIgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5dOworfQorCiAtIChCT09M
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGRpZFByZXNzTWlzc2luZ1BsdWdpbkJ1dHRvbjoo
RE9NRWxlbWVudCAqKWVsZW1lbnQKIHsKICAgICBwcmludGYoIk1JU1NJTkcgUExVR0lOIEJVVFRP
TiBQUkVTU0VEXG4iKTsK
</data>
<flag name="review"
          id="51033"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62787</attachid>
            <date>2010-07-27 19:14:01 -0700</date>
            <delta_ts>2010-08-03 11:35:21 -0700</delta_ts>
            <desc>FullScreen-LayoutTests</desc>
            <filename>FullScreen-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>12609</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0MTg1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2Ny
ZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAgVGVzdHMgdGhl
IG5ldyBmdWxsIHNjcmVlbiBBUEk6CisgICAgICAgIAorICAgICAgICBmdWxsLXNjcmVlbi1hcGku
aHRtbDogdGVzdHMgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGFwaXMu
CisgICAgICAgIGZ1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbDogdGVzdHMgdGhhdCBjbGllbnRzIGNh
biByZXF1ZXN0IHRoZSBicm93c2VyIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUgc3VjY2Vzc2Z1bGx5
LgorICAgICAgICBmdWxsLXNjcmVlbi1jc3MuaHRtbDogdGVzdHMgdGhhdCB0aGUgbmV3IGZ1bGwg
c2NyZWVuIHBzZXVkbyBjbGFzc2VzIGFyZSBhcHBsaWVkIG9uY2UgZnVsbCBzY3JlZW4gbW9kZSBp
cyBlbnRlcmVkLgorCisgICAgICAgICogZnVsbHNjcmVlbjogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoZGlzYWJsZUZ1bGxUZXN0
RGV0YWlsc1ByaW50aW5nKToKKyAgICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEFu
ZEVuZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAgICAg
IChyZXBvcnRFeHBlY3RlZCk6CisgICAgICAgIChydW5TaWxlbnRseSk6CisgICAgICAgIChydW4p
OgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5f
ZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZv
ckV2ZW50VGVzdEFuZEVuZCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRGYWlsKToKKyAgICAg
ICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZv
ckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh0ZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKGVuZFRl
c3QpOgorICAgICAgICAoZW5kVGVzdExhdGVyKToKKyAgICAgICAgKGZhaWxUZXN0SW4pOgorICAg
ICAgICAoZmFpbFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAgKGNvbnNvbGVX
cml0ZSk6CisgICAgICAgIChyZWxhdGl2ZVVSTCk6CisgICAgICAgIChpc0luVGltZVJhbmdlcyk6
CisKIDIwMTAtMDctMjcgIEFuZHJldyBTY2hlcmt1cyAgPHNjaGVya3VzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLgpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMyBAQAorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdElzRnVsbFNjcmVl
biA9PSAnZmFsc2UnKSBPSworRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuICE9ICd1bmRlZmluZWQnKSBPSworRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMgIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQu
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEIChkb2N1
bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ251bGwnKSBPSworRVhQRUNU
RUQgKGRvY3VtZW50Lm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA9PSAnbnVsbCcpIE9LCitFWFBF
Q1RFRCAoc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VY
UEVDVEVEIChzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMgIT0gJ3VuZGVmaW5l
ZCcpIE9LCitFWFBFQ1RFRCAoc3Bhbi5vbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgIT0gJ251bGwn
KSBPSworRVhQRUNURUQgKGlmcmFtZS53ZWJraXRBbGxvd0Z1bGxTY3JlZW4gPT0gJ3RydWUnKSBP
SworRVhQRUNURUQgKGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
Jyk7ICE9ICdudWxsJykgT0sKK0VORCBPRiBURVNUCisgCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDIyIEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+
Cis8c3BhbiBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U9ImNvbnNvbGUud3JpdGUoJ3JlYWNoZWQn
KTsiPjwvc3Bhbj4KKzxpZnJhbWUgd2Via2l0QWxsb3dGdWxsU2NyZWVuPSJ0cnVlIj48L2lmcmFt
ZT4KKzxzY3JpcHQ+CisgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz
cGFuJylbMF07CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRJc0Z1bGxTY3JlZW4iLCBm
YWxzZSk7CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIs
IHVuZGVmaW5lZCwgIiE9Iik7CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbldpdGhLZXlzIiwgdW5kZWZpbmVkLCAiIT0iKTsKKwl0ZXN0RXhwZWN0ZWQoImRv
Y3VtZW50LndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iLCB1bmRlZmluZWQsICIhPSIpOworCXRlc3RF
eHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgbnVsbCk7
CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5vbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCBudWxs
KQorCXRlc3RFeHBlY3RlZCgic3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIsIHVuZGVmaW5l
ZCwgIiE9Iik7CisJdGVzdEV4cGVjdGVkKCJzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0
aEtleXMiLCB1bmRlZmluZWQsICIhPSIpOworCXRlc3RFeHBlY3RlZCgic3Bhbi5vbndlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UiLCBudWxsLCAiIT0iKQorCQorCWlmcmFtZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCdpZnJhbWUnKVswXTsKKwl0ZXN0RXhwZWN0ZWQoImlmcmFtZS53ZWJr
aXRBbGxvd0Z1bGxTY3JlZW4iLCJ0cnVlIik7CisJCisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5j
cmVhdGVFdmVudCgnV2ViS2l0RnVsbFNjcmVlbkNoYW5nZScpOyIsIG51bGwsICIhPSIpCisJZW5k
VGVzdCgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLWNzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDcgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAo
ZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2JqZWN0IEhUTUxF
bGVtZW50XScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0g
J3JnYigwLCAyNTUsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICdyZ2IoMjU1LCAwLCAwKScpIE9LCitFWFBFQ1RF
RCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgPT0gJ3JnYigwLCAwLCAy
NTUpJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tY3NzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1jc3MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxi
b2R5PgorPHNjcmlwdCBzcmM9ZnVsbC1zY3JlZW4tdGVzdC5qcz48L3NjcmlwdD4KKzxzdHlsZT4K
KyAgICA6LXdlYmtpdC1mdWxsLXNjcmVlbiB7IGJhY2tncm91bmQ6IGxpbWU7IH0KKyAgICA6LXdl
YmtpdC1mdWxsLXNjcmVlbi1kb2MgeyBjb2xvcjogYmx1ZTsgfQorICAgIDotd2Via2l0LWZ1bGwt
c2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8
c3Bhbj48L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICB2YXIgdGVzdENTUyA9IGZ1bmN0aW9uKGV2ZW50
KSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50IixzcGFuKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0
Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tn
cm91bmQtY29sb3InKSIsICJyZ2IoMCwgMjU1LCAwKSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAicmdi
KDI1NSwgMCwgMCkiKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnY29sb3InKSIsICJyZ2IoMCwgMCwgMjU1KSIpOworICAgICAgICBlbmRUZXN0
KCk7CisgICAgfTsKKyAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlJywgdGVzdENTUyk7CisgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOwor
PC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDMgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpIFRFU1QoZG9j
dW1lbnQud2Via2l0SXNGdWxsU2NyZWVuPT10cnVlKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDog
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3Qu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPWZ1
bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHdhaXRGb3JFdmVudFRl
c3RBbmRFbmQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgImRvY3VtZW50Lndl
YmtpdElzRnVsbFNjcmVlbj09dHJ1ZSIpOworICAgIGlmIChkb2N1bWVudC53ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICBkb2N1bWVu
dC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDIyMCBAQAorCit2YXIgY29uc29sZSA9IG51bGw7Cit2YXIgcHJpbnRGdWxsVGVzdERldGFp
bHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlvbmFseSBzd2l0Y2hlZCBvZiBieSB0ZXN0IHdob3Nl
IHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4gKHNlZSBkaXNhYmxlRnVsbFRlc3REZXRhaWxzUHJp
bnRpbmcoKSkKK3ZhciBGYWlsZWQgPSBmYWxzZTsKKworbG9nQ29uc29sZSgpOworCitpZiAod2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30K
KworZnVuY3Rpb24gZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5nKCkKK3sKKyAgICBwcmlu
dEZ1bGxUZXN0RGV0YWlscyA9IGZhbHNlOworfQorCitmdW5jdGlvbiBsb2dDb25zb2xlKCkKK3sK
KyAgICBpZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQuYm9keSkgeworICAgICAgICBjb25zb2xlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoY29uc29sZSk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xlOworfQorCitmdW5j
dGlvbiB0ZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHRlc3QodGVzdEZ1bmNTdHJp
bmcsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0KHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKK3sK
KyAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJURVNUKCIgKyB0ZXN0RnVuY1N0
cmluZyArICIpIik7CisgICAgaWYgKGVuZGl0KQorICAgICAgICBlbmRUZXN0KCk7ICAKK30KKwor
ZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCwgY29tcGFyaXNv
bikKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBldmFsKHRlc3RGdW5jU3Ry
aW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBjb25zb2xlV3JpdGUoZXgpOworICAg
ICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChjb21wYXJpc29uID09PSB1bmRlZmlu
ZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAgdmFyIHN1Y2Nlc3MgPSBmYWxz
ZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAgICAgICBjYXNlICc8JzogICBz
dWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8PSc6
IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz4n
OiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2Ug
Jz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2Fz
ZSAnIT0nOiAgc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAg
Y2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgIH0K
KyAgICAKKyAgICByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFy
aXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVkKQorfQorCit2YXIgdGVzdE51bWJlciA9IDA7CisKK2Z1
bmN0aW9uIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJpc29u
LCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit7CisgICAgdGVzdE51bWJlcisrOworCisgICAgdmFyIG1z
ZyA9ICJUZXN0ICIgKyB0ZXN0TnVtYmVyOworCisgICAgaWYgKHByaW50RnVsbFRlc3REZXRhaWxz
IHx8ICFzdWNjZXNzKQorICAgICAgICBtc2cgPSAiRVhQRUNURUQgKDxlbT4iICsgdGVzdEZ1bmNT
dHJpbmcgKyAiIDwvZW0+IiArIGNvbXBhcmlzb24gKyAiICc8ZW0+IiArIGV4cGVjdGVkICsgIjwv
ZW0+JykiOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBtc2cgKz0gICIsIE9CU0VSVkVE
ICc8ZW0+IiArIG9ic2VydmVkICsgIjwvZW0+JyI7CisKKyAgICBsb2dSZXN1bHQoc3VjY2Vzcywg
bXNnKTsKK30KKworZnVuY3Rpb24gcnVuU2lsZW50bHkodGVzdEZ1bmNTdHJpbmcpCit7CisgICAg
aWYgKHByaW50RnVsbFRlc3REZXRhaWxzKQorICAgICAgICBjb25zb2xlV3JpdGUoIlJVTigiICsg
dGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdEZ1bmNT
dHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGlmICghcHJpbnRGdWxsVGVzdERl
dGFpbHMpIHsKKyAgICAgICAgICAgIC8vIE5vIGRldGFpbHMgd2VyZSBwcmludGVkIHByZXZpb3Vz
LCBnaXZlIHNvbWUgbm93LgorICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGhlbHBmdWwgaW4g
Y2FzZSBvZiBlcnJvci4KKyAgICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICJFcnJvciBpbiBS
VU4oIiArIHRlc3RGdW5jU3RyaW5nICsgIik6Iik7CisgICAgICAgIH0KKyAgICAgICAgbG9nUmVz
dWx0KEZhaWxlZCwgIjxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPiIrZXgrIjwvc3Bhbj4iKTsKKyAg
ICB9Cit9CisKK2Z1bmN0aW9uIHJ1bih0ZXN0RnVuY1N0cmluZykKK3sKKyAgICBjb25zb2xlV3Jp
dGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAgIGV2
YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVX
cml0ZShleCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZWxlbWVu
dCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVudChlbGVtZW50LCBl
dmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudChl
bGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVudENh
bGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZl
bnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAgICAgIGZ1bmMoZXZl
bnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgZW5kVGVzdCgp
OyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBf
ZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZWxl
bWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnRBbmRU
ZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUpOworfQorCitmdW5j
dGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGVsZW1lbnQsIGV2ZW50TmFtZSkKK3sKKyAgICB3YWl0
Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgImZhbHNlIiwgdHJ1ZSk7Cit9CisK
K2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVu
Y1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisg
ICAgeworICAgICAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgiICsg
ZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAgICBp
ZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAgICBl
bGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisK
K2Z1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9uU3RyaW5nKQorewor
ICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdFN0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsg
CisgICAgICAgIGxvZ1Jlc3VsdChleC5jb2RlID09IGV2YWwoZXhjZXB0aW9uU3RyaW5nKSwgIlRF
U1QoIiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJpbmcrIikiKTsKKyAg
ICB9Cit9CisKK3ZhciB0ZXN0RW5kZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gZW5kVGVzdCgpCit7
CisgICAgY29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOworICAgIHRlc3RFbmRlZCA9IHRydWU7
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVz
dENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCit9CisKK2Z1bmN0aW9uIGVuZFRlc3RMYXRl
cigpCit7CisgICAgc2V0VGltZW91dChlbmRUZXN0LCAyNTApOworfQorCitmdW5jdGlvbiBmYWls
VGVzdEluKG1zKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBjb25z
b2xlV3JpdGUoIkZBSUw6IGRpZCBub3QgZW5kIGZhc3QgZW5vdWdoIik7CisgICAgICAgIGVuZFRl
c3QoKTsKKyAgICB9LCBtcyk7Cit9CisKK2Z1bmN0aW9uIGZhaWxUZXN0KHRleHQpCit7CisgICAg
bG9nUmVzdWx0KEZhaWxlZCwgdGV4dCk7CisgICAgZW5kVGVzdCgpOworfQorCisKK2Z1bmN0aW9u
IGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQoreworICAgIGlmIChzdWNjZXNzKQorICAgICAgICBj
b25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4i
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0n
Y29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQorCitmdW5jdGlvbiBjb25zb2xlV3JpdGUodGV4
dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgbG9nQ29uc29s
ZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworfQorCitmdW5jdGlvbiByZWxhdGl2ZVVS
TCh1cmwpCit7CisgICAgcmV0dXJuIHVybC5zdWJzdHIodXJsLmluZGV4T2YoJy9tZWRpYS8nKSs3
KTsKK30KKworCitmdW5jdGlvbiBpc0luVGltZVJhbmdlcyhyYW5nZXMsIHRpbWUpCit7CisgICAg
dmFyIGkgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgaWYgKHRpbWUgPj0gcmFuZ2VzLnN0YXJ0KGkpICYmIHRpbWUgPD0gcmFuZ2VzLmVuZChp
KSkgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVy
biBmYWxzZTsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62793</attachid>
            <date>2010-07-27 20:36:21 -0700</date>
            <delta_ts>2010-07-28 00:09:20 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>63466</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQxIEBACisyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBKYXZhU2NyaXB0IEFQSSB0byBhbGxvdyBhIHBhZ2UgdG8gZ28gZnVsbHNjcmVlbi4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjg2Nzc5NQorICAgICAgICAKKyAgICAgICAgTW96aWxsYSBoYXMg
cHJvcG9zZWQgYSBuZXcgc2V0IG9mIEphdmFTY3JpcHQgQVBJcyB3aGljaCBhbGxvdyBhbnkgZWxl
bWVudCBpbgorICAgICAgICBhIGRvY3VtZW50IHRvIGdvIGZ1bGwtc2NyZWVuLiAgVGhlIGN1cnJl
bnQgcmV2aXNpb24gb2YgdGhlaXIgcHJvcG9zYWwgY2FuIGJlIAorICAgICAgICBmb3VuZCBoZXJl
OgorICAgICAgICA8aHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL2luZGV4LnBocD90aXRsZT1HZWNr
bzpGdWxsU2NyZWVuQVBJJm9sZGlkPTIzNTYwMT4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9w
b3NlZCBzcGVjaWZpY2F0aW9uIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAg
ICAgICBEb2N1bWVudDoKKyAgICAgICAgLSBUaHJlZSBuZXcgbWV0aG9kcyBvbiBEb2N1bWVudDoK
KyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCisgICAgICAgICAgICArIHZvaWQgY2FuY2Vs
RnVsbFNjcmVlbigpCisgICAgICAgIC0gVGhyZWUgbmV3IGF0dHJpYnV0ZXMgb2YgRG9jdW1lbnQ6
CisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW4KKyAg
ICAgICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbldpdGhLZXlz
CisgICAgICAgICAgICArIChvcHRpb25hbCkgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgY3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50CisgICAgICAgICAgICAKKyAgICAgICAgRWxlbWVudDoKKyAg
ICAgICAgLSBUd28gbmV3IG1ldGhvZHMgb24gRWxlbWVudDoKKyAgICAgICAgICAgICsgdm9pZCBy
ZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpCisgICAgICAgIAorICAgICAgICBIVE1MSUZyYW1lRWxlbWVudDoKKyAgICAgICAg
LSBPbmUgbmV3IGNvbnRlbnQgYXR0cmlidXRlOgorICAgICAgICAgICAgKyBhbGxvd0Z1bGxTY3Jl
ZW4KKyAgICAgICAgICAgIAorICAgICAgICBFdmVudHM6CisgICAgICAgIC0gT25lIG5ldyBldmVu
dDoKKyAgICAgICAgICAgICsgZnVsbFNjcmVlbkNoYW5nZQorICAgICAgICAKKyAgICAgICAgQ1NT
IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAtIFRocmVlIG5ldyBQc2V1ZG8tY2xhc3NlczoKKyAg
ICAgICAgICAgICsgOmZ1bGwtc2NyZWVuCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1kb2MK
KyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQKKyAgICAgICAgCisg
ICAgICAgIEZvciBXZWJLaXQncyBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbGwgdGhlIGFib3Zl
IG5ldyBBUElzIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAKKyAgICAgICAgIndlYmtpdCIgb3IgIi13
ZWJraXQiIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RzOgor
ICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCisgICAg
ICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwKKyAgICAgICAg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKKworICAgICAg
ICBQcm9qZWN0IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzogQWRkZWQgYW4gRU5BQkxFX0ZVTExTQ1JFRU4gZW50cnkuCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3Nz
IGFuZCBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVl
bi5leHA6IEFkZGVkIGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5j
dGlvbnMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcg
c291cmNlIGZpbGVzIGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2Vz
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4g
QVBJIHRvIHRoZSBEb2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1l
bnQncyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbDogQWRkZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAg
U291cmNlIGNoYW5nZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmg6IEV4cG9zZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMg
aW4gdGhlIERPTSBjbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVk
IG5ldyBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnBzZXVkb0lkKTogCisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6Cisg
ICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6Oik6IEFkZGVkIG5ldyBmdWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3NlcyB0byB0aGUgUHNldWRv
VHlwZSBlbnVtLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisgICAgICAg
IChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3Nz
IHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBhbmQgdGhlIGRlZmF1bHRRdWlya3NTdHlsZSBz
aGVldHMuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKTogUHVsbCB0
aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIHNoZWV0LgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogQ2hlY2sgZm9yIHRoZSBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8gY2xhc3Nlcy4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6IFN1
cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOiBTdXBwb3J0IGxp
c3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyk6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGVudGVyIGZ1bGwg
c2NyZWVuIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVs
bFNjcmVlbik6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGV4aXQgZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFNldHMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNz
ZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTog
Q3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENs
ZWFycyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxl
bWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBj
b25zdCBhY2Nlc3NvcnMgZm9yIG5ldyBmdWxsLXNjcmVlbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRJc0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVk
KTogQWNjZXNzb3IgZm9yIG1faXNGdWxsU2NyZW4gYW5kIG1fYXJlS2V5c0VuYWJsZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KTog
QWNjZXNzb3IgZm9yIG1fZnVsbFNjcmVlbkVsZW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4p
OiBDYWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtl
eXMuIAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyk6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1l
bnRXaXRoS2V5cy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOiBPdmVycmlkZWQgYnkgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6aXNXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFBhcnNlIHRoZSBu
ZXcgIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCByZWdpc3RlciBhIGxp
c3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojp3ZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3Nv
ciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxl
bWVudDo6c2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxs
U2NyZWVuLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6IFJlLWltcGxlbWVu
dGVkIHRoZSBIVE1MTWVkaWFFbGVtZW50IGZ1bGwgc2NyZWVuIHN1cHBvcnQgaW4gdGVybXMgb2Yg
dGhlIG5ldyAoZ2VuZXJpYykgZnVsbCBzY3JlZW4gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JFbGVtZW50KTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JF
bGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVnYXRlLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZCBhIG5ldyBzZXR0aW5n
IHRvIGNvbnRyb2wgcnVudGltZSBzdXBwb3J0IGZvciBmdWxsIHNjcmVlbiBtb2RlIChkZWZhdWx0
cyB0byBvZmYpCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RnVsbFNjcmVlbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmZ1bGxTY3JlZW5FbmFibGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBUaGUgZnVsbCBzY3JlZW4gYnV0dG9uIG5vdyB0b2dnbGVzIGZ1bGwgc2NyZWVuIG1v
ZGUgKHByZXZpb3VzbHksIGl0IG9ubHkgZW50ZXJlZCkuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDEw
LTA3LTI3ICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDY0MTg1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC00NDksNiArNDQ5LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZSBcCiAgICAgV2ViS2l0Q1NTTWF0cml4IFwKICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSBcCisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IFwKICAgICBXZWJLaXRQb2ludCBc
CiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50IFwKICAgICBXZWJTb2NrZXQgXApAQCAtNjYyLDYg
KzY2MywxMCBAQCBpZmVxICgkKE9TKSxNQUNPUykKIGVuZGlmCiBlbmRpZgogCitpZmVxICgkKGZp
bmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JFRU4sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZV
TExTQ1JFRU4pCisgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5j
cHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApAQCAtODQwLDYgKzg0NSw3MiBAQCBhbGwg
OiBXZWJDb3JlLmV4cCBXZWJDb3JlLkxQNjQuZXhwCiBXZWJDb3JlLmV4cCA6ICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9XZWJDb3JlRXhwb3J0RmlsZUdlbmVyYXRvcgogCSReID4gJEAKIAorIyBGSVhN
RTogV1RGX1VTRV9QTFVHSU5fSE9TVF9QUk9DRVNTIGlzIG9ubHkgdHJ1ZSB3aGVuIGJ1aWxkaW5n
IGZvciB4ODZfNjQsIGJ1dCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byBrbm93IGFib3V0IHRoYXQgaGVy
ZS4KK2lmZXEgKCQoZmluZHN0cmluZyB4ODZfNjQsJChBUkNIUykpICQoZmluZHN0cmluZyB4ODZf
NjQsJChWQUxJRF9BUkNIUykpLCB4ODZfNjQgeDg2XzY0KQoraWZlcSAoJChzaGVsbCBnY2MgLWFy
Y2ggeDg2XzY0IC1FIC1QIC1kTSAkKEZSQU1FV09SS19GTEFHUykgV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy93dGYvUGxhdGZvcm0uaCB8IGdyZXAgV1RGX1VTRV9QTFVHSU5fSE9TVF9QUk9DRVNT
IHwgY3V0IC1kJyAnIC1mMyksIDEpCisgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlBsdWdpbkhvc3RQcm9jZXNz
LmV4cAorZW5kaWYKK2VuZGlmCisKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfM0RfUkVOREVS
SU5HLCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV8zRF9SRU5ERVJJTkcpCisgICAgV0VCQ09S
RV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBX
ZWJDb3JlLjNEUmVuZGVyaW5nLmV4cAorZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLWFyY2gg
eDg2XzY0IC1FIC1QIC1kTSAkKEZSQU1FV09SS19GTEFHUykgV2ViQ29yZS9Gb3J3YXJkaW5nSGVh
ZGVycy93dGYvUGxhdGZvcm0uaCB8IGdyZXAgV1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElO
RyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6
PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5BY2NlbGVyYXRlZENvbXBv
c2l0aW5nLmV4cAorZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLUUgLVAgLWRNICQoRlJBTUVX
T1JLX0ZMQUdTKSBXZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oIHwgZ3Jl
cCBFTkFCTEVfQ09OVEVYVF9NRU5VUyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdFQkNPUkVf
RVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2Vi
Q29yZS5Db250ZXh0TWVudXMuZXhwCitlbmRpZgorCitpZmVxICgkKEVOQUJMRV9EQVNIQk9BUkRf
U1VQUE9SVCksIDEpCisgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQoV0VCQ09S
RV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLkRhc2hib2FyZFN1cHBvcnQuZXhwCitlbmRp
ZgorCitpZmVxICgkKHNoZWxsIGdjYyAtRSAtUCAtZE0gJChGUkFNRVdPUktfRkxBR1MpIFdlYkNv
cmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmggfCBncmVwIEVOQUJMRV9EUkFHX1NV
UFBPUlQgfCBjdXQgLWQnICcgLWYzKSwgMSkKKyAgICBXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJ
RVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdlYkNvcmUuRHJhZ1N1cHBvcnQu
ZXhwCitlbmRpZgorCitpZmVxICgkKHNoZWxsIGdjYyAtRSAtUCAtZE0gJChGUkFNRVdPUktfRkxB
R1MpIFdlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvd3RmL1BsYXRmb3JtLmggfCBncmVwIEVOQUJM
RV9JTlNQRUNUT1IgfCBjdXQgLWQnICcgLWYzKSwgMSkKKyAgICBXRUJDT1JFX0VYUE9SVF9ERVBF
TkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMpIFdlYkNvcmUuSW5zcGVj
dG9yLmV4cAorZW5kaWYKKworaWZlcSAoJChFTkFCTEVfT1JJRU5UQVRJT05fRVZFTlRTKSwgMSkK
KyAgICBXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMgOj0gJChXRUJDT1JFX0VYUE9SVF9ERVBF
TkRFTkNJRVMpIFdlYkNvcmUuT3JpZW50YXRpb25FdmVudHMuZXhwCitlbmRpZgorCitpZmVxICgk
KGZpbmRzdHJpbmcgMTAuNCwkKE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCkpLCAxMC40KQorICAg
IFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVO
Q0lFUykgV2ViQ29yZS5UaWdlci5leHAKK2VuZGlmCisKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFC
TEVfUExVR0lOX1BST1hZX0ZPUl9WSURFTywkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKKyAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9
ICQoV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlZpZGVvUHJveHkuZXhwCitl
bmRpZgorCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX1ZJREVPLCQoRkVBVFVSRV9ERUZJTkVT
KSksIEVOQUJMRV9WSURFTykKKyAgICAgV0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTIDo9ICQo
V0VCQ09SRV9FWFBPUlRfREVQRU5ERU5DSUVTKSBXZWJDb3JlLlZpZGVvLmV4cAorZW5kaWYKKwor
aWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykp
LCBFTkFCTEVfR0VPTE9DQVRJT04pCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfQ0xJRU5UX0JBU0VE
X0dFT0xPQ0FUSU9OKQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNP
UkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5DbGllbnRCYXNlZEdlb2xvY2F0aW9uLmV4
cAorZWxzZQorICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQ
T1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5HZW9sb2NhdGlvbi5leHAKK2VuZGlmCitlbmRpZgor
CitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JFRU4sJChGRUFUVVJFX0RFRklORVMp
KSwgRU5BQkxFX0ZVTExTQ1JFRU4pCisgICAgIFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6
PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUykgV2ViQ29yZS5GdWxsU2NyZWVuLmV4cAor
ZW5kaWYKKworaWZlcSAoJChzaGVsbCBnY2MgLUUgLVAgLWRNICQoRlJBTUVXT1JLX0ZMQUdTKSBX
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL3d0Zi9QbGF0Zm9ybS5oIHwgZ3JlcCBXVEZfVVNFX1BS
T1RFQ1RJT05fU1BBQ0VfQVVUSF9DQUxMQkFDSyB8IGN1dCAtZCcgJyAtZjMpLCAxKQorICAgIFdF
QkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lFUyA6PSAkKFdFQkNPUkVfRVhQT1JUX0RFUEVOREVOQ0lF
UykgV2ViQ29yZS5Qcm90ZWN0aW9uU3BhY2VBdXRoQ2FsbGJhY2suZXhwCitlbmRpZgorCitXZWJD
b3JlLmV4cCA6IFdlYkNvcmUuYmFzZS5leHAgJChXRUJDT1JFX0VYUE9SVF9ERVBFTkRFTkNJRVMp
CisJY2F0ICReID4gJEAKKwogIyBTd2l0Y2ggTlNSZWN0LCBOU1NpemUgYW5kIE5TUG9pbnQgd2l0
aCB0aGVpciBDRyBjb3VudGVycGFydHMgZm9yIHRoZSA2NC1iaXQgZXhwb3J0cyBmaWxlLgogV2Vi
Q29yZS5MUDY0LmV4cCA6IFdlYkNvcmUuZXhwCiAJY2F0ICReIHwgc2VkIC1lIHMvN19OU1JlY3Qv
NkNHUmVjdC8gLWUgcy83X05TU2l6ZS82Q0dTaXplLyAtZSBzLzhfTlNQb2ludC83Q0dQb2ludC8g
PiAkQApJbmRleDogV2ViQ29yZS9XZWJDb3JlLkZ1bGxTY3JlZW4uZXhwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS5GdWxsU2NyZWVuLmV4cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
V2ViQ29yZS5GdWxsU2NyZWVuLmV4cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitfX1pO
N1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBO
U183RWxlbWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdlYmtp
dFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3Jl
OERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50
RQpJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTU1LDYgKzU1LDcgQEAgRU5BQkxFX0VW
RU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09VUkNFOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVf
RklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJM
RV9GSUxFX1dSSVRFUiA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOID0gRU5BQkxFX0ZVTExTQ1JFRU47
CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiBFTkFCTEVfSUNPTkRB
VEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9JTUFHRV9SRVNJWkVSID0gOwpA
QCAtODUsNCArODYsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJM
RV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9
ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0Rf
UkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lO
RykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkg
JChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJ
RU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdF
KSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9S
RUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFC
TEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVE
X0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVC
VUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJ
RklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BS
T0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hB
UkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFC
TEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxF
X1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNF
KSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1J
TkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChF
TkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJM
RV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9E
QVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikg
JChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxF
X0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChF
TkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZVTExTQ1JFRU4pICQoRU5BQkxFX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5B
QkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFW
QVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQo
RU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykg
JChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAk
KEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFU
SU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5H
UykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5B
QkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFC
TEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9Y
SFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQxODUpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
NDk4MCw2ICs0OTgwLDggQEAKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VF
dmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAq
LzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAq
LzsgfTsKKwkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5o
ICovOyB9OworCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuY3BwICovOyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJv
bGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAw
RTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0Ez
OEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovOyB9OwpAQCAtMTA2NDcsNiArMTA2NDks
MTEgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAw
QjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
MTQ1NUU5MTFGNkEyOTIwMENBODdBNSAvKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5leHBvcnRzOyBwYXRoID0gV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1
bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4
NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE2NzQsNiArMTE2ODEsNyBAQAog
CQkJY2hpbGRyZW4gPSAoCiAJCQkJNUQ4N0JCODIxMUUzRUQ4NjAwNzAyQjZGIC8qIEV4cG9ydEZp
bGVHZW5lcmF0b3IuY3BwICovLAogCQkJCTVENEI4QzUyMTFFNTJDOEIwMEJCQjYyRiAvKiBXZWJD
b3JlLmV4cC5pbiAqLywKKwkJCQlDRDE0NTVFOTExRjZBMjkyMDBDQTg3QTUgLyogV2ViQ29yZS5G
dWxsU2NyZWVuLmV4cCAqLywKIAkJCSk7CiAJCQluYW1lID0gRXhwb3J0czsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjYwMSw2ICsxNjYwOSw3IEBACiAJCQkJQkM5QUREMjIwQ0M0
MDMyNjAwMDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFF
NTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJ
CQk0Q0RFNTRFQzBFNTU3OTc4MDA4OUUyNkMgLyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTEx
RjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNz
czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzEzNiw2ICsxNzE0NSw5IEBACiAJ
CQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAq
LywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQu
aCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZl
bnQuaWRsICovLAorCQkJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaCAqLywKKwkJCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4
NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYx
RTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkz
MUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJ
CQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwg
Ki8sCkBAIC0xOTg0Nyw2ICsxOTg1OSw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5
IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMx
MUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkBAIC0yMjI0Miw2ICsyMjI1NSw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5
QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1
MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2Jq
Yy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYs
NiArMTU2LDExIEBAIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlIFdFQktJVF8KIC0g
KERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKil0YWduYW1l
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01FbGVtZW50ICopcXVlcnlT
ZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9O
XzRfMDsKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxl
Y3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJM
RV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorLSAodm9pZCl3ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80
XzA7CistICh2b2lkKXdlYmtpdENhbmNlbEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21l
bnQgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtMjI0LDYgKzIyOSwxMCBAQCBAaW50
ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2RlIFdFQktJVF9WCiAtIChET01Ob2RlTGlzdCAqKWdl
dEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICop
c2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlz
dCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5B
QkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxF
X0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAK
IEBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTU2
OSw2ICs1NzgsOSBAQCBAaW50ZXJmYWNlIERPTUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRNCiBA
cHJvcGVydHkoY29weSkgTlNTdHJpbmcgKndpZHRoOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRh
aW4pIERPTURvY3VtZW50ICpjb250ZW50RG9jdW1lbnQ7CiBAcHJvcGVydHkocmVhZG9ubHksIHJl
dGFpbikgRE9NQWJzdHJhY3RWaWV3ICpjb250ZW50V2luZG93IEFWQUlMQUJMRV9JTl9XRUJLSVRf
VkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZV
TExTQ1JFRU4KK0Bwcm9wZXJ0eShhc3NpZ24pIEJPT0wgd2Via2l0QWxsb3dGdWxsU2NyZWVuOwor
I2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NSFRNTEltYWdlRWxlbWVudCA6IERPTUhUTUxF
bGVtZW50IFdFQktJVF9WRVJTSU9OXzFfMwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI0NCw2ICsyNDQsMTUgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5
cAogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NS
RUVOOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgcmV0dXJuIEZVTExf
U0NSRUVOX0RPQzsKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAg
ICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQ7CisjZW5kaWYKKyAgICAg
ICAgICAgIAogICAgIGNhc2UgUHNldWRvSW5wdXRMaXN0QnV0dG9uOgogI2lmIEVOQUJMRShEQVRB
TElTVCkKICAgICAgICAgcmV0dXJuIElOUFVUX0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYgKzQzMSwx
MSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGVmdFBhZ2UsICgibGVmdCIpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmlnaHRQYWdlLCAoInJpZ2h0Iikp
OworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4iKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5Eb2MsICgiLXdlYmtpdC1mdWxs
LXNjcmVlbi1kb2MiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1
bGxTY3JlZW5Sb290V2l0aFRhcmdldCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10
YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwq
LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGUgPSAwOwogICAgIGlm
ICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAtNTMzLDYgKzU0NywxMSBAQCBzdGF0aWMgSGFzaE1h
cDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKICAgICAg
ICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxlZnRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHJpZ2h0UGFnZS5p
bXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UpOworI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbi5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+
c2V0KGZ1bGxTY3JlZW5Eb2MuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRv
Yyk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuUm9vdFdpdGhUYXJn
ZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0KTsK
KyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbmFtZVRvUHNldWRvVHlwZTsKIH0KQEAgLTY2Miw2
ICs2ODEsMTEgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwogICAg
IGNhc2UgUHNldWRvU2luZ2xlQnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm9CdXR0b246CiAgICAg
Y2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgY2FzZSBQ
c2V1ZG9GdWxsU2NyZWVuOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICBjYXNl
IFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyNlbmRpZgogICAgICAgICBicmVhazsK
ICAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKICAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgpJbmRl
eDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICAgICAgUHNldWRvTGVmdFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9SaWdodFBh
Z2UsCiAgICAgICAgICAgICBQc2V1ZG9GaXJzdFBhZ2UsCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuLAorICAgICAgICAgICAgUHNldWRvRnVsbFNj
cmVlbkRvYywKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwKKyNl
bmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gTWFyZ2luQm94VHlwZSB7CkluZGV4OiBX
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Nzcy9D
U1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwxNCBAQCBz
dGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgU3RyaW5nIHF1aXJrc1J1bGVz
ID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdl
bnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhUXVpcmtz
U3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNo
ZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVs
ZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2Ny
ZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5l
eHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNo
ZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVm
YXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVl
bkV2YWwoKSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHls
ZSgpCkBAIC01NjMsNiArNTcxLDEzIEBAIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5
bGUoKQogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2ltcGxlRGVmYXVsdFN0
eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgCiAgICAgLy8gTm8gbmVlZCB0byBpbml0aWFs
aXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhlcmUgYXJlIG5vIHF1aXJrIHJ1bGVzIGZvciBlbGVt
ZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgorCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgLy8gRnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5S
dWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxz
Y3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkt
PmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVu
U2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNlbmRp
ZgogfQogICAgIAogc3RhdGljIHZvaWQgbG9hZFZpZXdTb3VyY2VTdHlsZSgpCkBAIC0yNjE5LDYg
KzI2MzQsMzcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBE
b2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVudCdzIGN1
cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1l
bnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVz
IHRvIAorICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFtZT4s
IDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAKKyAgICAg
ICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3Rh
dGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAgICAg
ICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRv
Y3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICAg
ICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIHRo
ZSAnZnVsbC1zY3JlZW4tZG9jJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIAorICAgICAgICAgICAgICAg
IC8vIHRvIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAg
ICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAgICAgICAgICAgICAgICAv
LyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUgZG9j
dW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gZWxlbWVudCAKKyAgICAgICAgICAgICAgICAvLyBp
cyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0aC10
YXJnZXQnIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhlIHJv
b3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9j
dW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENTU1Nl
bGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDogV2Vi
Q29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVsbHNj
cmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorOi13ZWJraXQtZnVsbC1zY3JlZW4geworICBwb3Np
dGlvbjpmaXhlZDsKKyAgdG9wOjA7CisgIGxlZnQ6MDsKKyAgcmlnaHQ6MDsKKyAgYm90dG9tOjA7
Cit9Cis6LXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0IHsKKyAgb3ZlcmZsb3c6
aGlkZGVuOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBoZWlnaHQ6IDEwMCUKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK2ltZzotd2Vi
a2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cisg
ICAgaW1hZ2UtZml0OiBmaWxsOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBi
b3R0b206IDBweDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTk5LDYgKzE5OSwxMCBAQAogI2luY2x1ZGUgIkhUTUxOb1NjcmlwdEVsZW1lbnQu
aCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5jbHVkZSAiV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVz
aW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTQwNCw2ICs0
MDgsMTEgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSwogI2VuZGlm
CiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhp
cykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgLCBtX2lzRnVsbFNjcmVlbigwKQorICAgICwgbV9hcmVLZXlzRW5hYmxlZCgwKQor
ICAgICwgbV9mdWxsU2NyZWVuRWxlbWVudCgwKQorI2VuZGlmCiB7CiAgICAgbV9kb2N1bWVudCA9
IHRoaXM7CiAKQEAgLTMyNzIsNiArMzI4MSwxMCBAQCBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1bWVu
dDo6Y3JlYXRlRXZlbnQoCiAjZW5kaWYKICAgICAgICAgZXZlbnQgPSBUb3VjaEV2ZW50OjpjcmVh
dGUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGVsc2UgaWYgKGV2ZW50
VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAgICAgIGV2ZW50ID0gV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShERVZJ
Q0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJEZXZpY2VPcmllbnRh
dGlvbkV2ZW50IikKICAgICAgICAgZXZlbnQgPSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpjcmVh
dGUoKTsKQEAgLTMzMjMsNiArMzMzNiwxMCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZChjCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRU
b3VjaEV2ZW50cyh0cnVlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JFRU5fTElTVEVORVIp
OworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlk
ZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQpAQCAtNTAzNiw1ICs1MDUzLDg0IEBAIElu
c3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3IKICAgICByZXR1cm4gcGFnZSgp
ID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwogfQogI2VuZGlmCisgICAgCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbigpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMo
ZG9jdW1lbnRFbGVtZW50KCksIGZhbHNlKTsKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5G
b3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRFbGVtZW50KCksIHRydWUpOworfQorICAgIAordm9p
ZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxl
bWVudCogZWxlbWVudCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAh
cGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQo
KTsKKyAgICAKKyAgICBpZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVs
bHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICBtX2FyZUtleXNFbmFibGVkID0g
a2V5c0VuYWJsZWQ7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNj
cmVlbkVsZW1lbnQpKQorICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1
bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQpOworfQorICAgIAordm9pZCBE
b2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
ID0gZWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICBtX2lzRnVsbFNj
cmVlbiA9IHRydWU7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2Fs
YyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChkb2N1bWVudEVsZW1lbnQoKSAhPSBtX2Z1bGxT
Y3JlZW5FbGVtZW50KQorICAgICAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJl
Y2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNo
RXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgdXBkYXRl
U3R5bGVJZk5lZWRlZCgpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Vi
a2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBE
b2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQorewor
ICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFwYWdlKCkt
PnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgCisgICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkID0g
ZmFsc2U7CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6Y3JlYXRlKCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAg
ICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgZG9jdW1lbnRFbGVtZW50KCkt
PnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICB1cGRhdGVTdHlsZUlm
TmVlZGVkKCk7Cit9CisgICAgCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI3NCw2ICsyNzQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Up
OworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdCB7IHJldHVybiBt
X2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtNjc1LDcgKzY3OCw4IEBAIHB1YmxpYzoKICAgICAgICAg
VFJBTlNJVElPTkVORF9MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg4MDAsCiAgICAgICAgIEJF
Rk9SRUxPQURfTElTVEVORVIgICAgICAgICAgICAgICAgICA9IDB4MTAwMCwKICAgICAgICAgVE9V
Q0hfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAwLAotICAgICAgICBCRUZP
UkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAKKyAgICAgICAgQkVGT1JF
UFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAwLAorICAgICAgICBGVUxMU0NS
RUVOX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDgwMDAsCiAgICAgfTsKIAogICAgIGJv
b2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsgcmV0
dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9CkBAIC0xMDAxLDYgKzEwMDUs
MjEgQEAgcHVibGljOgogICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lcigpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgaWRBdHRyaWJ1dGVO
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZEF0dHJpYnV0ZU5hbWU7IH0KKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5
c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbiAmJiBtX2FyZUtleXNFbmFi
bGVkOyB9CisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgY29u
c3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudDsgfQorICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMo
KTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVs
ZW1lbnQqLCBib29sIGtleXNFbmFibGVkKTsKKyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW4oKTsKKyAgICAKKyAgICB2b2lkIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOworICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCopOworI2VuZGlmCiAKICAgICBib29sIHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3dyaXRlRGlzYWJsZWQ7IH0KICAgICB2b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFn
KSB7IG1fd3JpdGVEaXNhYmxlZCA9IGZsYWc7IH0KQEAgLTEyODYsNiArMTMwNSwxMiBAQCBwcml2
YXRlOgogICAgIEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0
TGlzdGVuZXJzOwogCiAgICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBib29sIG1faXNGdWxsU2NyZWVuOworICAgIGJv
b2wgbV9hcmVLZXlzRW5hYmxlZDsKKyAgICBFbGVtZW50KiBtX2Z1bGxTY3JlZW5FbGVtZW50Owor
I2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9t
aWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDY0MTg1KQor
KysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQw
LDE1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0RvbnRFbnVtXSB2b2lkIGluaXRpYWxpemVX
TUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikg
JiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5
c0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudDsKKyAgICAgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFO
R1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRl
cwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMTU4Miw1ICsxNTgyLDE3IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRT
aG91bGRDcmVhdGVSZW5kZXJlcigKICAgICByZXR1cm4gTm9kZTo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcihjaGlsZCk7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
K3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKQoreworICAgIGRvY3VtZW50
KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIGZhbHNl
KTsKK30KKwordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkK
K3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyh0aGlzLCB0cnVlKTsKK30KKyNlbmRpZiAgICAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNy
ZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Bl
cm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCkBAIC0yOTIsNiArMjk1LDEx
IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3Vs
ZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsgCiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTikKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjQx
ODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYg
KzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01T
dHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVO
KSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOwor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdF
X09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAg
ICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpAQCAtMjA1
LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxD
b25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBv
bnRvdWNobW92ZTsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VD
SF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwogICAg
ICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVk
QXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5dIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlmCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20v
RXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2
ICsxNjIsMTMgQEAgYm9vbCBFdmVudDo6aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjbwogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorYm9vbCBFdmVudDo6
aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxz
ZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysr
IFdlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlv
bkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25F
dmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBj
b25zdDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdmlydHVhbCBib29sIGlzV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZH
KQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpJ
bmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5hbWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgXAogICAgIG1hY3JvKGxvYWRlbmQpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0ZnVs
bHNjcmVlbmNoYW5nZSkKKyAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNI
CiAKICAgICBjbGFzcyBFdmVudE5hbWVzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdl
YkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTikKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorLy8gRnJvbSB0aGUgTW96aWxsYSBGdWxsU2NyZWVuIHByb3Bvc2FsOiAiVGhlIFtmdWxs
U2NyZWVuQ2hhbmdlRXZlbnRdIGJ1YmJsZXMgCisvLyBhbmQgaXMgbm90IGNhbmNlbGxhYmxlLiIK
KworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQoKQorOiBFdmVudChldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0
cnVlLCBmYWxzZSkKK3sKK30KKworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+V2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKK3sKK30KKwordm9pZCBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OmluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBj
YW5jZWxhYmxlQXJnKQoreworICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsK
KyAgICAKKyAgICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKTsK
K30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRf
aAorI2RlZmluZSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisKKyNpbmNsdWRlICJFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KTsKKyAgICB9ICAgICAgICAKKyAgICB2aXJ0dWFsIH5XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICAKKyAgICB2b2lkIGluaXRXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZyk7CisgICAg
CisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3Qg
eyByZXR1cm4gdHJ1ZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQoKTsKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBFTkFCTEUoRlVMTFNDUkVFTikKKworI2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxl
IGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJT
JkZVTExTQ1JFRU4sCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQgOiBFdmVudCB7CisKKyAgICAgICAgdm9pZCBpbml0RXJyb3JFdmVudChpbiBET01T
dHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2Vs
YWJsZUFyZywgaW4gRE9NU3RyaW5nIG1lc3NhZ2VBcmcsIGluIERPTVN0cmluZyBmaWxlbmFtZUFy
ZywgaW4gdW5zaWduZWQgbG9uZyBsaW5lbm9BcmcpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw3
ICsyNjYsMTEgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoY2FuY2VsQXR0cikgewogICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2VBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyKSk7CiAgICAgfQorI2VuZGlmCiB9CiAKIFN0cmluZyBIVE1MRWxlbWVudDo6
aW5uZXJIVE1MKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gNjQxODUp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2
ICs2NCwxMSBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVf
QykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyB0aXRsZURpc3BsYXlTdHJpbmc7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxF
X0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldp
dGhLZXlzKCk7CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxMCBAQCB2b2lkIEhUTUxJRnJh
bWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94QXR0cmli
dXRlKGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gd2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0cikKKyAgICAgICAgbV9hbGxvd0Z1
bGxTY3JlZW4gPSB0cnVlOworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBIVE1MRnJhbWVFbGVt
ZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFt
ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50
QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+
IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAKKyAgICBib29s
IHdlYmtpdEFsbG93RnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dGdWxsU2NyZWVu
OyB9CisgICAgdm9pZCBzZXRXZWJraXRBbGxvd0Z1bGxTY3JlZW4oYm9vbCB2YWx1ZSkgeyBtX2Fs
bG93RnVsbFNjcmVlbiA9IHZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01MCw2ICs1Myw3IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0
OwogCiAgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKKyAgICBib29sIG1fYWxsb3dGdWxsU2NyZWVu
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJ
RnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaWRsCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0bWwgewog
ICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyBzY3JvbGxpbmc7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVF
TikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01T
dHJpbmcgd2Via2l0QWxsb3dGdWxsU2NyZWVuOworI2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBb
UmVmbGVjdF0gRE9NU3RyaW5nIHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01T
dHJpbmcgd2lkdGg7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9u
IDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjMsNyArMTIzLDYgQEAgSFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVu
dChjb25zdAogICAgICwgbV9zZW50RW5kRXZlbnQoZmFsc2UpCiAgICAgLCBtX3BhdXNlZEludGVy
bmFsKGZhbHNlKQogICAgICwgbV9zZW5kUHJvZ3Jlc3NFdmVudHModHJ1ZSkKLSAgICAsIG1faXNG
dWxsc2NyZWVuKGZhbHNlKQogICAgICwgbV9jbG9zZWRDYXB0aW9uc1Zpc2libGUoZmFsc2UpCiAj
aWYgRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAgICAgLCBtX25lZWRXaWRnZXRVcGRh
dGUoZmFsc2UpCkBAIC0yNjAsMTAgKzI1OSw2IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWIKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkudm9sdW1lY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9ud2FpdGluZ0F0dHIpCiAgICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndhaXRpbmdFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAgZWxzZSBpZiAo
YXR0ck5hbWUgPT0gb253ZWJraXRiZWdpbmZ1bGxzY3JlZW5BdHRyKQotICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Ci0gICAgZWxzZSBp
ZiAoYXR0ck5hbWUgPT0gb253ZWJraXRlbmRmdWxsc2NyZWVuQXR0cikKLSAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlCiAg
ICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KQEAgLTMx
Miw4ICszMDcsMTAgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZQog
ewogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHBhdXNl
KHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU4pCisgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0
RnVsbHNjcmVlbigpOworI2VuZGlmCiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1l
bnQoKTsKIH0KIApAQCAtMTg1Miw4ICsxODQ5LDEwIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
dXNlckNhbmNlbGxlZExvYWQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxC
ZWNvbWVJbmFjdGl2ZSgpCiB7Ci0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQorI2lmIEVOQUJMRShG
VUxMU0NSRUVOKQorICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3Jl
ZW4oKTsKKyNlbmRpZgogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CiAgICAgdXNl
ckNhbmNlbGxlZExvYWQoKTsKQEAgLTIwMTMsMjUgKzIwMTIsMjUgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcgogfQogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCitib29sIEhUTUxNZWRpYUVs
ZW1lbnQ6OmlzRnVsbHNjcmVlbigpIGNvbnN0IAoreworICAgIHJldHVybiBkb2N1bWVudCgpID8g
ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdGhpcyA6IGZh
bHNlOworfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7Ci0g
ICAgQVNTRVJUKCFtX2lzRnVsbHNjcmVlbik7Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOwot
ICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1
bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9k
ZSh0aGlzKTsKLSAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5m
dWxsc2NyZWVuRXZlbnQpOwotICAgIH0KKyAgICBBU1NFUlQoIWlzRnVsbHNjcmVlbigpKTsKKyAg
ICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CiB9CiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogewotICAgIEFTU0VSVChtX2lzRnVsbHNjcmVlbik7
Ci0gICAgbV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsKLSAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1
bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKLSAgICAgICAgc2NoZWR1bGVF
dmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKLSAgICB9CisgICAg
QVNTRVJUKGlzRnVsbHNjcmVlbigpKTsKKyAgICBpZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9j
dW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogfQorI2VuZGlmCiAKIFBsYXRmb3Jt
TWVkaWEgSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CiB7CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDkgKzE1NywxMSBAQCBwdWJs
aWM6CiAKICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4g
IW1fcGxheWVyIHx8IG1fcGxheWVyLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAg
Ci0gICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbHNjcmVlbjsg
fQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7
CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7
CisjZW5kaWYKIAogICAgIGJvb2wgaGFzQ2xvc2VkQ2FwdGlvbnMoKSBjb25zdDsKICAgICBib29s
IGNsb3NlZENhcHRpb25zVmlzaWJsZSgpIGNvbnN0OwpAQCAtMzU1LDcgKzM1Nyw2IEBAIHByaXZh
dGU6CiAgICAgLy8gc3VwcG9ydCBwcm9ncmVzcyBldmVudHMgc28gc2V0dGluZyBtX3NlbmRQcm9n
cmVzc0V2ZW50cyBkaXNhYmxlcyB0aGVtIAogICAgIGJvb2wgbV9zZW5kUHJvZ3Jlc3NFdmVudHMg
OiAxOwogCi0gICAgYm9vbCBtX2lzRnVsbHNjcmVlbiA6IDE7CiAgICAgYm9vbCBtX2Nsb3NlZENh
cHRpb25zVmlzaWJsZSA6IDE7CiAKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0
MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTEyMCwxOCArMTIxLDIzIEBAIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgSFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKIGJvb2wgSFRNTFZp
ZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuKCkgY29uc3QKIHsKICAgICBQYWdlKiBwYWdl
ID0gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPnBhZ2UoKSA6IDA7CiAgICAgaWYgKCFwYWdlKSAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCiAgICAgaWYgKCFw
bGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1cHBvcnRzRnVsbHNjcmVlbigpIHx8ICFwbGF5ZXIoKS0+
aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgd2l0aCB0
aGUgcGxhdGZvcm0gY2xpZW50LgotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9t
ZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKIH0KKyNl
bmRpZgogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKIHsK
QEAgLTIwNCw2ICsyMTAsNyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6Omhhc0F2YWlsYWJsZVZp
ZGVvCiAgICAgcmV0dXJuIHBsYXllcigpLT5oYXNBdmFpbGFibGVWaWRlb0ZyYW1lKCk7CiB9CiAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKIHZvaWQgSFRNTFZpZGVvRWxlbWVudDo6d2Via2l0RW50
ZXJGdWxsc2NyZWVuKGJvb2wgaXNVc2VyR2VzdHVyZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgaWYgKGlzRnVsbHNjcmVlbigpKQpAQCAtMjM0LDYgKzI0MSw3IEBAIGJvb2wgSFRNTFZpZGVv
RWxlbWVudDo6d2Via2l0RGlzcGxheWluZ0YKIHsKICAgICByZXR1cm4gaXNGdWxsc2NyZWVuKCk7
CiB9CisjZW5kaWYKIAogdm9pZCBIVE1MVmlkZW9FbGVtZW50Ojp3aWxsTW92ZVRvTmV3T3duZXJE
b2N1bWVudCgpCiB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmgJKHJldmlzaW9uIDY0MTg1
KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDQsNiArNDQsNyBAQCBwdWJsaWM6CiAgICAgdW5zaWduZWQgdmlkZW9XaWR0aCgpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIHZpZGVvSGVpZ2h0KCkgY29uc3Q7CiAgICAgCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCiAgICAgLy8gRnVsbHNjcmVlbgogICAgIHZvaWQgd2Via2l0RW50ZXJGdWxsc2NyZWVu
KGJvb2wgaXNVc2VyR2VzdHVyZSwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgd2Via2l0RXhp
dEZ1bGxzY3JlZW4oKTsKQEAgLTU0LDcgKzU1LDggQEAgcHVibGljOgogICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNjA4MQogICAgIHZvaWQgd2Via2l0RW50
ZXJGdWxsU2NyZWVuKGJvb2wgaXNVc2VyR2VzdHVyZSwgRXhjZXB0aW9uQ29kZSYgZWMpIHsgd2Vi
a2l0RW50ZXJGdWxsc2NyZWVuKGlzVXNlckdlc3R1cmUsIGVjKTsgfQogICAgIHZvaWQgd2Via2l0
RXhpdEZ1bGxTY3JlZW4oKSB7IHdlYmtpdEV4aXRGdWxsc2NyZWVuKCk7IH0KLQorI2VuZGlmCisg
ICAgCiAgICAgYm9vbCBzaG91bGREaXNwbGF5UG9zdGVySW1hZ2UoKSBjb25zdCB7IHJldHVybiBt
X3Nob3VsZERpc3BsYXlQb3N0ZXJJbWFnZTsgfQogCiAgICAgLy8gVXNlZCBieSBjYW52YXMgdG8g
Z2FpbiByYXcgcGl4ZWwgYWNjZXNzCkBAIC03Myw3ICs3NSw5IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1ZpZGVvKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1YWwgYm9vbCBo
YXNWaWRlbygpIGNvbnN0IHsgcmV0dXJuIHBsYXllcigpICYmIHBsYXllcigpLT5oYXNWaWRlbygp
OyB9CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVs
bHNjcmVlbigpIGNvbnN0OworI2VuZGlmCiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRl
KEF0dHJpYnV0ZSopIGNvbnN0OwogICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1h
Z2VTb3VyY2VBdHRyaWJ1dGVOYW1lKCkgY29uc3Q7CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJl
dmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMTksOSArMjE5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVu
Rm9yTm9kZShjb25zdCBOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCB2
b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQotICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRl
ckZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9CisjZW5kaWYKIAogI2lmIEVO
QUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJs
ZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJ
bmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOSBAQCBTZXR0aW5nczo6U2V0dGlu
Z3MoUGFnZSogcGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8v
IFdpbGwgYmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmlu
Z0xheW91dEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVl
KQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICwgbV9mdWxsU2NyZWVuRW5hYmxlZChmYWxz
ZSkKKyNlbmRpZgogICAgICwgbV9tZW1vcnlJbmZvRW5hYmxlZChmYWxzZSkKICAgICAsIG1faW50
ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbihmYWxzZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA2
NDE4NSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAs
NiArMzEwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRF
bmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxl
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOyB9CiAKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdm9pZCBzZXRGdWxsU2NyZWVuRW5hYmxlZChi
b29sIGZsYWcpIHsgbV9mdWxsU2NyZWVuRW5hYmxlZCA9IGZsYWc7IH0KKyAgICAgICAgYm9vbCBm
dWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbmFibGVkOyB9
CisjZW5kaWYKKwogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykg
eyBtX21lbW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9F
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC00MDMs
OCArNDA4LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2h0bWw1VHJl
ZUJ1aWxkZXJFbmFibGVkOiAxOyAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4K
ICAgICAgICAgYm9vbCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA6IDE7CiAgICAgICAg
IGJvb2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOworPDw8PDw8PCAubWluZQorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorICAgICAgICBib29sIG1fZnVsbFNjcmVlbkVuYWJsZWQgOiAxOwor
I2VuZGlmCis9PT09PT09CiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAg
ICAgICAgYm9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7Cis+Pj4+Pj4+IC5yNjQx
ODUKICAgICAKICNpZiBVU0UoU0FGQVJJX1RIRU1FKQogICAgICAgICBzdGF0aWMgYm9vbCBnU2hv
dWxkUGFpbnROYXRpdmVDb250cm9sczsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNyArNzc2LDEw
IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKIHZvaWQgTWVkaWFD
b250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
IGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2
ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAg
ICAgaWYgKG1lZGlhRWxlbWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1lZGlh
RWxlbWVudCgpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
ZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3
IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FVEVSX0hPUklaT05UQUxfQkFSLCBNRVRFUl9IT1JJ
Wk9OVEFMX09QVElNVU0sIE1FVEVSX0hPUklaT05UQUxfU1VCT1BUSU1BTCwgTUVURVJfSE9SSVpP
TlRBTF9FVkVOX0xFU1NfR09PRCwKICAgICBNRVRFUl9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZFUlRJ
Q0FMX09QVElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NVQk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FMX0VW
RU5fTEVTU19HT09ELCAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAorICAgIEZV
TExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQs
CiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKICAgICBGSVJTVF9JTlRF
Uk5BTF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKICAgICBQVUJMSUNfUFNFVURPSURf
TUFTSyA9ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwgRklS
U1RfUFVCTElDX1BTRVVET0lEKSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62797</attachid>
            <date>2010-07-28 00:09:20 -0700</date>
            <delta_ts>2010-07-28 00:37:28 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>56645</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQxIEBACisyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBKYXZhU2NyaXB0IEFQSSB0byBhbGxvdyBhIHBhZ2UgdG8gZ28gZnVsbHNjcmVlbi4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjg2Nzc5NQorICAgICAgICAKKyAgICAgICAgTW96aWxsYSBoYXMg
cHJvcG9zZWQgYSBuZXcgc2V0IG9mIEphdmFTY3JpcHQgQVBJcyB3aGljaCBhbGxvdyBhbnkgZWxl
bWVudCBpbgorICAgICAgICBhIGRvY3VtZW50IHRvIGdvIGZ1bGwtc2NyZWVuLiAgVGhlIGN1cnJl
bnQgcmV2aXNpb24gb2YgdGhlaXIgcHJvcG9zYWwgY2FuIGJlIAorICAgICAgICBmb3VuZCBoZXJl
OgorICAgICAgICA8aHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL2luZGV4LnBocD90aXRsZT1HZWNr
bzpGdWxsU2NyZWVuQVBJJm9sZGlkPTIzNTYwMT4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9w
b3NlZCBzcGVjaWZpY2F0aW9uIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAg
ICAgICBEb2N1bWVudDoKKyAgICAgICAgLSBUaHJlZSBuZXcgbWV0aG9kcyBvbiBEb2N1bWVudDoK
KyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCisgICAgICAgICAgICArIHZvaWQgY2FuY2Vs
RnVsbFNjcmVlbigpCisgICAgICAgIC0gVGhyZWUgbmV3IGF0dHJpYnV0ZXMgb2YgRG9jdW1lbnQ6
CisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW4KKyAg
ICAgICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbldpdGhLZXlz
CisgICAgICAgICAgICArIChvcHRpb25hbCkgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgY3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50CisgICAgICAgICAgICAKKyAgICAgICAgRWxlbWVudDoKKyAg
ICAgICAgLSBUd28gbmV3IG1ldGhvZHMgb24gRWxlbWVudDoKKyAgICAgICAgICAgICsgdm9pZCBy
ZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpCisgICAgICAgIAorICAgICAgICBIVE1MSUZyYW1lRWxlbWVudDoKKyAgICAgICAg
LSBPbmUgbmV3IGNvbnRlbnQgYXR0cmlidXRlOgorICAgICAgICAgICAgKyBhbGxvd0Z1bGxTY3Jl
ZW4KKyAgICAgICAgICAgIAorICAgICAgICBFdmVudHM6CisgICAgICAgIC0gT25lIG5ldyBldmVu
dDoKKyAgICAgICAgICAgICsgZnVsbFNjcmVlbkNoYW5nZQorICAgICAgICAKKyAgICAgICAgQ1NT
IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAtIFRocmVlIG5ldyBQc2V1ZG8tY2xhc3NlczoKKyAg
ICAgICAgICAgICsgOmZ1bGwtc2NyZWVuCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1kb2MK
KyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQKKyAgICAgICAgCisg
ICAgICAgIEZvciBXZWJLaXQncyBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbGwgdGhlIGFib3Zl
IG5ldyBBUElzIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAKKyAgICAgICAgIndlYmtpdCIgb3IgIi13
ZWJraXQiIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RzOgor
ICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCisgICAg
ICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwKKyAgICAgICAg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKKworICAgICAg
ICBQcm9qZWN0IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzogQWRkZWQgYW4gRU5BQkxFX0ZVTExTQ1JFRU4gZW50cnkuCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3Nz
IGFuZCBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVl
bi5leHA6IEFkZGVkIGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5j
dGlvbnMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcg
c291cmNlIGZpbGVzIGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2Vz
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4g
QVBJIHRvIHRoZSBEb2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1l
bnQncyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbDogQWRkZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAg
U291cmNlIGNoYW5nZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmg6IEV4cG9zZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMg
aW4gdGhlIERPTSBjbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVk
IG5ldyBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnBzZXVkb0lkKTogCisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6Cisg
ICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6Oik6IEFkZGVkIG5ldyBmdWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3NlcyB0byB0aGUgUHNldWRv
VHlwZSBlbnVtLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisgICAgICAg
IChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3Nz
IHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBhbmQgdGhlIGRlZmF1bHRRdWlya3NTdHlsZSBz
aGVldHMuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKTogUHVsbCB0
aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIHNoZWV0LgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogQ2hlY2sgZm9yIHRoZSBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8gY2xhc3Nlcy4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6IFN1
cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOiBTdXBwb3J0IGxp
c3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyk6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGVudGVyIGZ1bGwg
c2NyZWVuIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVs
bFNjcmVlbik6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGV4aXQgZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFNldHMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNz
ZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTog
Q3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENs
ZWFycyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxl
bWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBj
b25zdCBhY2Nlc3NvcnMgZm9yIG5ldyBmdWxsLXNjcmVlbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRJc0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVk
KTogQWNjZXNzb3IgZm9yIG1faXNGdWxsU2NyZW4gYW5kIG1fYXJlS2V5c0VuYWJsZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KTog
QWNjZXNzb3IgZm9yIG1fZnVsbFNjcmVlbkVsZW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4p
OiBDYWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtl
eXMuIAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyk6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1l
bnRXaXRoS2V5cy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOiBPdmVycmlkZWQgYnkgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6aXNXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFBhcnNlIHRoZSBu
ZXcgIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCByZWdpc3RlciBhIGxp
c3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojp3ZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3Nv
ciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxl
bWVudDo6c2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxs
U2NyZWVuLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6IFJlLWltcGxlbWVu
dGVkIHRoZSBIVE1MTWVkaWFFbGVtZW50IGZ1bGwgc2NyZWVuIHN1cHBvcnQgaW4gdGVybXMgb2Yg
dGhlIG5ldyAoZ2VuZXJpYykgZnVsbCBzY3JlZW4gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JFbGVtZW50KTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JF
bGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVnYXRlLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZCBhIG5ldyBzZXR0aW5n
IHRvIGNvbnRyb2wgcnVudGltZSBzdXBwb3J0IGZvciBmdWxsIHNjcmVlbiBtb2RlIChkZWZhdWx0
cyB0byBvZmYpCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RnVsbFNjcmVlbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmZ1bGxTY3JlZW5FbmFibGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBUaGUgZnVsbCBzY3JlZW4gYnV0dG9uIG5vdyB0b2dnbGVzIGZ1bGwgc2NyZWVuIG1v
ZGUgKHByZXZpb3VzbHksIGl0IG9ubHkgZW50ZXJlZCkuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDEw
LTA3LTI3ICBKYW1lcyBIYXdraW5zICA8amhhd2tpbnNAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9u
IDY0MTg1KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBA
IC00NDksNiArNDQ5LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVz
UnVsZSBcCiAgICAgV2ViS2l0Q1NTTWF0cml4IFwKICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1
ZSBcCisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IFwKICAgICBXZWJLaXRQb2ludCBc
CiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2ZW50IFwKICAgICBXZWJTb2NrZXQgXApAQCAtNjYyLDYg
KzY2MywxMCBAQCBpZmVxICgkKE9TKSxNQUNPUykKIGVuZGlmCiBlbmRpZgogCitpZmVxICgkKGZp
bmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JFRU4sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZV
TExTQ1JFRU4pCisgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5j
cHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NDE4NSkKKysrIFdl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTU1LDYgKzU1LDcgQEAgRU5BQkxFX0VWRU5UU09VUkNFID0gRU5BQkxFX0VWRU5UU09V
UkNFOwogRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJMRV9GSUxFX1JFQURF
UiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJMRV9GSUxFX1dSSVRFUiA9IDsKK0VOQUJMRV9G
VUxMU0NSRUVOID0gRU5BQkxFX0ZVTExTQ1JFRU47CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFC
TEVfR0VPTE9DQVRJT047CiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFT
RTsKIEVOQUJMRV9JTUFHRV9SRVNJWkVSID0gOwpAQCAtODUsNCArODYsNCBAQCBFTkFCTEVfWEhU
TUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5B
QkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQo
RU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NM
SUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dF
T0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxF
X0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9S
WV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChF
TkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVS
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
TUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChF
TkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkg
JChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykg
JChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9T
VkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZP
UkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVf
V09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQp
OworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0Rf
Q0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1Qp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxF
X0ZVTExTQ1JFRU4pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4MCw2ICs0OTgwLDggQEAKIAkJQzVFQkRE
ODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2
ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4
MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAw
MEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKKwkJQ0RBNzlBNzMxMUU3QTRDNzAw
ODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlDREE3OUE3NDExRTdBNEM3
MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5
NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovOyB9OwogCQlDRTAyRjBDNDEx
RTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAv
KiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxO
b1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwICovOyB9OwpAQCAtMTA2NDcsNiArMTA2NDksMTEgQEAKIAkJQzVFQkREODExMDVFRERFQzAw
NTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlv
bkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEy
OTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEMTQ1NUU5MTFGNkEyOTIwMENBODdBNSAvKiBX
ZWJDb3JlLkZ1bGxTY3JlZW4uZXhwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5leHBvcnRzOyBwYXRo
ID0gV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3QTRD
NzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUg
LyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2Uu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2Uu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMz
IC8qIFpvb21Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2Rl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhG
NSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTE2NzQsNiArMTE2ODEsNyBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJNUQ4N0JC
ODIxMUUzRUQ4NjAwNzAyQjZGIC8qIEV4cG9ydEZpbGVHZW5lcmF0b3IuY3BwICovLAogCQkJCTVE
NEI4QzUyMTFFNTJDOEIwMEJCQjYyRiAvKiBXZWJDb3JlLmV4cC5pbiAqLywKKwkJCQlDRDE0NTVF
OTExRjZBMjkyMDBDQTg3QTUgLyogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cCAqLywKIAkJCSk7CiAJ
CQluYW1lID0gRXhwb3J0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNjYwMSw2
ICsxNjYwOSw3IEBACiAJCQkJQkM5QUREMjIwQ0M0MDMyNjAwMDk4QzRDIC8qIFdlYktpdENTU1Ry
YW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFFNTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktp
dENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJCQk0Q0RFNTRFQzBFNTU3OTc4MDA4OUUyNkMg
Lyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVl
bi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CkBAIC0xNzEzNiw2ICsxNzE0NSw5IEBACiAJCQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1
IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3
RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZF
MDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLAorCQkJCUNEQTc5QTcxMTFF
N0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLywKKwkJCQlD
REE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNw
cCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyog
V2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1
IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0xOTg0Nyw2ICsxOTg1OSw3IEBA
CiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBp
biBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMjI0Miw2ICsyMjI1NSw3
IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JMaWJ4c2x0
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xU
VW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2RTAwRUNG
OUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBNzlBNzQxMUU3QTRD
NzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAko
cmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJm
YWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDExIEBAIEBpbnRlcmZhY2UgRE9N
RG9jdW1lbnQgOiBET01Ob2RlIFdFQktJVF8KIC0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZTooTlNTdHJpbmcgKil0YWduYW1lIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lP
Tl80XzA7CiAtIChET01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3Rv
cnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTU5vZGVMaXN0ICopcXVl
cnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVM
TFNDUkVFTgorLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdlYmtpdENhbmNlbEZ1
bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAog
CiBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9O
XzFfMwpAQCAtMjI0LDYgKzIyOSwxMCBAQCBAaW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2Rl
IFdFQktJVF9WCiAtIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3Ry
aW5nICopbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVu
dCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJL
SVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3Ry
aW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVm
aW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0g
KHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9N
Tm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTU2OSw2ICs1NzgsOSBAQCBAaW50ZXJmYWNlIERP
TUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRNCiBAcHJvcGVydHkoY29weSkgTlNTdHJpbmcgKndp
ZHRoOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIERPTURvY3VtZW50ICpjb250ZW50RG9j
dW1lbnQ7CiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9NQWJzdHJhY3RWaWV3ICpjb250
ZW50V2luZG93IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChF
TkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KK0Bwcm9wZXJ0eShhc3NpZ24p
IEJPT0wgd2Via2l0QWxsb3dGdWxsU2NyZWVuOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2Ug
RE9NSFRNTEltYWdlRWxlbWVudCA6IERPTUhUTUxFbGVtZW50IFdFQktJVF9WRVJTSU9OXzFfMwpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMTUgQEAgUHNldWRvSWQg
Q1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVkb1R5cAogICAgICAgICByZXR1cm4gTk9QU0VVRE87
CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGNhc2UgUHNldWRvRnVsbFNj
cmVlbjoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NSRUVOOworICAgIGNhc2UgUHNldWRvRnVsbFNj
cmVlbkRvYzoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX0RPQzsKKyAgICBjYXNlIFBzZXVk
b0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX1JP
T1RfV0lUSF9UQVJHRVQ7CisjZW5kaWYKKyAgICAgICAgICAgIAogICAgIGNhc2UgUHNldWRvSW5w
dXRMaXN0QnV0dG9uOgogI2lmIEVOQUJMRShEQVRBTElTVCkKICAgICAgICAgcmV0dXJuIElOUFVU
X0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYgKzQzMSwxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgbGVmdFBhZ2UsICgibGVmdCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgcmlnaHRQYWdlLCAoInJpZ2h0IikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJr
aXQtZnVsbC1zY3JlZW4iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGZ1bGxTY3JlZW5Eb2MsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1kb2MiKSk7CisgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwgKCIt
d2Via2l0LWZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0
YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4q
IG5hbWVUb1BzZXVkb1R5cGUgPSAwOwogICAgIGlmICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAt
NTMzLDYgKzU0NywxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2Vs
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxl
ZnRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHJpZ2h0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9S
aWdodFBhZ2UpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICBuYW1lVG9Qc2V1ZG9U
eXBlLT5zZXQoZnVsbFNjcmVlbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVu
KTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW5Eb2MuaW1wbCgpLCBD
U1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYyk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5
cGUtPnNldChmdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0KTsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4g
bmFtZVRvUHNldWRvVHlwZTsKIH0KQEAgLTY2Miw2ICs2ODEsMTEgQEAgdm9pZCBDU1NTZWxlY3Rv
cjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwogICAgIGNhc2UgUHNldWRvU2luZ2xlQnV0dG9uOgog
ICAgIGNhc2UgUHNldWRvTm9CdXR0b246CiAgICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CisjaWYg
RU5BQkxFKEZVTExTQ1JFRU4pCisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAgIGNhc2Ug
UHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRh
cmdldDoKKyNlbmRpZgogICAgICAgICBicmVhazsKICAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToK
ICAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2NDE4
NSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2
ICsyMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvTGVmdFBh
Z2UsCiAgICAgICAgICAgICBQc2V1ZG9SaWdodFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9GaXJz
dFBhZ2UsCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2Ny
ZWVuLAorICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlbkRvYywKKyAgICAgICAgICAgIFBzZXVk
b0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAg
IGVudW0gTWFyZ2luQm94VHlwZSB7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2
aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwxNCBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRT
dHlsZSgpCiAgICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0
eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVt
ZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxl
U2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZh
dWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFs
KCkpOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1
bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJB
Z2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsg
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7Cisg
ICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3Jl
ZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVu
U2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisjZW5kaWYKIH0KIAogc3Rh
dGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCkBAIC01NjMsNiArNTcxLDEzIEBAIHN0
YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQogICAgIGRlZmF1bHRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoc2ltcGxlRGVmYXVsdFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAg
ICAgCiAgICAgLy8gTm8gbmVlZCB0byBpbml0aWFsaXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhl
cmUgYXJlIG5vIHF1aXJrIHJ1bGVzIGZvciBlbGVtZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZh
dWx0IHN0eWxlLgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgLy8gRnVsbC1zY3JlZW4g
cnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkg
KyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsK
KyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVuU2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNj
cmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3Jl
ZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNlbmRpZgogfQogICAgIAogc3RhdGljIHZvaWQgbG9h
ZFZpZXdTb3VyY2VTdHlsZSgpCkBAIC0yNjE5LDYgKzI2MzQsMzcgQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTikKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46
CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVl
biBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAg
ICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1
bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRo
YXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFtZT4sIDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVu
dCB3aG9zZSBjaGlsZCBicm93c2luZyAKKyAgICAgICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9j
dW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBz
ZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53
ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxs
U2NyZWVuRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQg
aXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIHRoZSAnZnVsbC1zY3JlZW4tZG9jJyBwc2V1ZG9j
bGFzcyBhcHBsaWVzIAorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSByb290IGVsZW1lbnQgb2Yg
dGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtp
dElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290
V2l0aFRhcmdldDoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRo
ZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4g
ZWxlbWVudCAKKyAgICAgICAgICAgICAgICAvLyBpcyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVu
dCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0aC10YXJnZXQnIHBzZXVkb2NsYXNzIGFwcGxpZXMg
dG8gCisgICAgICAgICAgICAgICAgLy8gdGhlIHJvb3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50
LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVu
KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBp
ZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+
Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkp
KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vu
a25vd246CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAg
ICAgICAgICAgICBkZWZhdWx0OgpJbmRleDogV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAor
Oi13ZWJraXQtZnVsbC1zY3JlZW4geworICBwb3NpdGlvbjpmaXhlZDsKKyAgdG9wOjA7CisgIGxl
ZnQ6MDsKKyAgcmlnaHQ6MDsKKyAgYm90dG9tOjA7Cit9Cis6LXdlYmtpdC1mdWxsLXNjcmVlbi1y
b290LXdpdGgtdGFyZ2V0IHsKKyAgb3ZlcmZsb3c6aGlkZGVuOworfQorCit2aWRlbzotd2Via2l0
LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCUKKyAgICBp
bWFnZS1maXQ6IGZpbGw7Cit9CisKK2ltZzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0
aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgaW1hZ2UtZml0OiBmaWxsOworfQorCit2
aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0
LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBib3R0b206IDBweDsKK30KXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTk5LDYgKzE5OSwxMCBAQAog
I2luY2x1ZGUgIkhUTUxOb1NjcmlwdEVsZW1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5k
aWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBu
YW1lc3BhY2UgVW5pY29kZTsKQEAgLTQwNCw2ICs0MDgsMTEgQEAgRG9jdW1lbnQ6OkRvY3VtZW50
KEZyYW1lKiBmcmFtZSwgY29uc3QgSwogI2VuZGlmCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9j
dW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFt
ZShpZEF0dHIpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgLCBtX2lzRnVsbFNjcmVlbigw
KQorICAgICwgbV9hcmVLZXlzRW5hYmxlZCgwKQorICAgICwgbV9mdWxsU2NyZWVuRWxlbWVudCgw
KQorI2VuZGlmCiB7CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTMyNzIsNiArMzI4MSwx
MCBAQCBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoCiAjZW5kaWYKICAg
ICAgICAgZXZlbnQgPSBUb3VjaEV2ZW50OjpjcmVhdGUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShG
VUxMU0NSRUVOKQorICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZSIpCisgICAgICAgIGV2ZW50ID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVh
dGUoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBp
ZiAoZXZlbnRUeXBlID09ICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50IikKICAgICAgICAgZXZlbnQg
PSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpjcmVhdGUoKTsKQEAgLTMzMjMsNiArMzMzNiwxMCBA
QCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjCiAgICAgICAgICAgICBw
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKICAgICB9CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0g
ZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlz
dGVuZXJUeXBlKEZVTExTQ1JFRU5fTElTVEVORVIpOworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVj
bGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJp
bmcmKQpAQCAtNTAzNiw1ICs1MDUzLDg0IEBAIEluc3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50
OjppbnNwZWN0b3IKICAgICByZXR1cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCkgOiAwOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lk
IERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpCit7CisgICAgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRFbGVtZW50KCksIGZhbHNlKTsK
K30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7
CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRF
bGVtZW50KCksIHRydWUpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCogZWxlbWVudCwgYm9vbCBrZXlzRW5h
YmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAg
ICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAKKyAgICBpZiAocGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCkp
IHsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZv
ckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50
OworICAgICAgICBtX2FyZUtleXNFbmFibGVkID0ga2V5c0VuYWJsZWQ7CisgICAgfQorfQorCit2
b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2Uo
KSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0
c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQpKQorICAgICAgICBwYWdl
KCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNj
cmVlbkVsZW1lbnQpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8
fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1
bWVudEVsZW1lbnQoKTsKKyAgICBtX2lzRnVsbFNjcmVlbiA9IHRydWU7CisgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlm
IChkb2N1bWVudEVsZW1lbnQoKSAhPSBtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBkb2N1
bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworfQorICAgIAor
dm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxl
bWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQoreworICAgIGlmICghcGFnZSgpKQorICAgICAgICBy
ZXR1cm47CisgICAgCisgICAgaWYgKCFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFi
bGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAgbV9pc0Z1bGxTY3JlZW4gPSBm
YWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkID0gZmFsc2U7CisgICAgaWYgKG1fZnVsbFNjcmVl
bkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJl
Y2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNw
YXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgICAg
ICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnRF
bGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVh
dGUoKSk7CisgICAgZG9jdW1lbnRFbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0
eWxlQ2hhbmdlKTsKKyAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7Cit9CisgICAgCisjZW5kaWYK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQsOSBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJ
U1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5
cGUqIGRvY3R5cGUoKSBjb25zdCB7IHJldHVybiBtX2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtNjc1
LDcgKzY3OCw4IEBAIHB1YmxpYzoKICAgICAgICAgVFJBTlNJVElPTkVORF9MSVNURU5FUiAgICAg
ICAgICAgICAgID0gMHg4MDAsCiAgICAgICAgIEJFRk9SRUxPQURfTElTVEVORVIgICAgICAgICAg
ICAgICAgICA9IDB4MTAwMCwKICAgICAgICAgVE9VQ0hfTElTVEVORVIgICAgICAgICAgICAgICAg
ICAgICAgID0gMHgyMDAwLAotICAgICAgICBCRUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAg
ICAgICAgPSAweDQwMDAKKyAgICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAg
ICAgID0gMHg0MDAwLAorICAgICAgICBGVUxMU0NSRUVOX0xJU1RFTkVSICAgICAgICAgICAgICAg
ICAgPSAweDgwMDAsCiAgICAgfTsKIAogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVy
VHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsgcmV0dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0
ZW5lclR5cGUpOyB9CkBAIC0xMDAxLDYgKzEwMDUsMjEgQEAgcHVibGljOgogICAgIE1lZGlhQ2Fu
U3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpOwogCiAgICAgY29u
c3QgUXVhbGlmaWVkTmFtZSYgaWRBdHRyaWJ1dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZEF0
dHJpYnV0ZU5hbWU7IH0KKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBib29sIHdl
YmtpdElzRnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAg
Ym9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBt
X2lzRnVsbFNjcmVlbiAmJiBtX2FyZUtleXNFbmFibGVkOyB9CisgICAgRWxlbWVudCogd2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxl
bWVudDsgfQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqLCBib29sIGtleXNFbmFibGVkKTsK
KyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAKKyAgICB2b2lkIHdlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgd2Via2l0
V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworI2VuZGlmCiAKICAgICBib29s
IHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlRGlzYWJsZWQ7IH0KICAgICB2
b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fd3JpdGVEaXNhYmxlZCA9IGZsYWc7
IH0KQEAgLTEyODYsNiArMTMwNSwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8TWVkaWFDYW5T
dGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzOwogCiAgICAgUXVhbGlmaWVk
TmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICBib29sIG1faXNGdWxsU2NyZWVuOworICAgIGJvb2wgbV9hcmVLZXlzRW5hYmxlZDsKKyAgICBF
bGVtZW50KiBtX2Z1bGxTY3JlZW5FbGVtZW50OworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBE
b2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiArMjQwLDE1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgW0RvbnRFbnVtXSB2b2lkIGluaXRpYWxpemVXTUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisj
aWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAg
ICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9v
bGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKKyAgICAg
ICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAg
Ly8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4Miw1ICsx
NTgyLDE3IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcigKICAgICBy
ZXR1cm4gTm9kZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CiB9CiAjZW5kaWYK
KyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4oKQoreworICAgIGRvY3VtZW50KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
Rm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIGZhbHNlKTsKK30KKwordm9pZCBFbGVtZW50Ojp3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0aGlzLCB0cnVlKTsKK30KKyNlbmRp
ZiAgICAKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNjQxODUp
CisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkg
QEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQp
OwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2Vu
ZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQ
YXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25z
dCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGlu
Z0FsbG93ZWQpOwogCkBAIC0yOTIsNiArMjk1LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZH
KQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25z
dDsgCiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldp
dGhLZXlzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5
cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAK
KyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAg
ICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2
ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0g
RXZlbnRMaXN0ZW5lciBvbmFib3J0OwpAQCAtMjA1LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5h
YmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNobW92ZTsKICAgICAgICAgYXR0cmli
dXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0g
RXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENv
bmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9u
dG91Y2hjYW5jZWw7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZV
TExTQ1JFRU5dIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlm
CiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9FdmVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsMTMgQEAgYm9vbCBFdmVudDo6aXNX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorYm9vbCBFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50
Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0
dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBjb25zdDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkg
Y29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNT
Vkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNjQx
ODUpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2
ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKGxvYWRlbmQp
IFwKICAgICBcCisgICAgbWFjcm8od2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKKyAgICBcCiAvLyBl
bmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBjbGFzcyBFdmVudE5hbWVzIDog
cHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKworI2luY2x1ZGUgIkV2ZW50TmFt
ZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorLy8gRnJvbSB0aGUgTW96aWxsYSBG
dWxsU2NyZWVuIHByb3Bvc2FsOiAiVGhlIFtmdWxsU2NyZWVuQ2hhbmdlRXZlbnRdIGJ1YmJsZXMg
CisvLyBhbmQgaXMgbm90IGNhbmNlbGxhYmxlLiIKKworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKQorOiBFdmVudChldmVudE5hbWVzKCku
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBmYWxzZSkKK3sKK30KKworV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKK3sK
K30KKwordm9pZCBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmluaXRXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
Y2FuQnViYmxlQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKQoreworICAgIGlmIChk
aXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpbml0RXZlbnQodHlwZSwg
Y2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorI2RlZmluZSBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisKKyNpbmNsdWRlICJFdmVu
dC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTsKKyAgICB9
ICAgICAgICAKKyAgICB2aXJ0dWFsIH5XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAg
ICAKKyAgICB2b2lkIGluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY2FuY2VsYWJsZUFyZyk7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorcHJp
dmF0ZToKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKK307CisgICAgCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTikKKwor
I2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9oCkluZGV4OiBXZWJDb3JlL2Rv
bS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTJkZVTExTQ1JFRU4sCisgICAgICAgIE5vU3Rh
dGljVGFibGVzCisgICAgXSBGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgOiBFdmVudCB7CisKKyAgICAg
ICAgdm9pZCBpbml0RXJyb3JFdmVudChpbiBET01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBj
YW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2FuY2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIG1lc3Nh
Z2VBcmcsIGluIERPTVN0cmluZyBmaWxlbmFtZUFyZywgaW4gdW5zaWduZWQgbG9uZyBsaW5lbm9B
cmcpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2
aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24K
IG9ud2Via2l0YW5pbWF0aW9uZW5kCiBvbndlYmtpdGJlZ2luZnVsbHNjcmVlbgogb253ZWJraXRl
bmRmdWxsc2NyZWVuCitvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UKIG9ud2Via2l0dHJhbnNpdGlv
bmVuZAogb3B0aW11bQogcGF0dGVybgpAQCAtMjgyLDUgKzI4Myw2IEBAIHZpZXdzb3VyY2UKIHZs
aW5rCiB2c3BhY2UKIHdlYmtpdGRpcmVjdG9yeQord2Via2l0YWxsb3dmdWxsc2NyZWVuCiB3aWR0
aAogd3JhcApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBA
CiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwpAQCAtMjYyLDcgKzI2NiwxMSBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnRvdWNoZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9udG91Y2hjYW5jZWxBdHRy
KSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNo
Y2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwor
I2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9u
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9CisjZW5kaWYKIH0KIAog
U3RyaW5nIEhUTUxFbGVtZW50Ojppbm5lckhUTUwoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aWRsCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTY0LDYgKzY0LDExIEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlRGlzcGxheVN0cmluZzsKICNlbmRpZgor
CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAg
ICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRpZgogICAgIH07CiAKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzIsNiArMTMy
LDEwIEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpCiAgICAgICAgIHNldFNhbmRib3hGbGFn
cyhwYXJzZVNhbmRib3hBdHRyaWJ1dGUoYXR0cikpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgaWYgKGF0dHItPm5hbWUoKSA9PSB3ZWJraXRhbGxvd2Z1bGxzY3JlZW5BdHRy
KQorICAgICAgICBtX2FsbG93RnVsbFNjcmVlbiA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlCiAg
ICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsK
IH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICsz
MSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50IDogcHVi
bGljIEhUTUxGcmFtZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxIVE1MSUZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOworICAgIAorICAgIGJvb2wgd2Via2l0QWxsb3dGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9hbGxvd0Z1bGxTY3JlZW47IH0KKyAgICB2b2lkIHNldFdlYmtpdEFsbG93RnVsbFNjcmVl
bihib29sIHZhbHVlKSB7IG1fYWxsb3dGdWxsU2NyZWVuID0gdmFsdWU7IH0KIAogcHJpdmF0ZToK
ICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
QEAgLTUwLDYgKzUzLDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1
dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworICAgIGJv
b2wgbV9hbGxvd0Z1bGxTY3JlZW47CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29y
ZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
OSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5n
IG5hbWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNhbmRib3g7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNjcm9sbGluZzsKKyNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB3ZWJraXRBbGxvd0Z1bGxTY3JlZW47CisjZW5kaWYK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc3JjOwogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB3aWR0aDsKIApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiw3ICszMTIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lCiB7CiAgICAgaWYgKG1fbmV0d29ya1N0YXRlID4g
TkVUV09SS19FTVBUWSkKICAgICAgICAgcGF1c2UocHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwot
ICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAg
IGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgSFRNTEVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQo
KTsKIH0KQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNh
bmNlbGxlZExvYWQKIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJ
bmFjdGl2ZSgpCiB7Ci0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgIGlmIChpc0Z1bGxzY3Jl
ZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKIAogICAgIG1faW5BY3RpdmVEb2N1bWVu
dCA9IGZhbHNlOwpAQCAtMjAxMywyNCArMjAxMyw0NCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OmNyZWF0ZU1lZGlhUGxheWVyCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1Jf
VklERU8pCiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVuKCkgY29uc3QgCit7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVu
dCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlzIDogZmFsc2U7Cisj
ZWxzZQorCXJldHVybiBtX2lzRnVsbHNjcmVlbjsKKyNlbmRpZgorfQorCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbigpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisg
ICAgQVNTRVJUKCFpc0Z1bGxzY3JlZW4oKSk7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpOworI2Vsc2UKICAgICBBU1NFUlQoIW1faXNGdWxsc2NyZWVuKTsKICAgICBtX2lz
RnVsbHNjcmVlbiA9IHRydWU7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFn
ZSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5l
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50
TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogeworI2lmIEVOQUJMRShG
VUxMU0NSRUVOKQorICAgIEFTU0VSVChpc0Z1bGxzY3JlZW4oKSk7CisgICAgaWYgKGRvY3VtZW50
KCkpCisgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyNlbHNl
CiAgICAgQVNTRVJUKG1faXNGdWxsc2NyZWVuKTsKICAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNl
OwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAgICBk
b2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JO
b2RlKHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRm
dWxsc2NyZWVuRXZlbnQpOwogICAgIH0KKyNlbmRpZgogfQogCiBQbGF0Zm9ybU1lZGlhIEhUTUxN
ZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29s
IGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1f
cGxheWVyLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAgCi0gICAgYm9vbCBpc0Z1
bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbHNjcmVlbjsgfQorICAgIGJvb2wgaXNG
dWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lk
IGV4aXRGdWxsc2NyZWVuKCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUg
IlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNpbmNsdWRlICJTZXR0
aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiwxMSArMTI3LDIzIEBAIGJv
b2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWUKICAgICBpZiAoIXBhZ2UpIAog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBpZiAo
IXBhZ2UtPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyNlbmRpZgorICAgIAogICAgIGlmICghcGxheWVyKCkgfHwgIXBsYXllcigpLT5zdXBw
b3J0c0Z1bGxzY3JlZW4oKSB8fCAhcGxheWVyKCktPmhhc1ZpZGVvKCkpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIC8vIENoZWNrIHdpdGggdGhlIHBsYXRmb3JtIGNsaWVudC4KLSAgICBy
ZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2Rl
KHRoaXMpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CisjZWxzZQor
CS8vIHN1cHBvcnRzRnVsbFNjcmVlbkZvck5vZGUgaGFzIGJlZW4gcmVtb3ZlZCAoaW4gZmF2b3Ig
b2YgLi4uRm9yRWxlbWVudCkuICBSZXR1cm4KKyAgICAvLyB0cnVlIGhlcmUgaW5zdGVhZCwgc2lu
Y2UgdGhlIG9sZCBpbXBsZW1lbnRhdGlvbiB3b3VsZCByZXR1cm4gdHJ1ZSBpZiB0aGUgCisgICAg
Ly8gZWxlbWVudCBpcyBhIEhUTUxWaWRlb0VsZW1lbnQuCisJcmV0dXJuIHRydWU7CisjZW5kaWYK
IH0KIAogdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6dmlkZW9XaWR0aCgpIGNvbnN0CkluZGV4
OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDkgKzIxOSwxMSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5n
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCBib29s
IHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0K
LSAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9Cisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxz
Y3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopIHsg
fQorI2VuZGlmCiAKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgdmly
dHVhbCBJbnRSZWN0IHZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJl
dHVybiBJbnRSZWN0KCk7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNjQxODUpCisrKyBX
ZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDkg
QEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2h0bWw1VHJlZUJ1aWxk
ZXJFbmFibGVkKGZhbHNlKSAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAg
ICAsIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGZhbHNlKQogICAgICwgbV9kbnNQcmVm
ZXRjaGluZ0VuYWJsZWQodHJ1ZSkKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAsIG1fZnVs
bFNjcmVlbkVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQo
ZmFsc2UpCiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4
OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgc2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3Bh
Z2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5
b3V0RW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIHZvaWQgc2V0
RnVsbFNjcmVlbkVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fZnVsbFNjcmVlbkVuYWJsZWQgPSBmbGFn
OyB9CisgICAgICAgIGJvb2wgZnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCAgeyByZXR1cm4gbV9m
dWxsU2NyZWVuRW5hYmxlZDsgfQorI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZv
RW5hYmxlZChib29sIGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KICAgICAg
ICAgYm9vbCBtZW1vcnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0Vu
YWJsZWQ7IH0KIApAQCAtNDAzLDYgKzQwOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgYm9vbCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFibGVkOiAxOyAvLyBXaWxsIGJlIGRlbGV0ZWQg
c29vbiwgZG8gbm90IHVzZS4KICAgICAgICAgYm9vbCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOworI2lm
IEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICBib29sIG1fZnVsbFNjcmVlbkVuYWJsZWQgOiAx
OworI2VuZGlmCiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAg
Ym9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7CiAgICAgCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzc2LDcgKzc3NiwxMCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5C
dXR0b25FCiB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0
RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJG
dWxsc2NyZWVuKCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKS0+aXNGdWxsc2NyZWVuKCkp
CisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDY0MTg1KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBj
b3B5KQpAQCAtNzksNiArNzksNyBAQCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRVRFUl9IT1JJWk9O
VEFMX0JBUiwgTUVURVJfSE9SSVpPTlRBTF9PUFRJTVVNLCBNRVRFUl9IT1JJWk9OVEFMX1NVQk9Q
VElNQUwsIE1FVEVSX0hPUklaT05UQUxfRVZFTl9MRVNTX0dPT0QsCiAgICAgTUVURVJfVkVSVElD
QUxfQkFSLCBNRVRFUl9WRVJUSUNBTF9PUFRJTVVNLCBNRVRFUl9WRVJUSUNBTF9TVUJPUFRJTUFM
LCBNRVRFUl9WRVJUSUNBTF9FVkVOX0xFU1NfR09PRCwgCiAgICAgQUZURVJfTEFTVF9JTlRFUk5B
TF9QU0VVRE9JRCwKKyAgICBGVUxMX1NDUkVFTiwgRlVMTF9TQ1JFRU5fRE9DLCBGVUxMX1NDUkVF
Tl9ST09UX1dJVEhfVEFSR0VULAogICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJ
TkUsCiAgICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBGSUxFX1VQTE9BRF9CVVRUT04sCiAg
ICAgUFVCTElDX1BTRVVET0lEX01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQp
IC0gMSkgJiB+KCgxIDw8IEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62799</attachid>
            <date>2010-07-28 00:37:28 -0700</date>
            <delta_ts>2010-07-28 09:22:00 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>56667</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2NDE5MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTQxIEBACisyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZCBKYXZhU2NyaXB0IEFQSSB0byBhbGxvdyBhIHBhZ2UgdG8gZ28gZnVsbHNjcmVlbi4KKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vNjg2Nzc5NQorICAgICAgICAKKyAgICAgICAgTW96aWxsYSBoYXMg
cHJvcG9zZWQgYSBuZXcgc2V0IG9mIEphdmFTY3JpcHQgQVBJcyB3aGljaCBhbGxvdyBhbnkgZWxl
bWVudCBpbgorICAgICAgICBhIGRvY3VtZW50IHRvIGdvIGZ1bGwtc2NyZWVuLiAgVGhlIGN1cnJl
bnQgcmV2aXNpb24gb2YgdGhlaXIgcHJvcG9zYWwgY2FuIGJlIAorICAgICAgICBmb3VuZCBoZXJl
OgorICAgICAgICA8aHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL2luZGV4LnBocD90aXRsZT1HZWNr
bzpGdWxsU2NyZWVuQVBJJm9sZGlkPTIzNTYwMT4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9w
b3NlZCBzcGVjaWZpY2F0aW9uIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAg
ICAgICBEb2N1bWVudDoKKyAgICAgICAgLSBUaHJlZSBuZXcgbWV0aG9kcyBvbiBEb2N1bWVudDoK
KyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCisgICAgICAgICAgICArIHZvaWQgY2FuY2Vs
RnVsbFNjcmVlbigpCisgICAgICAgIC0gVGhyZWUgbmV3IGF0dHJpYnV0ZXMgb2YgRG9jdW1lbnQ6
CisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW4KKyAg
ICAgICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbldpdGhLZXlz
CisgICAgICAgICAgICArIChvcHRpb25hbCkgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgY3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50CisgICAgICAgICAgICAKKyAgICAgICAgRWxlbWVudDoKKyAg
ICAgICAgLSBUd28gbmV3IG1ldGhvZHMgb24gRWxlbWVudDoKKyAgICAgICAgICAgICsgdm9pZCBy
ZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpCisgICAgICAgIAorICAgICAgICBIVE1MSUZyYW1lRWxlbWVudDoKKyAgICAgICAg
LSBPbmUgbmV3IGNvbnRlbnQgYXR0cmlidXRlOgorICAgICAgICAgICAgKyBhbGxvd0Z1bGxTY3Jl
ZW4KKyAgICAgICAgICAgIAorICAgICAgICBFdmVudHM6CisgICAgICAgIC0gT25lIG5ldyBldmVu
dDoKKyAgICAgICAgICAgICsgZnVsbFNjcmVlbkNoYW5nZQorICAgICAgICAKKyAgICAgICAgQ1NT
IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAtIFRocmVlIG5ldyBQc2V1ZG8tY2xhc3NlczoKKyAg
ICAgICAgICAgICsgOmZ1bGwtc2NyZWVuCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1kb2MK
KyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQKKyAgICAgICAgCisg
ICAgICAgIEZvciBXZWJLaXQncyBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbGwgdGhlIGFib3Zl
IG5ldyBBUElzIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAKKyAgICAgICAgIndlYmtpdCIgb3IgIi13
ZWJraXQiIHdoZXJlIGFwcHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RzOgor
ICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCisgICAg
ICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwKKyAgICAgICAg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKKworICAgICAg
ICBQcm9qZWN0IGZpbGUgY2hhbmdlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZzogQWRkZWQgYW4gRU5BQkxFX0ZVTExTQ1JFRU4gZW50cnkuCisgICAg
ICAgICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3Nz
IGFuZCBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVl
bi5leHA6IEFkZGVkIGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5j
dGlvbnMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcg
c291cmNlIGZpbGVzIGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2Vz
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4g
QVBJIHRvIHRoZSBEb2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1l
bnQncyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVt
ZW50LmlkbDogQWRkZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAg
U291cmNlIGNoYW5nZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmg6IEV4cG9zZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMg
aW4gdGhlIERPTSBjbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVk
IG5ldyBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2Vs
ZWN0b3I6OnBzZXVkb0lkKTogCisgICAgICAgIChXZWJDb3JlOjpuYW1lVG9Qc2V1ZG9UeXBlTWFw
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSk6Cisg
ICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6IAorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6Oik6IEFkZGVkIG5ldyBmdWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3NlcyB0byB0aGUgUHNldWRv
VHlwZSBlbnVtLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisgICAgICAg
IChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3Nz
IHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBhbmQgdGhlIGRlZmF1bHRRdWlya3NTdHlsZSBz
aGVldHMuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKTogUHVsbCB0
aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIHNoZWV0LgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKTogQ2hlY2sgZm9yIHRoZSBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8gY2xhc3Nlcy4K
KyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OkRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6IFN1
cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZlbnQuCisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOiBTdXBwb3J0IGxp
c3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKToKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyk6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGVudGVyIGZ1bGwg
c2NyZWVuIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVs
bFNjcmVlbik6IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGV4aXQgZnVs
bCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFNldHMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNz
ZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTog
Q3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2ls
bEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENs
ZWFycyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxl
bWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBj
b25zdCBhY2Nlc3NvcnMgZm9yIG5ldyBmdWxsLXNjcmVlbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
Ojp3ZWJraXRJc0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlZW4uCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVk
KTogQWNjZXNzb3IgZm9yIG1faXNGdWxsU2NyZW4gYW5kIG1fYXJlS2V5c0VuYWJsZWQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KTog
QWNjZXNzb3IgZm9yIG1fZnVsbFNjcmVlbkVsZW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4p
OiBDYWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtl
eXMuIAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyk6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1l
bnRXaXRoS2V5cy4KKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOiBPdmVycmlkZWQgYnkgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LgorICAgICAg
ICAqIGRvbS9FdmVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICog
ZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6aXNXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFBhcnNlIHRoZSBu
ZXcgIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCByZWdpc3RlciBhIGxp
c3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojp3ZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3Nv
ciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxl
bWVudDo6c2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxs
U2NyZWVuLgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6IFJlLWltcGxlbWVu
dGVkIHRoZSBIVE1MTWVkaWFFbGVtZW50IGZ1bGwgc2NyZWVuIHN1cHBvcnQgaW4gdGVybXMgb2Yg
dGhlIG5ldyAoZ2VuZXJpYykgZnVsbCBzY3JlZW4gc3VwcG9ydC4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4pOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKToKKyAgICAgICAgKiBodG1s
L0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWVu
KToKKyAgICAgICAgKiBodG1sL0hUTUxWaWRlb0VsZW1lbnQuaDoKKyAgICAgICAgKiBwYWdlL0No
cm9tZUNsaWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZW5Gb3JFbGVtZW50KTogUGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjplbnRlckZ1bGxzY3JlZW5Gb3JF
bGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVnYXRlLgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6
OlNldHRpbmdzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmg6IEFkZCBhIG5ldyBzZXR0aW5n
IHRvIGNvbnRyb2wgcnVudGltZSBzdXBwb3J0IGZvciBmdWxsIHNjcmVlbiBtb2RlIChkZWZhdWx0
cyB0byBvZmYpCisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6c2V0RnVsbFNjcmVlbkVuYWJs
ZWQpOgorICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OmZ1bGxTY3JlZW5FbmFibGVkKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIpOiBUaGUgZnVsbCBzY3JlZW4gYnV0dG9uIG5vdyB0b2dnbGVzIGZ1bGwgc2NyZWVuIG1v
ZGUgKHByZXZpb3VzbHksIGl0IG9ubHkgZW50ZXJlZCkuCisgICAgICAgICogcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjopOgorCiAyMDEw
LTA3LTI3ICBLaW51a28gWWFzdWRhICA8a2ludWtvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBPamFuIFZhZmFpLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjQx
ODUpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0
OSw2ICs0NDksNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBXZWJLaXRDU1NLZXlmcmFtZXNSdWxl
IFwKICAgICBXZWJLaXRDU1NNYXRyaXggXAogICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwK
KyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgXAogICAgIFdlYktpdFBvaW50IFwKICAg
ICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQgXAogICAgIFdlYlNvY2tldCBcCkBAIC02NjIsNiArNjYz
LDEwIEBAIGlmZXEgKCQoT1MpLE1BQ09TKQogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoZmluZHN0
cmluZyBFTkFCTEVfRlVMTFNDUkVFTiwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFND
UkVFTikKKyAgICBVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUyA6PSAkKFVTRVJfQUdFTlRfU1RZTEVf
U0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy9mdWxsc2NyZWVuLmNzcworZW5kaWYKKwogVXNlckFnZW50
U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtlLWNzcy1maWxlLWFycmF5cy5wbCAkKFVTRVJfQUdFTlRf
U1RZTEVfU0hFRVRTKQogCXBlcmwgJDwgJEAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAk
KFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDY0MTkwKQorKysgV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsNyBAQCBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5BQkxF
X0ZJTEVfUkVBREVSID0gRU5BQkxFX0ZJTEVfUkVBREVSOwogRU5BQkxFX0ZJTEVfV1JJVEVSID0g
OwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOworRU5BQkxFX0ZVTExTQ1JFRU4gPSBFTkFCTEVfRlVM
TFNDUkVFTjsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVOQUJM
RV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0lNQUdFX1JFU0la
RVIgPSA7CkBAIC04Niw0ICs4Nyw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRI
ID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9E
RUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVO
QUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxf
TUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RB
VEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RF
VklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9N
X1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJM
RV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZJTEVfU1lTVEVN
KSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9J
TUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9T
UEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChF
TkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5F
X1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkg
JChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykg
JChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9T
VkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZP
UkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVf
V0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVf
V09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQp
OworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0Rf
Q0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1Qp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxF
X0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxN
UCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5ODAs
NiArNDk4MCw4IEBACiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICov
OyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3
NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07
CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRB
RTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07
CisJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5
QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsg
fTsKKwkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNw
cCAqLzsgfTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJC
YXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAy
RjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTE3MkUwMTExMzZFOENF
MDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IENFMTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNEMwMEU0MTBG
NkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAv
KiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwNjQ3LDYgKzEwNjQ5LDExIEBA
CiAJCUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUy
IC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxl
Y3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDE0NTVF
OTExRjZBMjkyMDBDQTg3QTUgLyogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuZXhwb3J0czsgcGF0aCA9IFdlYkNvcmUuRnVsbFNjcmVlbi5leHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2Ny
ZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
NzlBNzYxMUU3QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8q
IFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNF
MTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBab29tTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
RTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNjc0LDYgKzExNjgxLDcgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCTVEODdCQjgyMTFFM0VEODYwMDcwMkI2RiAvKiBFeHBvcnRGaWxlR2Vu
ZXJhdG9yLmNwcCAqLywKIAkJCQk1RDRCOEM1MjExRTUyQzhCMDBCQkI2MkYgLyogV2ViQ29yZS5l
eHAuaW4gKi8sCisJCQkJQ0QxNDU1RTkxMUY2QTI5MjAwQ0E4N0E1IC8qIFdlYkNvcmUuRnVsbFNj
cmVlbi5leHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IEV4cG9ydHM7CiAJCQlzb3VyY2VUcmVlID0g
Ijxncm91cD4iOwpAQCAtMTY2MDEsNiArMTY2MDksNyBAQAogCQkJCUJDOUFERDIyMENDNDAzMjYw
MDA5OEM0QyAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCTMxNjExRTU0MEUx
QzRENEEwMEY2QTU3OSAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgKi8sCiAJCQkJNENE
RTU0RUMwRTU1Nzk3ODAwODlFMjZDIC8qIHdtbC5jc3MgKi8sCisJCQkJQ0Q0RTBBRkExMUY3QkMy
NzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTcxMzYsNiArMTcxNDUsOSBAQAogCQkJCTMx
QzBGRjFCMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgKi8sCiAJ
CQkJMzFDMEZGMUMwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggKi8s
CiAJCQkJMzFDMEZGMUQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50Lmlk
bCAqLywKKwkJCQlDREE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmggKi8sCisJCQkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBNzlBNzYxMUU3QTREOTAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwgKi8sCiAJCQkJMzFDMEZGMUUwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgKi8sCiAJCQkJMzFDMEZG
MUYwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5oICovLAogCQkJCTMx
QzBGRjIwMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsICovLApA
QCAtMTk4NDcsNiArMTk4NTksNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBY
U0xUVW5pY29kZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVD
RjlBNCAvKiBYU1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENF
MDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTc5QTczMTFFN0E0
QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjIyNDIsNiArMjIyNTUsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAv
KiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBD
RjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUNEQTc5QTc0MTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVi
bGljRE9NSW50ZXJmYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9Q
dWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1
NiwxMSBAQCBAaW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZSBXRUJLSVRfCiAtIChET01O
b2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopdGFnbmFtZSBBVkFJ
TEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0
b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7
CiAtIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3Jz
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwor
LSAodm9pZCl3ZWJraXRDYW5jZWxGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lP
Tl80XzA7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDog
RE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTIyNCw2ICsyMjksMTAgQEAgQGludGVyZmFj
ZSBET01FbGVtZW50IDogRE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJT
SU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVj
dG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilx
dWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9G
VUxMU0NSRUVOCistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50
ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05fMV8zCkBAIC01NjksNiAr
NTc4LDkgQEAgQGludGVyZmFjZSBET01IVE1MSUZyYW1lRWxlbWVudCA6IERPTUhUTQogQHByb3Bl
cnR5KGNvcHkpIE5TU3RyaW5nICp3aWR0aDsKIEBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBE
T01Eb2N1bWVudCAqY29udGVudERvY3VtZW50OwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4p
IERPTUFic3RyYWN0VmlldyAqY29udGVudFdpbmRvdyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJ
T05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NS
RUVOCitAcHJvcGVydHkoYXNzaWduKSBCT09MIHdlYmtpdEFsbG93RnVsbFNjcmVlbjsKKyNlbmRp
ZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhUTUxJbWFnZUVsZW1lbnQgOiBET01IVE1MRWxlbWVu
dCBXRUJLSVRfVkVSU0lPTl8xXzMKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0MTg1
KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
NiArMjQ0LDE1IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXAKICAg
ICAgICAgcmV0dXJuIE5PUFNFVURPOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTjsK
KyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVF
Tl9ET0M7CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisgICAgICAg
IHJldHVybiBGVUxMX1NDUkVFTl9ST09UX1dJVEhfVEFSR0VUOworI2VuZGlmCisgICAgICAgICAg
ICAKICAgICBjYXNlIFBzZXVkb0lucHV0TGlzdEJ1dHRvbjoKICNpZiBFTkFCTEUoREFUQUxJU1Qp
CiAgICAgICAgIHJldHVybiBJTlBVVF9MSVNUX0JVVFRPTjsKQEAgLTQyMiw2ICs0MzEsMTEgQEAg
c3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdFBhZ2UsICgiZmlyc3QiKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGxlZnRQYWdlLCAoImxlZnQiKSk7CiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJpZ2h0UGFnZSwgKCJyaWdodCIpKTsKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgZnVsbFNjcmVlbiwgKCItd2Via2l0LWZ1bGwtc2NyZWVuIikpOworICAgIERFRklORV9TVEFU
SUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuRG9jLCAoIi13ZWJraXQtZnVsbC1zY3Jl
ZW4tZG9jIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2Ny
ZWVuUm9vdFdpdGhUYXJnZXQsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0
IikpOworI2VuZGlmCiAKICAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NT
U2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlID0gMDsKICAgICBpZiAoIW5h
bWVUb1BzZXVkb1R5cGUpIHsKQEAgLTUzMyw2ICs1NDcsMTEgQEAgc3RhdGljIEhhc2hNYXA8QXRv
bWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZmly
c3RQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZSk7CiAgICAgICAgIG5h
bWVUb1BzZXVkb1R5cGUtPnNldChsZWZ0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9M
ZWZ0UGFnZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChyaWdodFBhZ2UuaW1wbCgp
LCBDU1NTZWxlY3Rvcjo6UHNldWRvUmlnaHRQYWdlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW4uaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvRnVsbFNjcmVlbik7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChm
dWxsU2NyZWVuRG9jLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2MpOwor
ICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0Lmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCk7CisjZW5k
aWYKICAgICB9CiAgICAgcmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7CiB9CkBAIC02NjIsNiArNjgx
LDExIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBjYXNl
IFBzZXVkb1NpbmdsZUJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vQnV0dG9uOgogICAgIGNhc2Ug
UHNldWRvTm90UGFyc2VkOgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGNhc2UgUHNldWRv
RnVsbFNjcmVlbjoKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgY2FzZSBQc2V1
ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBQc2V1ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgICAgIFBzZXVkb0xlZnRQYWdlLAogICAgICAgICAgICAgUHNldWRvUmlnaHRQYWdlLAog
ICAgICAgICAgICAgUHNldWRvRmlyc3RQYWdlLAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAg
ICAgICAgICAgUHNldWRvRnVsbFNjcmVlbiwKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5E
b2MsCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQsCisjZW5kaWYK
ICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUgewpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0OCw2ICs1NDgsMTQgQEAgc3RhdGlj
IHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0
cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5
bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYVF1aXJrc1N0eWxl
U2hlZXQoKTsKICAgICBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChx
dWlya3NSdWxlcyk7CiAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChx
dWlya3NTaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICAvLyBGdWxsLXNjcmVlbiBydWxlcy4KKyAgICBTdHJpbmcgZnVsbHNjcmVlblJ1bGVzID0g
U3RyaW5nKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoZnVsbHNjcmVlblVz
ZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFE
ZWZhdWx0U3R5bGVTaGVldCgpOworICAgIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TaGVldCA9
IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVsZXMpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVs
ZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIGRlZmF1bHRR
dWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFs
KCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQpA
QCAtNTYzLDYgKzU3MSwxMyBAQCBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkK
ICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNpbXBsZURlZmF1bHRTdHlsZVNo
ZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIAogICAgIC8vIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBx
dWlya3Mgc2hlZXQgeWV0IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxlcyBmb3IgZWxlbWVudHMg
YWxsb3dlZCBpbiBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KKworI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMg
PSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVu
VXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRy
YURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0
ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisjZW5kaWYKIH0K
ICAgICAKIHN0YXRpYyB2b2lkIGxvYWRWaWV3U291cmNlU3R5bGUoKQpAQCAtMjYxOSw2ICsyNjM0
LDM3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICB9CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9GdWxsU2NyZWVuOgorICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1l
bnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIGFuZCB0aGUgZG9jdW1lbnQncyBjdXJyZW50
IGZ1bGxzY3JlZW4gCisgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBhbiBlbGVtZW50IGlu
IHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBwbGllcyB0byAK
KyAgICAgICAgICAgICAgICAvLyB0aGF0IGVsZW1lbnQuIEFsc28sIGFuIDxpZnJhbWU+LCA8b2Jq
ZWN0PiBvciA8ZW1iZWQ+IGVsZW1lbnQgd2hvc2UgY2hpbGQgYnJvd3NpbmcgCisgICAgICAgICAg
ICAgICAgLy8gY29udGV4dCdzIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGhh
cyB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVkLgorICAgICAgICAgICAgICAg
IGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVu
dCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgICAgICAg
ICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlLCB0aGUgJ2Z1
bGwtc2NyZWVuLWRvYycgcHNldWRvY2xhc3MgYXBwbGllcyAKKyAgICAgICAgICAgICAgICAvLyB0
byB0aGUgcm9vdCBlbGVtZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAgICAgICAgaWYg
KCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9y
OjpQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisgICAgICAgICAgICAgICAgLy8gV2hp
bGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBhbmQgdGhlIGRvY3VtZW50
J3MgY3VycmVudCBmdWxsc2NyZWVuIGVsZW1lbnQgCisgICAgICAgICAgICAgICAgLy8gaXMgYW4g
ZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsIHRoZSAnZnVsbC1zY3JlZW4tZG9jLXdpdGgtdGFyZ2V0
JyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRoZSByb290IGVs
ZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50
KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWUtPmRvY3VtZW50KCktPmNvbnRhaW5zKGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTm90UGFyc2VkOgogICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFdlYkNvcmUv
Y3NzL2Z1bGxzY3JlZW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4u
Y3NzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMjYgQEAKKzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgcG9zaXRpb246
Zml4ZWQ7CisgIHRvcDowOworICBsZWZ0OjA7CisgIHJpZ2h0OjA7CisgIGJvdHRvbTowOworfQor
Oi13ZWJraXQtZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldCB7CisgIG92ZXJmbG93OmhpZGRl
bjsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAgd2lkdGg6IDEwMCU7Cisg
ICAgaGVpZ2h0OiAxMDAlCisgICAgaW1hZ2UtZml0OiBmaWxsOworfQorCitpbWc6LXdlYmtpdC1m
dWxsLXNjcmVlbiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGlt
YWdlLWZpdDogZmlsbDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6LXdlYmtp
dC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90dG9t
OiAwcHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE5OSw2ICsxOTksMTAgQEAKICNpbmNsdWRlICJIVE1MTm9TY3JpcHRFbGVtZW50LmgiCiAj
ZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBu
YW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC00MDQsNiArNDA4LDEx
IEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEsKICNlbmRpZgogICAg
ICwgbV93ZWFrUmVmZXJlbmNlKERvY3VtZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQog
ICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRBdHRyKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQor
ICAgICwgbV9pc0Z1bGxTY3JlZW4oMCkKKyAgICAsIG1fYXJlS2V5c0VuYWJsZWQoMCkKKyAgICAs
IG1fZnVsbFNjcmVlbkVsZW1lbnQoMCkKKyNlbmRpZgogewogICAgIG1fZG9jdW1lbnQgPSB0aGlz
OwogCkBAIC0zMjcyLDYgKzMyODEsMTAgQEAgUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNy
ZWF0ZUV2ZW50KAogI2VuZGlmCiAgICAgICAgIGV2ZW50ID0gVG91Y2hFdmVudDo6Y3JlYXRlKCk7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBlbHNlIGlmIChldmVudFR5cGUg
PT0gIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2UiKQorICAgICAgICBldmVudCA9IFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCk7CisjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKQogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiRGV2aWNlT3JpZW50YXRpb25F
dmVudCIpCiAgICAgICAgIGV2ZW50ID0gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKCk7
CkBAIC0zMzIzLDYgKzMzMzYsMTAgQEAgdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZO
ZWVkZWQoYwogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hF
dmVudHModHJ1ZSk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdl
RXZlbnQpCisgICAgICAgIGFkZExpc3RlbmVyVHlwZShGVUxMU0NSRUVOX0xJU1RFTkVSKTsKKyNl
bmRpZgogfQogCiBDU1NTdHlsZURlY2xhcmF0aW9uKiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHls
ZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikKQEAgLTUwMzYsNSArNTA1Myw4NCBAQCBJbnNwZWN0
b3JDb250cm9sbGVyKiBEb2N1bWVudDo6aW5zcGVjdG9yCiAgICAgcmV0dXJuIHBhZ2UoKSA/IHBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKIH0KICNlbmRpZgorICAgIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4o
KQoreworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKGRvY3Vt
ZW50RWxlbWVudCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMoKQoreworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudFdpdGhLZXlzKGRvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKK30KKyAgICAKK3ZvaWQgRG9j
dW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQq
IGVsZW1lbnQsIGJvb2wga2V5c0VuYWJsZWQpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2Uo
KS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKCFlbGVtZW50KQorICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7Cisg
ICAgCisgICAgaWYgKHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3Jl
ZW5Gb3JFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgbV9hcmVLZXlzRW5hYmxlZCA9IGtleXNF
bmFibGVkOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChwYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5F
bGVtZW50KSkKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsc2Ny
ZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKK30KKyAgICAKK3ZvaWQgRG9jdW1l
bnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVs
ZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnRFbGVtZW50KCk7CisgICAgbV9pc0Z1bGxTY3JlZW4g
PSB0cnVlOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVs
bFN0eWxlQ2hhbmdlKTsKKyAgICBpZiAoZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9mdWxsU2NyZWVu
RWxlbWVudCkKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMo
RnVsbFN0eWxlQ2hhbmdlKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50
KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNj
cmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdp
bGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1l
bnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKKyAgICBp
ZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghcGFnZSgpLT5zZXR0
aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAor
ICAgIG1faXNGdWxsU2NyZWVuID0gZmFsc2U7CisgICAgbV9hcmVLZXlzRW5hYmxlZCA9IGZhbHNl
OworICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIG1fZnVsbFNjcmVlbkVs
ZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICAgICAgbV9m
dWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQ6OmNyZWF0ZSgpKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAgfSBl
bHNlCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIGRvY3VtZW50RWxlbWVudCgpLT5zZXRO
ZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOworfQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
aAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNzQsNiArMjc0LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNl
bmRpZgogCiAgICAgRG9jdW1lbnRUeXBlKiBkb2N0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kb2NU
eXBlLmdldCgpOyB9CiAKQEAgLTY3NSw3ICs2NzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRSQU5T
SVRJT05FTkRfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4ODAwLAogICAgICAgICBCRUZPUkVM
T0FEX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDEwMDAsCiAgICAgICAgIFRPVUNIX0xJ
U1RFTkVSICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjAwMCwKLSAgICAgICAgQkVGT1JFUFJP
Q0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAwCisgICAgICAgIEJFRk9SRVBST0NF
U1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMCwKKyAgICAgICAgRlVMTFNDUkVFTl9M
SVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHg4MDAwLAogICAgIH07CiAKICAgICBib29sIGhh
c0xpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdCB7IHJldHVybiAo
bV9saXN0ZW5lclR5cGVzICYgbGlzdGVuZXJUeXBlKTsgfQpAQCAtMTAwMSw2ICsxMDA1LDIxIEBA
IHB1YmxpYzoKICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0
TGlzdGVuZXIoKTsKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0cmlidXRlTmFtZSgp
IGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1lOyB9CisgICAgCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBt
X2lzRnVsbFNjcmVlbjsgfQorICAgIGJvb2wgd2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFi
bGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW4gJiYgbV9hcmVLZXlzRW5hYmxlZDsg
fQorICAgIEVsZW1lbnQqIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0IHsg
cmV0dXJuIG1fZnVsbFNjcmVlbkVsZW1lbnQ7IH0KKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuKCk7CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7Cisg
ICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhFbGVtZW50
KiwgYm9vbCBrZXlzRW5hYmxlZCk7CisgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7
CisgICAgCisgICAgdm9pZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1l
bnQqKTsKKyAgICB2b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVu
dCopOworICAgIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQq
KTsKKyNlbmRpZgogCiAgICAgYm9vbCB3cml0ZURpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV93
cml0ZURpc2FibGVkOyB9CiAgICAgdm9pZCBzZXRXcml0ZURpc2FibGVkKGJvb2wgZmxhZykgeyBt
X3dyaXRlRGlzYWJsZWQgPSBmbGFnOyB9CkBAIC0xMjg2LDYgKzEzMDUsMTIgQEAgcHJpdmF0ZToK
ICAgICBIYXNoU2V0PE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVkaWFDYW5TdGFydExpc3Rl
bmVyczsKIAogICAgIFF1YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5hbWU7CisgICAgCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU4pCisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbjsKKyAgICBib29sIG1f
YXJlS2V5c0VuYWJsZWQ7CisgICAgRWxlbWVudCogbV9mdWxsU2NyZWVuRWxlbWVudDsKKyNlbmRp
ZgogfTsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3Ry
aW5nSW1wbCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiA2NDE4NSkKKysrIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCwxNSBA
QCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtEb250RW51bV0gdm9pZCBpbml0aWFsaXplV01MUGFn
ZVN0YXRlKCk7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVO
QUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsK
KyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbjsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFi
bGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCB3ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQ7CisgICAgICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwor
I2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdF
X09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAg
ICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpJbmRleDog
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1ODIsNSArMTU4MiwxNyBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxk
Q3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0dXJuIE5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVy
ZXIoY2hpbGQpOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lk
IEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAgICBkb2N1bWVudCgpLT53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0aGlzLCBmYWxzZSk7Cit9
CisKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7Cisg
ICAgZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMo
dGhpcywgdHJ1ZSk7Cit9CisjZW5kaWYgICAgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5k
ZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RF
TkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSk7Cisj
ZW5kaWYKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVD
b250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNz
aW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIApAQCAtMjkyLDYgKzI5NSwxMSBAQCBw
dWJsaWM6CiAjaWYgRU5BQkxFKFNWRykKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihOb2RlKikgY29uc3Q7IAogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHZvaWQgd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAg
ICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0MTg1KQor
KysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMs
MTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGlubmVyVGV4dDsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYg
RU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
OworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRp
ZgorCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKQEAgLTIwNSw2ICsy
MTAsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0
aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3Vj
aG1vdmU7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZF
TlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGVuZDsKICAgICAgICAg
YXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVu
dGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOworICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOXSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVs
bHNjcmVlbmNoYW5nZTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDY0MTg1
KQorKysgV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYy
LDEzIEBAIGJvb2wgRXZlbnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY28KICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK2Jvb2wgRXZlbnQ6OmlzV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisjZW5kaWYKKwogYm9vbCBFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBj
b25zdAogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJD
b3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmltYXRpb25FdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQo
KSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3Q7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0OworI2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAg
ICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6
IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
IFwKICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2UpCisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAg
ICAgY2xhc3MgRXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3Jl
L2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
Ky8vIEZyb20gdGhlIE1vemlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBbZnVsbFNjcmVl
bkNoYW5nZUV2ZW50XSBidWJibGVzIAorLy8gYW5kIGlzIG5vdCBjYW5jZWxsYWJsZS4iCisKK1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkK
KzogRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwg
ZmFsc2UpCit7Cit9CisKK1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCgpCit7Cit9CisKK3ZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2Vs
YWJsZUFyZykKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7Cit9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Rv
bS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKyNk
ZWZpbmUgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
Y2xhc3MgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1Ymxp
YzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ+IGNy
ZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudCk7CisgICAgfSAgICAgICAgCisgICAgdmlydHVhbCB+V2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50KCk7CisgICAgCisgICAgdm9pZCBpbml0V2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbmNlbGFibGVBcmcpOworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0
dXJuIHRydWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50KCk7CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmlu
ZyYgdHlwZSk7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKEZVTExTQ1JFRU4pCisKKyNlbmRpZiAvLyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnRfaApJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRs
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBldmVu
dHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V09SS0VSUyZGVUxM
U0NSRUVOLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gRnVsbFNjcmVlbkNoYW5nZUV2
ZW50IDogRXZlbnQgeworCisgICAgICAgIHZvaWQgaW5pdEVycm9yRXZlbnQoaW4gRE9NU3RyaW5n
IHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVB
cmcsIGluIERPTVN0cmluZyBtZXNzYWdlQXJnLCBpbiBET01TdHJpbmcgZmlsZW5hbWVBcmcsIGlu
IHVuc2lnbmVkIGxvbmcgbGluZW5vQXJnKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIG9ud2Vi
a2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAogb253ZWJraXRiZWdp
bmZ1bGxzY3JlZW4KIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgorb253ZWJraXRmdWxsc2NyZWVuY2hh
bmdlCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKIG9wdGltdW0KIHBhdHRlcm4KQEAgLTI4Miw1ICsy
ODMsNiBAQCB2aWV3c291cmNlCiB2bGluawogdnNwYWNlCiB3ZWJraXRkaXJlY3RvcnkKK3dlYmtp
dGFsbG93ZnVsbHNjcmVlbgogd2lkdGgKIHdyYXAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2
aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0
Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorI2luY2x1ZGUgIldl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw3ICsyNjYsMTEgQEAgdm9p
ZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbnRvdWNoY2FuY2VsQXR0cikgewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VBdHRyKSB7CisgICAg
ICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7
CiAgICAgfQorI2VuZGlmCiB9CiAKIFN0cmluZyBIVE1MRWxlbWVudDo6aW5uZXJIVE1MKCkgY29u
c3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMSBAQCBtb2R1
bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0Vf
T0JKRUNUSVZFX0MKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0aXRsZURp
c3BsYXlTdHJpbmc7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYm
IEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4o
KTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5k
aWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlz
aW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMyLDYgKzEzMiwxMCBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJz
ZU1hcHBlZEF0dHJpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQog
ICAgICAgICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94QXR0cmlidXRlKGF0dHIpKTsKICNl
bmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2Vi
a2l0YWxsb3dmdWxsc2NyZWVuQXR0cikKKyAgICAgICAgbV9hbGxvd0Z1bGxTY3JlZW4gPSB0cnVl
OworI2VuZGlmCiAgICAgZWxzZQogICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VN
YXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAko
cmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBI
VE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50QmFzZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAKKyAgICBib29sIHdlYmtpdEFsbG93RnVs
bFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dGdWxsU2NyZWVuOyB9CisgICAgdm9pZCBz
ZXRXZWJraXRBbGxvd0Z1bGxTY3JlZW4oYm9vbCB2YWx1ZSkgeyBtX2FsbG93RnVsbFNjcmVlbiA9
IHZhbHVlOyB9CiAKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01MCw2ICs1Myw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0OwogCiAgICAgQXRvbWlj
U3RyaW5nIG1fbmFtZTsKKyAgICBib29sIG1fYWxsb3dGdWxsU2NyZWVuOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZp
c2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmlu
ZyBzY3JvbGxpbmc7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZV
TExTQ1JFRU4KKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2Via2l0QWxs
b3dGdWxsU2NyZWVuOworI2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3Ry
aW5nIHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyAr
MzEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZQogewogICAg
IGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHBhdXNlKHByb2Nl
c3NpbmdVc2VyR2VzdHVyZSgpKTsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgaWYgKGlz
RnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgIEhUTUxFbGVtZW50
OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIEhU
TUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmIChtX2lzRnVsbHNjcmVl
bikKKyAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAK
ICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKQEAgLTIwMTMsMjQgKzIwMTMsNDQgQEAg
dm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcgogfQogI2VuZGlmIC8vIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6Omlz
RnVsbHNjcmVlbigpIGNvbnN0IAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIHJldHVy
biBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
KCkgPT0gdGhpcyA6IGZhbHNlOworI2Vsc2UKKwlyZXR1cm4gbV9pc0Z1bGxzY3JlZW47CisjZW5k
aWYKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogeworI2lm
IEVOQUJMRShGVUxMU0NSRUVOKQorICAgIEFTU0VSVCghaXNGdWxsc2NyZWVuKCkpOworICAgIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbHNlCiAgICAgQVNTRVJUKCFtX2lz
RnVsbHNjcmVlbik7CiAgICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgIGlmIChkb2N1bWVu
dCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewogICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKICAgICAg
ICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQp
OwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2Ny
ZWVuKCkKIHsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBBU1NFUlQoaXNGdWxsc2NyZWVu
KCkpOworICAgIGlmIChkb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudCgpLT53ZWJraXRDYW5j
ZWxGdWxsU2NyZWVuKCk7CisjZWxzZQogICAgIEFTU0VSVChtX2lzRnVsbHNjcmVlbik7CiAgICAg
bV9pc0Z1bGxzY3JlZW4gPSBmYWxzZTsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgp
LT5wYWdlKCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmV4aXRGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChl
dmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CisjZW5kaWYKIH0K
IAogUGxhdGZvcm1NZWRpYSBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybU1lZGlhKCkgY29uc3QK
SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNyArMTU3LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpIGNvbnN0IHsg
cmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKTsg
fQogICAgIAotICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxz
Y3JlZW47IH0KKyAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0OwogICAgIHZvaWQgZW50ZXJG
dWxsc2NyZWVuKCk7CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCkluZGV4OiBXZWJDb3Jl
L2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
VmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1
ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlJlbmRlclZp
ZGVvLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0xMjYsMTEgKzEyNywyMyBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNj
cmVlCiAgICAgaWYgKCFwYWdlKSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU4pCisgICAgaWYgKCFwYWdlLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKKyAgICAKICAgICBpZiAoIXBsYXll
cigpIHx8ICFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2NyZWVuKCkgfHwgIXBsYXllcigpLT5oYXNW
aWRlbygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBDaGVjayB3aXRoIHRoZSBw
bGF0Zm9ybSBjbGllbnQuCi0gICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3Vw
cG9ydHNGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JF
bGVtZW50KHRoaXMpOworI2Vsc2UKKwkvLyBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JOb2RlIGhhcyBi
ZWVuIHJlbW92ZWQgKGluIGZhdm9yIG9mIC4uLkZvckVsZW1lbnQpLiAgUmV0dXJuCisgICAgLy8g
dHJ1ZSBoZXJlIGluc3RlYWQsIHNpbmNlIHRoZSBvbGQgaW1wbGVtZW50YXRpb24gd291bGQgcmV0
dXJuIHRydWUgaWYgdGhlIAorICAgIC8vIGVsZW1lbnQgaXMgYSBIVE1MVmlkZW9FbGVtZW50Lgor
CXJldHVybiB0cnVlOworI2VuZGlmCiB9CiAKIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OnZp
ZGVvV2lkdGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjQxODUpCisr
KyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxOSw5ICsy
MTksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dz
QWNjZWxlcmF0ZWRDb21wb3NpdGluZygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5v
ZGUqKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShOb2RlKikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVl
bkZvck5vZGUoTm9kZSopIHsgfQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICB2aXJ0
dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50KikgeyBy
ZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvckVs
ZW1lbnQoRWxlbWVudCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5G
b3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyNlbmRpZgogCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlUmVjdEZvclRpbGVkQmFj
a2luZ1N0b3JlKCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJ
KHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTM2LDYgKzEzNiw5IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQog
ICAgICwgbV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZChmYWxzZSkgLy8gV2lsbCBiZSBkZWxldGVk
IHNvb24sIGRvIG5vdCB1c2UuCiAgICAgLCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChm
YWxzZSkKICAgICAsIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkKHRydWUpCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisgICAgLCBtX2Z1bGxTY3JlZW5FbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAg
LCBtX21lbW9yeUluZm9FbmFibGVkKGZhbHNlKQogICAgICwgbV9pbnRlcmFjdGl2ZUZvcm1WYWxp
ZGF0aW9uKGZhbHNlKQogewpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29y
ZS9wYWdlL1NldHRpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxMCw2ICszMTAsMTEgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZChib29sIGZsYWcpIHsgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFnOyB9
CiAgICAgICAgIGJvb2wgcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShGVUxMU0NS
RUVOKQorICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBtX2Z1
bGxTY3JlZW5FbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIGZ1bGxTY3JlZW5FbmFibGVk
KCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkVuYWJsZWQ7IH0KKyNlbmRpZgorCiAgICAg
ICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fbWVtb3J5SW5mb0Vu
YWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAKQEAgLTQwMyw2ICs0MDgsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZDog
MTsgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRvIG5vdCB1c2UuCiAgICAgICAgIGJvb2wgbV9w
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fZG5zUHJlZmV0
Y2hpbmdFbmFibGVkIDogMTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgYm9vbCBt
X2Z1bGxTY3JlZW5FbmFibGVkIDogMTsKKyNlbmRpZgogICAgICAgICBib29sIG1fbWVtb3J5SW5m
b0VuYWJsZWQ6IDE7CiAgICAgICAgIGJvb2wgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uOiAx
OwogICAgIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3Niw3ICs3NzYsMTAgQEAgUGFzc1JlZlB0cjxN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRQogdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAg
aWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAg
bWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOworICAgICAgICBpZiAobWVkaWFFbGVt
ZW50KCktPmlzRnVsbHNjcmVlbigpKQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmV4aXRG
dWxsc2NyZWVuKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5l
bnRlckZ1bGxzY3JlZW4oKTsKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAg
ICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpJ
bmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgZW51bSBQc2V1ZG9J
ZCB7CiAgICAgTUVURVJfSE9SSVpPTlRBTF9CQVIsIE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwg
TUVURVJfSE9SSVpPTlRBTF9TVUJPUFRJTUFMLCBNRVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19H
T09ELAogICAgIE1FVEVSX1ZFUlRJQ0FMX0JBUiwgTUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVU
RVJfVkVSVElDQUxfU1VCT1BUSU1BTCwgTUVURVJfVkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAog
ICAgIEFGVEVSX0xBU1RfSU5URVJOQUxfUFNFVURPSUQsCisgICAgRlVMTF9TQ1JFRU4sIEZVTExf
U0NSRUVOX0RPQywgRlVMTF9TQ1JFRU5fUk9PVF9XSVRIX1RBUkdFVCwKICAgICBGSVJTVF9QVUJM
SUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLAogICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEID0g
RklMRV9VUExPQURfQlVUVE9OLAogICAgIFBVQkxJQ19QU0VVRE9JRF9NQVNLID0gKCgxIDw8IEZJ
UlNUX0lOVEVSTkFMX1BTRVVET0lEKSAtIDEpICYgfigoMSA8PCBGSVJTVF9QVUJMSUNfUFNFVURP
SUQpIC0gMSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62833</attachid>
            <date>2010-07-28 09:22:00 -0700</date>
            <delta_ts>2010-07-28 09:42:42 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>57157</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MTg1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU4gbW9kZSBmb3IgdGhlIE1hYyAoZXhj
ZXB0IGlQaG9uZSkuCisKIDIwMTAtMDctMjcgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91
Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFRlbXBvcmFyaWx5IHJvbGxpbmcgb3V0IGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzY0MTc3LApJbmRleDogSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJ
KHJldmlzaW9uIDY0MTg1KQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU5Nyw2ICs1OTcsNyBAQAogI2VuZGlmCiAjZGVmaW5lIEhBVkVfUkVBRExJ
TkUgMQogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQorI2RlZmluZSBFTkFCTEVfRlVMTFND
UkVFTiAxCiAjZW5kaWYgLyogUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0oSVBIT05FKSAqLwog
CiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MTkwKQorKysgV2ViQ29yZS9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNDEgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisgICAgICAgIAor
ICAgICAgICBNb3ppbGxhIGhhcyBwcm9wb3NlZCBhIG5ldyBzZXQgb2YgSmF2YVNjcmlwdCBBUElz
IHdoaWNoIGFsbG93IGFueSBlbGVtZW50IGluCisgICAgICAgIGEgZG9jdW1lbnQgdG8gZ28gZnVs
bC1zY3JlZW4uICBUaGUgY3VycmVudCByZXZpc2lvbiBvZiB0aGVpciBwcm9wb3NhbCBjYW4gYmUg
CisgICAgICAgIGZvdW5kIGhlcmU6CisgICAgICAgIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcv
aW5kZXgucGhwP3RpdGxlPUdlY2tvOkZ1bGxTY3JlZW5BUEkmb2xkaWQ9MjM1NjAxPgorICAgICAg
ICAKKyAgICAgICAgVGhlIHByb3Bvc2VkIHNwZWNpZmljYXRpb24gaW5jbHVkZXMgdGhlIGZvbGxv
d2luZzoKKyAgICAgICAgCisgICAgICAgIERvY3VtZW50OgorICAgICAgICAtIFRocmVlIG5ldyBt
ZXRob2RzIG9uIERvY3VtZW50OgorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVu
KCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKKyAgICAg
ICAgICAgICsgdm9pZCBjYW5jZWxGdWxsU2NyZWVuKCkKKyAgICAgICAgLSBUaHJlZSBuZXcgYXR0
cmlidXRlcyBvZiBEb2N1bWVudDoKKyAgICAgICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJv
b2xlYW4gZnVsbFNjcmVlbgorICAgICAgICAgICAgKyByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVh
biBmdWxsU2NyZWVuV2l0aEtleXMKKyAgICAgICAgICAgICsgKG9wdGlvbmFsKSByZWFkb25seSBh
dHRyaWJ1dGUgRWxlbWVudCBjdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQKKyAgICAgICAgICAgIAor
ICAgICAgICBFbGVtZW50OgorICAgICAgICAtIFR3byBuZXcgbWV0aG9kcyBvbiBFbGVtZW50Ogor
ICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuKCkKKyAgICAgICAgICAgICsgdm9p
ZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKKyAgICAgICAgCisgICAgICAgIEhUTUxJRnJh
bWVFbGVtZW50OgorICAgICAgICAtIE9uZSBuZXcgY29udGVudCBhdHRyaWJ1dGU6CisgICAgICAg
ICAgICArIGFsbG93RnVsbFNjcmVlbgorICAgICAgICAgICAgCisgICAgICAgIEV2ZW50czoKKyAg
ICAgICAgLSBPbmUgbmV3IGV2ZW50OgorICAgICAgICAgICAgKyBmdWxsU2NyZWVuQ2hhbmdlCisg
ICAgICAgIAorICAgICAgICBDU1MgUHNldWRvLWNsYXNzZXM6CisgICAgICAgIC0gVGhyZWUgbmV3
IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4KKyAgICAgICAgICAg
ICsgOmZ1bGwtc2NyZWVuLWRvYworICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tcm9vdC13aXRo
LXRhcmdldAorICAgICAgICAKKyAgICAgICAgRm9yIFdlYktpdCdzIGluaXRpYWwgaW1wbGVtZW50
YXRpb24sIGFsbCB0aGUgYWJvdmUgbmV3IEFQSXMgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIAorICAg
ICAgICAid2Via2l0IiBvciAiLXdlYmtpdCIgd2hlcmUgYXBwcm9wcmlhdGUuCisgICAgICAgIAor
ICAgICAgICBOZXcgdGVzdHM6CisgICAgICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tYXBpLmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1jc3MuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJl
cXVlc3QuaHRtbAorCisgICAgICAgIFByb2plY3QgZmlsZSBjaGFuZ2VzOgorICAgICAgICAqIENv
bmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBBZGRlZCBhbiBFTkFCTEVfRlVM
TFNDUkVFTiBlbnRyeS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRlZCBydWxl
cyBmb3IgZnVsbHNjcmVlbi5jc3MgYW5kIFdlYkNvcmUuRnVsbFNjcmVlbi5leHAuCisgICAgICAg
ICogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDogQWRkZWQgZXhwb3J0IHN5bWJvbHMgZm9yIERvY3Vt
ZW50IGFuZCBFbGVtZW50IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IE5ldyBzb3VyY2UgZmlsZXMgYWRkZWQgdG8gdGhlIHByb2plY3QuCisK
KyAgICAgICAgSURMIGNoYW5nZXM6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogQWRkZWQg
dGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIERvY3VtZW50J3MgamF2YXNjcmlwdCBpbnRl
cmZhY2UuCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2Ny
ZWVuIEFQSSB0byB0aGUgRWxlbWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAq
IGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOiBBZGRlZCB0aGUgYWxsb3dGdWxsU2NyZWVuIGF0
dHJpYnV0ZS4KKworICAgICAgICBTb3VyY2UgY2hhbmdlczoKKyAgICAgICAgKiBiaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDogRXhwb3NlZCBEb2N1bWVudCBhbmQgRWxlbWVudCBm
dWxsc2NyZWVuIGZ1bmN0aW9ucyBpbiB0aGUgRE9NIGNsYXNzZXMuCisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmNwcDogQWRkZWQgbmV3IEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMuCisgICAg
ICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOiAKKyAgICAgICAgKFdlYkNvcmU6
Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4
dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDogCisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KTogQWRkZWQgbmV3IGZ1bGwtc2NyZWVuIHBzZXVkbyBj
bGFzc2VzIHRvIHRoZSBQc2V1ZG9UeXBlIGVudW0uCisgICAgICAgICogY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKTogUHVs
bCB0aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIGFuZCB0aGUg
ZGVmYXVsdFF1aXJrc1N0eWxlIHNoZWV0cy4KKyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVE
ZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRvIHRoZSBkZWZh
dWx0U3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBDaGVjayBmb3IgdGhlIG5ldyBGdWxsU2Ny
ZWVuIHBzZXVkbyBjbGFzc2VzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OmNyZWF0ZUV2ZW50KTogU3VwcG9ydCBjcmVhdGluZyBhICJXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlIiBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJ
Zk5lZWRlZCk6IFN1cHBvcnQgbGlzdGVuaW5nIGZvciBhICJ3ZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQiCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
V2l0aEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKTogUGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBj
bGllbnQgdG8gZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKTogUGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9t
ZSBjbGllbnQgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogU2V0cyB0aGUgRnVs
bFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxlbWVudCBhbmQgaXRz
IGRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVs
bFNjcmVlbkZvckVsZW1lbnQpOiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ3VycmVudGx5
IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KTogQ2xlYXJzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9u
IHRoZSBmdWxsLXNjcmVlbiBlbGVtZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IEFkZGVkIGNvbnN0IGFjY2Vzc29ycyBmb3IgbmV3IGZ1bGwtc2NyZWVuIGlu
c3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjopOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdElzRnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBt
X2lzRnVsbFNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRJc0Z1bGxT
Y3JlZW5XaXRoS2V5c0VuYWJsZWQpOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlbiBhbmQgbV9h
cmVLZXlzRW5hYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQpOiBBY2Nlc3NvciBmb3IgbV9mdWxsU2NyZWVuRWxlbWVudC4KKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbik6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbkZvckVsZW1lbnRXaXRoS2V5cy4gCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6
CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojppc1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6IE92ZXJyaWRlZCBieSBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6Oldl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0V2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAgICogZG9tL1dlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKTogUGFyc2UgdGhlIG5ldyAib253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiBhdHRyaWJ1
dGUgYW5kIHJlZ2lzdGVyIGEgbGlzdGVuZXIuCisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxl
bWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OndlYmtpdEFsbG93
RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpzZXRXZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nl
c3NvciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDogUmUtaW1wbGVtZW50ZWQgdGhlIEhUTUxNZWRpYUVsZW1lbnQgZnVsbCBzY3JlZW4g
c3VwcG9ydCBpbiB0ZXJtcyBvZiB0aGUgbmV3IChnZW5lcmljKSBmdWxsIHNjcmVlbiBzdXBwb3J0
LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3Vt
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJl
Y29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVs
bHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxz
Y3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3Jl
ZW4pOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50
OjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5o
OgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJv
bWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBQYXNzIHRocm91Z2ggdG8g
dGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6
OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlz
dGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KTogQ3Jl
YXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91Z2ggdG8gdGhlIGN1
cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3Mu
aDogQWRkIGEgbmV3IHNldHRpbmcgdG8gY29udHJvbCBydW50aW1lIHN1cHBvcnQgZm9yIGZ1bGwg
c2NyZWVuIG1vZGUgKGRlZmF1bHRzIHRvIG9mZikKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdz
OjpzZXRGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6ZnVs
bFNjcmVlbkVuYWJsZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxl
bWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRoZSBmdWxsIHNjcmVlbiBidXR0b24gbm93IHRv
Z2dsZXMgZnVsbCBzY3JlZW4gbW9kZSAocHJldmlvdXNseSwgaXQgb25seSBlbnRlcmVkKS4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAg
KFdlYkNvcmU6Oik6CisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFdl
YktpdENTU0tleWZyYW1lc1J1bGUgXAogICAgIFdlYktpdENTU01hdHJpeCBcCiAgICAgV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCBcCiAg
ICAgV2ViS2l0UG9pbnQgXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCBcCiAgICAgV2ViU29j
a2V0IFwKQEAgLTY2Miw2ICs2NjMsMTAgQEAgaWZlcSAoJChPUyksTUFDT1MpCiBlbmRpZgogZW5k
aWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVOLCQoRkVBVFVSRV9ERUZJ
TkVTKSksIEVOQUJMRV9GVUxMU0NSRUVOKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9
ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL2Z1bGxzY3JlZW4uY3Nz
CitlbmRpZgorCiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJy
YXlzLnBsICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAJcGVybCAkPCAkQCBVc2VyQWdlbnRT
dHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAKSW5kZXg6IFdl
YkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNp
b24gNjQxOTApCisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29u
ZmlnCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIEVOQUJMRV9GSUxURVJTID0gRU5B
QkxFX0ZJTFRFUlM7CiBFTkFCTEVfRklMRV9SRUFERVIgPSBFTkFCTEVfRklMRV9SRUFERVI7CiBF
TkFCTEVfRklMRV9XUklURVIgPSA7CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CitFTkFCTEVfRlVM
TFNDUkVFTiA9IEVOQUJMRV9GVUxMU0NSRUVOOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gRU5BQkxF
X0dFT0xPQ0FUSU9OOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJMRV9JQ09OREFUQUJBU0U7
CiBFTkFCTEVfSU1BR0VfUkVTSVpFUiA9IDsKQEAgLTg2LDQgKzg3LDQgQEAgRU5BQkxFX1hIVE1M
TVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9IEVOQUJM
RV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVO
QUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQl9TTElD
RSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9M
T0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9E
QVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllf
VVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5B
QkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikg
JChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1Nf
VEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9Y
UEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BS
RUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFC
TEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklE
KSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJM
RV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRT
T1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9G
SUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JFRU4pICQo
RU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdF
X1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVD
SCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJM
RV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VC
X0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVO
QUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVO
QUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19E
T01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlH
Tl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJf
U09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JL
RVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7Cklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDk4MCw2ICs0OTgwLDggQEAKIAkJQzVFQkREODQxMDVFRERFQzAwNTY4
MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4MkUwMDBCMEE1MiAvKiBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rp
b25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlm
eVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9u
TGlzdExldmVsLmNwcCAqLzsgfTsKKwkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovOyB9OwogCQlDRTAyRjBDNDExRTgzQUREMDBDNjY4NEEg
LyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9s
bGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMz
IC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0U0QzAw
RTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovOyB9OwpAQCAt
MTA2NDcsNiArMTA2NDksMTAgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3
NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNE
QTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzYxMUU3
QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENv
bnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENv
bnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTcyRTAwMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBab29tTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFMzEw
RjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjAxLDYgKzE2NjA3LDcgQEAKIAkJCQlCQzlBREQyMjBD
QzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYx
MUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAog
CQkJCTRDREU1NEVDMEU1NTc5NzgwMDg5RTI2QyAvKiB3bWwuY3NzICovLAorCQkJCUNENEUwQUZB
MTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJCSk7CiAJCQlwYXRoID0g
Y3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MTM2LDYgKzE3MTQzLDkgQEAK
IAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3Bw
ICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVu
dC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25F
dmVudC5pZGwgKi8sCisJCQkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5oICovLAorCQkJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNEQTc5QTc2MTFFN0E0RDkw
MDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTMxQzBG
RjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJ
CTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywK
IAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lmlk
bCAqLywKQEAgLTE5ODQ3LDYgKzE5ODU3LDcgQEAKIAkJCQlFMUJFNTEyRTBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5N0RENEQ4NzBGREY0
RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0UxNzJFMDEx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREE3OUE3
MzExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIyMjQyLDYgKzIyMjUzLDcgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAx
RTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFC
RTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdz
L29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1
Niw2ICsxNTYsMTEgQEAgQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUgV0VCS0lUXwog
LSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKXRhZ25h
bWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVy
eVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJ
T05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNl
bGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5B
QkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCistICh2b2lkKXdlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9O
XzRfMDsKKy0gKHZvaWQpd2Via2l0Q2FuY2VsRnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFn
bWVudCA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05fMV8zCkBAIC0yMjQsNiArMjI5LDEwIEBAIEBp
bnRlcmZhY2UgRE9NRWxlbWVudCA6IERPTU5vZGUgV0VCS0lUX1YKIC0gKERPTU5vZGVMaXN0ICop
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKiluYW1lIEFWQUlMQUJMRV9JTl9XRUJL
SVRfVkVSU0lPTl80XzA7CiAtIChET01FbGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcg
KilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTU5vZGVM
aXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lO
X1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBF
TkFCTEVfRlVMTFNDUkVFTgorLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJTEFC
TEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYKIEBlbmQK
IAogQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAt
NTY5LDYgKzU3OCw5IEBAIEBpbnRlcmZhY2UgRE9NSFRNTElGcmFtZUVsZW1lbnQgOiBET01IVE0K
IEBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqd2lkdGg7CiBAcHJvcGVydHkocmVhZG9ubHksIHJl
dGFpbikgRE9NRG9jdW1lbnQgKmNvbnRlbnREb2N1bWVudDsKIEBwcm9wZXJ0eShyZWFkb25seSwg
cmV0YWluKSBET01BYnN0cmFjdFZpZXcgKmNvbnRlbnRXaW5kb3cgQVZBSUxBQkxFX0lOX1dFQktJ
VF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVf
RlVMTFNDUkVFTgorQHByb3BlcnR5KGFzc2lnbikgQk9PTCB3ZWJraXRBbGxvd0Z1bGxTY3JlZW47
CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MSW1hZ2VFbGVtZW50IDogRE9NSFRN
TEVsZW1lbnQgV0VCS0lUX1ZFUlNJT05fMV8zCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lv
biA2NDE4NSkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDYgKzI0NCwxNSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRv
VHlwCiAgICAgICAgIHJldHVybiBOT1BTRVVETzsKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAgICAgICByZXR1cm4gRlVMTF9T
Q1JFRU47CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICByZXR1cm4gRlVM
TF9TQ1JFRU5fRE9DOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0Ogor
ICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fUk9PVF9XSVRIX1RBUkdFVDsKKyNlbmRpZgorICAg
ICAgICAgICAgCiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246CiAjaWYgRU5BQkxFKERB
VEFMSVNUKQogICAgICAgICByZXR1cm4gSU5QVVRfTElTVF9CVVRUT047CkBAIC00MjIsNiArNDMx
LDExIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWwKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RQYWdlLCAoImZpcnN0IikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsZWZ0UGFnZSwgKCJsZWZ0IikpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByaWdodFBhZ2UsICgicmlnaHQi
KSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9t
aWNTdHJpbmcsIGZ1bGxTY3JlZW4sICgiLXdlYmtpdC1mdWxsLXNjcmVlbiIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbkRvYywgKCItd2Via2l0LWZ1
bGwtc2NyZWVuLWRvYyIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywg
ZnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0LCAoIi13ZWJraXQtZnVsbC1zY3JlZW4tcm9vdC13aXRo
LXRhcmdldCIpKTsKKyNlbmRpZgogCiAgICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1w
bCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlPiogbmFtZVRvUHNldWRvVHlwZSA9IDA7CiAgICAg
aWYgKCFuYW1lVG9Qc2V1ZG9UeXBlKSB7CkBAIC01MzMsNiArNTQ3LDExIEBAIHN0YXRpYyBIYXNo
TWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWwKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+
c2V0KGZpcnN0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UpOwogICAg
ICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQobGVmdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6
UHNldWRvTGVmdFBhZ2UpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQocmlnaHRQYWdl
LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb1JpZ2h0UGFnZSk7CisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW4pOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBl
LT5zZXQoZnVsbFNjcmVlbkRvYy5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVu
RG9jKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW5Sb290V2l0aFRh
cmdldC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQp
OworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBuYW1lVG9Qc2V1ZG9UeXBlOwogfQpAQCAtNjYy
LDYgKzY4MSwxMSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvCiAg
ICAgY2FzZSBQc2V1ZG9TaW5nbGVCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9Ob0J1dHRvbjoKICAg
ICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBjYXNl
IFBzZXVkb0Z1bGxTY3JlZW46CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgIGNh
c2UgUHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0OgorI2VuZGlmCiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgUHNldWRvRmlyc3RQYWdlOgogICAgIGNhc2UgUHNldWRvTGVmdFBhZ2U6Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgICAgICBQc2V1ZG9MZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1JpZ2h0
UGFnZSwKICAgICAgICAgICAgIFBzZXVkb0ZpcnN0UGFnZSwKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW4sCisgICAgICAgICAgICBQc2V1ZG9GdWxs
U2NyZWVuRG9jLAorICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0LAor
I2VuZGlmCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBNYXJnaW5Cb3hUeXBlIHsKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NDgsNiArNTQ4LDE0IEBA
IHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVmYXVsdFN0eWxlKCkKICAgICBTdHJpbmcgcXVpcmtzUnVs
ZXMgPSBTdHJpbmcocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJB
Z2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWly
a3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVB
U2hlZXQocXVpcmtzUnVsZXMpOwogICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9t
U2hlZXQocXVpcmtzU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgLy8gRnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5S
dWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxz
Y3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCkt
PmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVu
U2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICBk
ZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0
eWxlKCkKQEAgLTU2Myw2ICs1NzEsMTMgQEAgc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRT
dHlsZSgpCiAgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaW1wbGVEZWZhdWx0
U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgpKTsKICAgICAKICAgICAvLyBObyBuZWVkIHRvIGluaXRp
YWxpemUgcXVpcmtzIHNoZWV0IHlldCBhcyB0aGVyZSBhcmUgbm8gcXVpcmsgcnVsZXMgZm9yIGVs
ZW1lbnRzIGFsbG93ZWQgaW4gc2ltcGxlIGRlZmF1bHQgc3R5bGUuCisKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTikKKyAgICAvLyBGdWxsLXNjcmVlbiBydWxlcy4KKyAgICBTdHJpbmcgZnVsbHNjcmVl
blJ1bGVzID0gU3RyaW5nKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoZnVs
bHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUo
KS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworICAgIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3Jl
ZW5TaGVldCA9IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVsZXMpOworICAgIGRlZmF1bHRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworI2Vu
ZGlmCiB9CiAgICAgCiBzdGF0aWMgdm9pZCBsb2FkVmlld1NvdXJjZVN0eWxlKCkKQEAgLTI2MTks
NiArMjYzNCwzNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbjoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBh
IERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlLCBhbmQgdGhlIGRvY3VtZW50J3Mg
Y3VycmVudCBmdWxsc2NyZWVuIAorICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgYW4gZWxl
bWVudCBpbiB0aGUgZG9jdW1lbnQsIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxp
ZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhhdCBlbGVtZW50LiBBbHNvLCBhbiA8aWZyYW1l
PiwgPG9iamVjdD4gb3IgPGVtYmVkPiBlbGVtZW50IHdob3NlIGNoaWxkIGJyb3dzaW5nIAorICAg
ICAgICAgICAgICAgIC8vIGNvbnRleHQncyBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBz
dGF0ZSBoYXMgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBwbGllZC4KKyAgICAgICAg
ICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+
ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgICAg
ICAgICAgICAgLy8gV2hpbGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwg
dGhlICdmdWxsLXNjcmVlbi1kb2MnIHBzZXVkb2NsYXNzIGFwcGxpZXMgCisgICAgICAgICAgICAg
ICAgLy8gdG8gdGhlIHJvb3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAg
ICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1
bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0OgorICAgICAgICAgICAgICAg
IC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgYW5kIHRoZSBk
b2N1bWVudCdzIGN1cnJlbnQgZnVsbHNjcmVlbiBlbGVtZW50IAorICAgICAgICAgICAgICAgIC8v
IGlzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYy13aXRo
LXRhcmdldCcgcHNldWRvY2xhc3MgYXBwbGllcyB0byAKKyAgICAgICAgICAgICAgICAvLyB0aGUg
cm9vdCBlbGVtZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAgICAgICAgaWYgKCFlLT5k
b2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPmRvY3Vt
ZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT5jb250YWlucyhlLT5kb2N1bWVudCgpLT53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgICAgICAg
ICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBX
ZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9mdWxs
c2NyZWVuLmNzcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACis6LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgIHBv
c2l0aW9uOmZpeGVkOworICB0b3A6MDsKKyAgbGVmdDowOworICByaWdodDowOworICBib3R0b206
MDsKK30KKzotd2Via2l0LWZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQgeworICBvdmVyZmxv
dzpoaWRkZW47Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAx
MDAlOworICAgIGhlaWdodDogMTAwJQorICAgIGltYWdlLWZpdDogZmlsbDsKK30KKworaW1nOi13
ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsK
KyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlh
Oi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworICAg
IGJvdHRvbTogMHB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xOTksNiArMTk5LDEwIEBACiAjaW5jbHVkZSAiSFRNTE5vU2NyaXB0RWxlbWVu
dC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyNpbmNsdWRlICJXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwog
dXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtNDA0LDYg
KzQwOCwxMSBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAjZW5k
aWYKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0
aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0cikKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTikKKyAgICAsIG1faXNGdWxsU2NyZWVuKDApCisgICAgLCBtX2FyZUtleXNFbmFibGVkKDAp
CisgICAgLCBtX2Z1bGxTY3JlZW5FbGVtZW50KDApCisjZW5kaWYKIHsKICAgICBtX2RvY3VtZW50
ID0gdGhpczsKIApAQCAtMzI3Miw2ICszMjgxLDEwIEBAIFBhc3NSZWZQdHI8RXZlbnQ+IERvY3Vt
ZW50OjpjcmVhdGVFdmVudCgKICNlbmRpZgogICAgICAgICBldmVudCA9IFRvdWNoRXZlbnQ6OmNy
ZWF0ZSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09ICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlIikKKyAgICAgICAgZXZlbnQgPSBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpOworI2VuZGlmCiAjaWYgRU5BQkxFKERF
VklDRV9PUklFTlRBVElPTikKICAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIkRldmljZU9yaWVu
dGF0aW9uRXZlbnQiKQogICAgICAgICBldmVudCA9IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNy
ZWF0ZSgpOwpAQCAtMzMyMyw2ICszMzM2LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVy
VHlwZUlmTmVlZGVkKGMKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bmVl
ZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQorICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVl
bmNoYW5nZUV2ZW50KQorICAgICAgICBhZGRMaXN0ZW5lclR5cGUoRlVMTFNDUkVFTl9MSVNURU5F
Uik7CisjZW5kaWYKIH0KIAogQ1NTU3R5bGVEZWNsYXJhdGlvbiogRG9jdW1lbnQ6OmdldE92ZXJy
aWRlU3R5bGUoRWxlbWVudCosIGNvbnN0IFN0cmluZyYpCkBAIC01MDM2LDUgKzUwNTMsODQgQEAg
SW5zcGVjdG9yQ29udHJvbGxlciogRG9jdW1lbnQ6Omluc3BlY3RvcgogICAgIHJldHVybiBwYWdl
KCkgPyBwYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSA6IDA7CiB9CiAjZW5kaWYKKyAgICAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuKCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5
cyhkb2N1bWVudEVsZW1lbnQoKSwgZmFsc2UpOworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1bWVudEVsZW1lbnQoKSwgdHJ1ZSk7Cit9CisgICAgCit2
b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhF
bGVtZW50KiBlbGVtZW50LCBib29sIGtleXNFbmFibGVkKQoreworICAgIGlmICghcGFnZSgpIHx8
ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVu
dCgpOworICAgIAorICAgIGlmIChwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNG
dWxsc2NyZWVuRm9yRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICBwYWdlKCktPmNocm9tZSgp
LT5jbGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAg
bV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgICAgIG1fYXJlS2V5c0VuYWJsZWQg
PSBrZXlzRW5hYmxlZDsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1
bGxTY3JlZW4oKQoreworICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1
bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAocGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQobV9mdWxs
U2NyZWVuRWxlbWVudCkpCisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0
RnVsbHNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudCk7Cit9CisgICAgCit2b2lk
IERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBl
bGVtZW50KQoreworICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxT
Y3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1l
bnQgPSBlbGVtZW50ID8gZWxlbWVudCA6IGRvY3VtZW50RWxlbWVudCgpOworICAgIG1faXNGdWxs
U2NyZWVuID0gdHJ1ZTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXROZWVkc1N0eWxlUmVj
YWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgaWYgKGRvY3VtZW50RWxlbWVudCgpICE9IG1fZnVs
bFNjcmVlbkVsZW1lbnQpCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5zZXROZWVkc1N0eWxl
UmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0
Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICB1cGRh
dGVTdHlsZUlmTmVlZGVkKCk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFbnRl
ckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQoreworfQorCit2b2lkIERvY3VtZW50Ojp3
ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQoreworfQorCit2b2lk
IERvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7
CisgICAgaWYgKCFwYWdlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIXBhZ2Uo
KS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAg
ICAgICAKKyAgICBtX2lzRnVsbFNjcmVlbiA9IGZhbHNlOworICAgIG1fYXJlS2V5c0VuYWJsZWQg
PSBmYWxzZTsKKyAgICBpZiAobV9mdWxsU2NyZWVuRWxlbWVudCkgeworICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOwor
ICAgIH0gZWxzZQorICAgICAgICBkb2N1bWVudEVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICBkb2N1bWVudEVsZW1lbnQo
KS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIHVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKK30KKyAgICAKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCklu
ZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5n
ZSk7CisjZW5kaWYKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fZG9jVHlwZS5nZXQoKTsgfQogCkBAIC02NzUsNyArNjc4LDggQEAgcHVibGljOgogICAgICAg
ICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDgwMCwKICAgICAgICAg
QkVGT1JFTE9BRF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgxMDAwLAogICAgICAgICBU
T1VDSF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAsCi0gICAgICAgIEJF
Rk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMAorICAgICAgICBCRUZP
UkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAsCisgICAgICAgIEZVTExT
Q1JFRU5fTElTVEVORVIgICAgICAgICAgICAgICAgICA9IDB4ODAwMCwKICAgICB9OwogCiAgICAg
Ym9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyBy
ZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KQEAgLTEwMDEsNiArMTAw
NSwyMSBAQCBwdWJsaWM6CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFD
YW5TdGFydExpc3RlbmVyKCk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZEF0dHJpYnV0
ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2lkQXR0cmlidXRlTmFtZTsgfQorICAgIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorICAgIGJvb2wgd2Via2l0SXNGdWxsU2NyZWVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Z1bGxTY3JlZW47IH0KKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbldpdGhL
ZXlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuICYmIG1fYXJlS2V5c0Vu
YWJsZWQ7IH0KKyAgICBFbGVtZW50KiB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbGVtZW50OyB9CisgICAgdm9pZCB3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbigpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5
cygpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMo
RWxlbWVudCosIGJvb2wga2V5c0VuYWJsZWQpOworICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNj
cmVlbigpOworICAgIAorICAgIHZvaWQgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoRWxlbWVudCopOworICAgIHZvaWQgd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChF
bGVtZW50Kik7CisjZW5kaWYKIAogICAgIGJvb2wgd3JpdGVEaXNhYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fd3JpdGVEaXNhYmxlZDsgfQogICAgIHZvaWQgc2V0V3JpdGVEaXNhYmxlZChib29sIGZs
YWcpIHsgbV93cml0ZURpc2FibGVkID0gZmxhZzsgfQpAQCAtMTI4Niw2ICsxMzA1LDEyIEBAIHBy
aXZhdGU6CiAgICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlhQ2FuU3Rh
cnRMaXN0ZW5lcnM7CiAKICAgICBRdWFsaWZpZWROYW1lIG1faWRBdHRyaWJ1dGVOYW1lOworICAg
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW47CisgICAg
Ym9vbCBtX2FyZUtleXNFbmFibGVkOworICAgIEVsZW1lbnQqIG1fZnVsbFNjcmVlbkVsZW1lbnQ7
CisjZW5kaWYKIH07CiAKIGlubGluZSBib29sIERvY3VtZW50OjpoYXNFbGVtZW50V2l0aElkKEF0
b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNjQxODUp
CisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsy
NDAsMTUgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbRG9udEVudW1dIHZvaWQgaW5pdGlhbGl6
ZVdNTFBhZ2VTdGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVO
KSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbldpdGhL
ZXlzRW5hYmxlZDsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50OworICAgICAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3Jl
ZW4oKTsKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFM
QU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1
dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsK
SW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTgyLDUgKzE1ODIsMTcgQEAgYm9vbCBFbGVtZW50OjpjaGls
ZFNob3VsZENyZWF0ZVJlbmRlcmVyKAogICAgIHJldHVybiBOb2RlOjpjaGlsZFNob3VsZENyZWF0
ZVJlbmRlcmVyKGNoaWxkKTsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpCit7CisgICAgZG9jdW1l
bnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhpcywgZmFs
c2UpOworfQorCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMo
KQoreworICAgIGRvY3VtZW50KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdp
dGhLZXlzKHRoaXMsIHRydWUpOworfQorI2VuZGlmICAgIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UpOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4g
Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5n
UGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKQEAgLTI5Miw2ICsyOTUs
MTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OyAKICNlbmRpZgorICAgIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB2
b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRpZgogCiBwcm90ZWN0
ZWQ6CiAgICAgRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCog
ZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5cGUgdHlwZSkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiA2
NDE4NSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMs
NiArMTMzLDExIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERP
TVN0cmluZyBpbm5lclRleHQ7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7
CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VB
R0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwog
ICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkBAIC0y
MDUsNiArMjEwLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVt
LENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVy
IG9udG91Y2htb3ZlOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRP
VUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAg
ICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJs
ZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKKyAgICAgICAgYXR0cmli
dXRlIFtEb250RW51bSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl0gRXZlbnRMaXN0ZW5lciBvbndl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAjZW5kaWYKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2Rv
bS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lv
biA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYy
LDYgKzE2MiwxMyBAQCBib29sIEV2ZW50Ojppc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCitib29sIEV2ZW50
Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZh
bHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDY0MTg1KQor
KysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0
aW9uRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlv
bkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgp
IGNvbnN0OworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdDsKKyNlbmRpZgogI2lmIEVOQUJMRShT
VkcpCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NWR1pvb21FdmVudCgpIGNvbnN0OwogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKICAgICBcCiAgICAgbWFjcm8obG9hZGVuZCkgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKQorICAgIFwKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VB
Q0gKIAogICAgIGNsYXNzIEV2ZW50TmFtZXMgOiBwdWJsaWMgTm9uY29weWFibGUgewpJbmRleDog
V2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKworI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCisvLyBGcm9tIHRoZSBNb3ppbGxhIEZ1bGxTY3JlZW4gcHJvcG9zYWw6ICJUaGUgW2Z1
bGxTY3JlZW5DaGFuZ2VFdmVudF0gYnViYmxlcyAKKy8vIGFuZCBpcyBub3QgY2FuY2VsbGFibGUu
IgorCitXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudCgpCis6IEV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQs
IHRydWUsIGZhbHNlKQoreworfQorCitXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKQoreworfQorCit2b2lkIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGNhbmNlbGFibGVBcmcpCit7CisgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIAorICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcp
OworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dF9oCisjZGVmaW5lIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTikKKworI2luY2x1ZGUgIkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KyAgICAKK2NsYXNzIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7
CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQpOworICAgIH0gICAgICAgIAorICAgIHZpcnR1YWwgfldlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpOworICAgIAorICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKTsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudCgpOworICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUpOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVOKQorCisjZW5kaWYgLy8gV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1
bGUgZXZlbnRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdPUktF
UlMmRlVMTFNDUkVFTiwKKyAgICAgICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudCA6IEV2ZW50IHsKKworICAgICAgICB2b2lkIGluaXRFcnJvckV2ZW50KGluIERP
TVN0cmluZyB0eXBlQXJnLCBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5j
ZWxhYmxlQXJnLCBpbiBET01TdHJpbmcgbWVzc2FnZUFyZywgaW4gRE9NU3RyaW5nIGZpbGVuYW1l
QXJnLCBpbiB1bnNpZ25lZCBsb25nIGxpbmVub0FyZyk7CisgICAgfTsKKworfQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsyMjMsNyBA
QCBvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbgogb253ZWJraXRhbmltYXRpb25lbmQKIG9ud2Vi
a2l0YmVnaW5mdWxsc2NyZWVuCiBvbndlYmtpdGVuZGZ1bGxzY3JlZW4KK29ud2Via2l0ZnVsbHNj
cmVlbmNoYW5nZQogb253ZWJraXR0cmFuc2l0aW9uZW5kCiBvcHRpbXVtCiBwYXR0ZXJuCkBAIC0y
ODIsNSArMjgzLDYgQEAgdmlld3NvdXJjZQogdmxpbmsKIHZzcGFjZQogd2Via2l0ZGlyZWN0b3J5
Cit3ZWJraXRhbGxvd2Z1bGxzY3JlZW4KIHdpZHRoCiB3cmFwCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsMTAgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNs
dWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyNpbmNs
dWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yNjIsNiArMjY2LDEw
IEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAgICAgc2V0
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCwgY3JlYXRl
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gb250b3VjaGNhbmNlbEF0dHIpIHsKICAgICAgICAgc2V0QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCwgY3JlYXRlQXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0cikg
eworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRm
dWxsc2NyZWVuY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cikpOworI2VuZGlmCiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlz
aW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtNjQsNiArNjQsMTEgQEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmluZWQoTEFOR1VBR0Vf
T0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgdGl0bGVEaXNwbGF5U3RyaW5nOwogI2VuZGlmCisKKyNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lk
IHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTAgQEAgdm9p
ZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBzYW5kYm94QXR0cikKICAgICAgICAgc2V0U2FuZGJveEZsYWdzKHBhcnNlU2Fu
ZGJveEF0dHJpYnV0ZShhdHRyKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpCisgICAgICAg
IG1fYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgSFRN
TEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRleDog
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDkgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEZy
YW1lRWxlbWVudEJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJRnJh
bWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAg
CisgICAgYm9vbCB3ZWJraXRBbGxvd0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93
RnVsbFNjcmVlbjsgfQorICAgIHZvaWQgc2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKGJvb2wgdmFs
dWUpIHsgbV9hbGxvd0Z1bGxTY3JlZW4gPSB2YWx1ZTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxJ
RnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTAsNiAr
NTMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1
dGUqKSBjb25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisgICAgYm9vbCBtX2FsbG93
RnVsbFNjcmVlbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmlkbAkocmV2aXNpb24gNjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5IEBAIG1vZHVs
ZSBodG1sIHsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbmFtZTsKICAg
ICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2FuZGJveDsKICAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2Nyb2xsaW5nOworI2lmIGRlZmluZWQoRU5BQkxF
X0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIGF0dHJpYnV0ZSBbUmVm
bGVjdF0gRE9NU3RyaW5nIHdlYmtpdEFsbG93RnVsbFNjcmVlbjsKKyNlbmRpZgogICAgICAgICBh
dHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVm
bGVjdF0gRE9NU3RyaW5nIHdpZHRoOwogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6
cmVtb3ZlZEZyb21Eb2N1bWUKIHsKICAgICBpZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0VN
UFRZKQogICAgICAgICBwYXVzZShwcm9jZXNzaW5nVXNlckdlc3R1cmUoKSk7Ci0gICAgaWYgKG1f
aXNGdWxsc2NyZWVuKQorICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgZXhpdEZ1bGxz
Y3JlZW4oKTsKICAgICBIVE1MRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQpAQCAt
MTg1Miw3ICsxODUyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9h
ZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkK
IHsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAg
ICAgICBleGl0RnVsbHNjcmVlbigpOwogCiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7
CkBAIC0yMDEzLDI0ICsyMDEzLDQ0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVk
aWFQbGF5ZXIKIH0KICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAor
Ym9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4oKSBjb25zdCAKK3sKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPndlYmtp
dEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRoaXMgOiBmYWxzZTsKKyNlbHNlCisgICAg
cmV0dXJuIG1faXNGdWxsc2NyZWVuOworI2VuZGlmCit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVu
dDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBBU1NF
UlQoIWlzRnVsbHNjcmVlbigpKTsKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
KCk7CisjZWxzZQogICAgIEFTU0VSVCghbV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2Ny
ZWVuID0gdHJ1ZTsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsK
ICAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVs
bHNjcmVlbkZvck5vZGUodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygp
LndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgQVNTRVJUKGlzRnVsbHNjcmVlbigpKTsKKyAgICBpZiAoZG9jdW1lbnQoKSkKKyAg
ICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworI2Vsc2UKICAgICBB
U1NFUlQobV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAg
aWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7CiAgICAgICAgIGRvY3VtZW50
KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUodGhp
cyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3Jl
ZW5FdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxl
bWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJ
KHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2lu
Z2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXIt
Pmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVl
bigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3Jl
ZW4oKSBjb25zdDsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1
bGxzY3JlZW4oKTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24g
NjQxODUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVy
SW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDExICsxMjcsMjMgQEAgYm9vbCBIVE1M
VmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZQogICAgIGlmICghcGFnZSkgCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGlmICghcGFnZS0+
c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
I2VuZGlmCisgICAgCiAgICAgaWYgKCFwbGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1cHBvcnRzRnVs
bHNjcmVlbigpIHx8ICFwbGF5ZXIoKS0+aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAgICAgLy8gQ2hlY2sgd2l0aCB0aGUgcGxhdGZvcm0gY2xpZW50LgotICAgIHJldHVybiBw
YWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGll
bnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKKyNlbHNlCisgICAgLy8g
c3VwcG9ydHNGdWxsU2NyZWVuRm9yTm9kZSBoYXMgYmVlbiByZW1vdmVkIChpbiBmYXZvciBvZiAu
Li5Gb3JFbGVtZW50KS4gIFJldHVybgorICAgIC8vIHRydWUgaGVyZSBpbnN0ZWFkLCBzaW5jZSB0
aGUgb2xkIGltcGxlbWVudGF0aW9uIHdvdWxkIHJldHVybiB0cnVlIGlmIHRoZSAKKyAgICAvLyBl
bGVtZW50IGlzIGEgSFRNTFZpZGVvRWxlbWVudC4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgog
fQogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKSW5kZXg6
IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDY0MTg1KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTksOSArMjE5LDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmco
KSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFsIGJvb2wg
c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0K
LSAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQot
ICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNj
cmVlbkZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9
CisjZW5kaWYKIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICAgICB2aXJ0
dWFsIEludFJlY3QgdmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0
dXJuIEludFJlY3QoKTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2NDE4NSkKKysrIFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOSBA
QCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRl
ckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwgYmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAg
ICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZl
dGNoaW5nRW5hYmxlZCh0cnVlKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICwgbV9mdWxs
U2NyZWVuRW5hYmxlZChmYWxzZSkKKyNlbmRpZgogICAgICwgbV9tZW1vcnlJbmZvRW5hYmxlZChm
YWxzZSkKICAgICAsIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbihmYWxzZSkKIHsKSW5kZXg6
IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0
aW5ncy5oCShyZXZpc2lvbiA2NDE4NSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTAsNiArMzEwLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdm9pZCBzZXRQYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFn
aW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIHBhZ2luYXRl
RHVyaW5nTGF5b3V0RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGVEdXJpbmdMYXlv
dXRFbmFibGVkOyB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdm9pZCBzZXRG
dWxsU2NyZWVuRW5hYmxlZChib29sIGZsYWcpIHsgbV9mdWxsU2NyZWVuRW5hYmxlZCA9IGZsYWc7
IH0KKyAgICAgICAgYm9vbCBmdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBtX2Z1
bGxTY3JlZW5FbmFibGVkOyB9CisjZW5kaWYKKwogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9F
bmFibGVkKGJvb2wgZmxhZykgeyBtX21lbW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQogICAgICAg
ICBib29sIG1lbW9yeUluZm9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlJbmZvRW5h
YmxlZDsgfQogCkBAIC00MDMsNiArNDA4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICBib29sIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQ6IDE7IC8vIFdpbGwgYmUgZGVsZXRlZCBz
b29uLCBkbyBub3QgdXNlLgogICAgICAgICBib29sIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkIDogMTsKICAgICAgICAgYm9vbCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCA6IDE7CisjaWYg
RU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuRW5hYmxlZCA6IDE7
CisjZW5kaWYKICAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBi
b29sIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbjogMTsKICAgICAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDY0MTg1KQorKysg
V2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC03NzYsNyArNzc2LDEwIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1
dHRvbkUKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2
ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1
bGxzY3JlZW4oKTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkK
KyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAg
ICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjQxODUpCisrKyBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw2ICs3OSw3IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FVEVSX0hPUklaT05U
QUxfQkFSLCBNRVRFUl9IT1JJWk9OVEFMX09QVElNVU0sIE1FVEVSX0hPUklaT05UQUxfU1VCT1BU
SU1BTCwgTUVURVJfSE9SSVpPTlRBTF9FVkVOX0xFU1NfR09PRCwKICAgICBNRVRFUl9WRVJUSUNB
TF9CQVIsIE1FVEVSX1ZFUlRJQ0FMX09QVElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NVQk9QVElNQUws
IE1FVEVSX1ZFUlRJQ0FMX0VWRU5fTEVTU19HT09ELCAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFM
X1BTRVVET0lELAorICAgIEZVTExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZVTExfU0NSRUVO
X1JPT1RfV0lUSF9UQVJHRVQsCiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElO
RSwKICAgICBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKICAg
ICBQVUJMSUNfUFNFVURPSURfTUFTSyA9ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkg
LSAxKSAmIH4oKDEgPDwgRklSU1RfUFVCTElDX1BTRVVET0lEKSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62835</attachid>
            <date>2010-07-28 09:41:29 -0700</date>
            <delta_ts>2010-07-28 14:04:25 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>57418</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU4gbW9kZSBmb3IgdGhlIE1hYyAoZXhj
ZXB0IGlQaG9uZSkuCisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gNjQyMDkpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTk3LDYgKzU5Nyw3IEBACiAjZW5kaWYKICNkZWZpbmUg
SEFWRV9SRUFETElORSAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCisjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
UEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjQyMDkpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAxMC0wNy0y
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlwdCBBUEkgdG8gYWxsb3cg
YSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzY4Njc3OTUK
KyAgICAgICAgCisgICAgICAgIE1vemlsbGEgaGFzIHByb3Bvc2VkIGEgbmV3IHNldCBvZiBKYXZh
U2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55IGVsZW1lbnQgaW4KKyAgICAgICAgYSBkb2N1bWVu
dCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBjdXJyZW50IHJldmlzaW9uIG9mIHRoZWlyIHByb3Bv
c2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQgaGVyZToKKyAgICAgICAgPGh0dHBzOi8vd2lraS5t
b3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9R2Vja286RnVsbFNjcmVlbkFQSSZvbGRpZD0yMzU2
MDE+CisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zZWQgc3BlY2lmaWNhdGlvbiBpbmNsdWRl
cyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgIC0g
VGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVz
dEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMoKQorICAgICAgICAgICAgKyB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKQorICAgICAgICAtIFRo
cmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3VtZW50OgorICAgICAgICAgICAgKyByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuCisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRoS2V5cworICAgICAgICAgICAgKyAob3B0aW9uYWwp
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAorICAg
ICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6CisgICAgICAgIC0gVHdvIG5ldyBtZXRob2RzIG9u
IEVsZW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAg
ICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAgICAKKyAgICAg
ICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAgICAgIC0gT25lIG5ldyBjb250ZW50IGF0dHJpYnV0
ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxsU2NyZWVuCisgICAgICAgICAgICAKKyAgICAgICAg
RXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcgZXZlbnQ6CisgICAgICAgICAgICArIGZ1bGxTY3Jl
ZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAgIENTUyBQc2V1ZG8tY2xhc3NlczoKKyAgICAgICAg
LSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6CisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbgor
ICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tZG9jCisgICAgICAgICAgICArIDpmdWxsLXNjcmVl
bi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAgIAorICAgICAgICBGb3IgV2ViS2l0J3MgaW5pdGlh
bCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBhYm92ZSBuZXcgQVBJcyB3aWxsIGJlIHByZWZpeGVk
IHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9yICItd2Via2l0IiB3aGVyZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0czoKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAgICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAgICAgICAgUHJvamVjdCBmaWxlIGNoYW5nZXM6Cisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEFkZGVkIGFu
IEVOQUJMRV9GVUxMU0NSRUVOIGVudHJ5LgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
IEFkZGVkIHJ1bGVzIGZvciBmdWxsc2NyZWVuLmNzcyBhbmQgV2ViQ29yZS5GdWxsU2NyZWVuLmV4
cC4KKyAgICAgICAgKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwOiBBZGRlZCBleHBvcnQgc3ltYm9s
cyBmb3IgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IHNvdXJjZSBmaWxlcyBhZGRlZCB0byB0aGUg
cHJvamVjdC4KKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRG9jdW1lbnQncyBqYXZh
c2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBu
ZXcgZnVsbC1zY3JlZW4gQVBJIHRvIHRoZSBFbGVtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2Uu
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBhbGxvd0Z1
bGxTY3JlZW4gYXR0cmlidXRlLgorCisgICAgICAgIFNvdXJjZSBjaGFuZ2VzOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBFeHBvc2VkIERvY3VtZW50IGFu
ZCBFbGVtZW50IGZ1bGxzY3JlZW4gZnVuY3Rpb25zIGluIHRoZSBET00gY2xhc3Nlcy4KKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOiBBZGRlZCBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8tY2xh
c3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IAorICAgICAg
ICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5o
OiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOiBBZGRlZCBuZXcgZnVsbC1zY3Jl
ZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUgZW51bS4KKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6bG9hZEZ1bGxEZWZhdWx0
U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRvIHRoZSBkZWZhdWx0U3R5
bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRzLgorICAgICAgICAoV2ViQ29yZTo6
bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3NzIHNoZWV0IGlu
dG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENoZWNrIGZvciB0aGUg
bmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y3JlYXRlRXZlbnQpOiBTdXBwb3J0IGNyZWF0aW5nIGEgIldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2UiIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZExp
c3RlbmVyVHlwZUlmTmVlZGVkKTogU3VwcG9ydCBsaXN0ZW5pbmcgZm9yIGEgIndlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCIKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5XaXRoS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMpOiBQYXNzZXMgcmVxdWVzdCB0byB0
aGUgY2hyb21lIGNsaWVudCB0byBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4pOiBQYXNzZXMgcmVxdWVzdCB0
byB0aGUgY2hyb21lIGNsaWVudCB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBT
ZXRzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVt
ZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQp
OiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDbGVhcnMgdGhlIEZ1bGxTY3JlZW4gcHNldWRv
LWNsYXNzZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDogQWRkZWQgY29uc3QgYWNjZXNzb3JzIGZvciBuZXcgZnVs
bC1zY3JlZW4gaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuKTogQWNj
ZXNzb3IgZm9yIG1faXNGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCk6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNj
cmVuIGFuZCBtX2FyZUtleXNFbmFibGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCk6IEFjY2Vzc29yIGZvciBtX2Z1bGxTY3JlZW5F
bGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLiAKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOiBDYWxscyBEb2N1bWVudDo6
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMuCisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTogT3ZlcnJpZGVkIGJ5IFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmluaXRX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOiBQYXJzZSB0aGUgbmV3ICJvbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UiIGF0dHJpYnV0ZSBhbmQgcmVnaXN0ZXIgYSBsaXN0ZW5lci4KKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6
d2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxsU2NyZWVuLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNldFdlYmtpdEFsbG93RnVsbFNj
cmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOiBSZS1pbXBsZW1lbnRlZCB0aGUgSFRNTE1lZGlhRWxlbWVudCBm
dWxsIHNjcmVlbiBzdXBwb3J0IGluIHRlcm1zIG9mIHRoZSBuZXcgKGdlbmVyaWMpIGZ1bGwgc2Ny
ZWVuIHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9j
dW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
eGl0RnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCk6IFBhc3Mg
dGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvckVs
ZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3Vn
aCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9sIHJ1bnRpbWUgc3VwcG9y
dCBmb3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpmdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVGhlIGZ1bGwgc2NyZWVuIGJ1
dHRvbiBub3cgdG9nZ2xlcyBmdWxsIHNjcmVlbiBtb2RlIChwcmV2aW91c2x5LCBpdCBvbmx5IGVu
dGVyZWQpLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAxMC0wNy0yNiAgU3RldmUgQmxvY2sgIDxzdGV2
ZWJsb2NrQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpJ
bmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjQyMTApCisrKyBXZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ0OSw2ICs0NDksNyBAQCBET01fQ0xBU1NF
UyA9IFwKICAgICBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlIFwKICAgICBXZWJLaXRDU1NNYXRyaXgg
XAogICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQgXAogICAgIFdlYktpdFBvaW50IFwKICAgICBXZWJLaXRUcmFuc2l0aW9uRXZlbnQg
XAogICAgIFdlYlNvY2tldCBcCkBAIC02NjIsNiArNjYzLDEwIEBAIGlmZXEgKCQoT1MpLE1BQ09T
KQogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFCTEVfRlVMTFNDUkVFTiwk
KEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTikKKyAgICBVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUyA6PSAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKSAkKFdlYkNvcmUpL2Nzcy9m
dWxsc2NyZWVuLmNzcworZW5kaWYKKwogVXNlckFnZW50U3R5bGVTaGVldHMuaCA6IGNzcy9tYWtl
LWNzcy1maWxlLWFycmF5cy5wbCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTKQogCXBlcmwgJDwg
JEAgVXNlckFnZW50U3R5bGVTaGVldHNEYXRhLmNwcCAkKFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRT
KQogCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWcJKHJldmlzaW9uIDY0MjEwKQorKysgV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJl
RGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBFTkFCTEVf
RklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5BQkxFX0ZJTEVfUkVBREVSID0gRU5BQkxFX0ZJ
TEVfUkVBREVSOwogRU5BQkxFX0ZJTEVfV1JJVEVSID0gOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0g
OworRU5BQkxFX0ZVTExTQ1JFRU4gPSBFTkFCTEVfRlVMTFNDUkVFTjsKIEVOQUJMRV9HRU9MT0NB
VElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVf
SUNPTkRBVEFCQVNFOwogRU5BQkxFX0lNQUdFX1JFU0laRVIgPSA7CkBAIC04Niw0ICs4Nyw0IEBA
IEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxF
X1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19Q
UkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5B
QkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJ
RCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5U
U09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVf
RklMRV9XUklURVIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9HRU9MT0NBVElPTikg
JChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9J
TkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJ
UFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJM
RV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5B
QkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFC
TEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikg
JChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQo
RU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9T
VkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dF
Ql9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxN
UCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChF
TkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5E
RVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURF
UikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9G
VUxMU0NSRUVOKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFC
TEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDY0MjEwKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5ODcsNiArNDk4Nyw4IEBACiAJCUM1RUJERDg0
MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1Njgx
NkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJF
MDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBC
MEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CisJCUNEQTc5QTczMTFFN0E0QzcwMDg3
OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsgfTsKKwkJQ0RBNzlBNzQxMUU3QTRDNzAw
ODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUg
LyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLzsgfTsKIAkJQ0UwMkYwQzQxMUU4
M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyog
U2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMTcyRTAwMTEz
NkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUNFNEMwMEU0MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9T
Y3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IENFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNw
cCAqLzsgfTsKQEAgLTEwNjYxLDYgKzEwNjYzLDEwIEBACiAJCUM1RUJERDgxMTA1RURERUMwMDU2
ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkw
QTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVs
bHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNzczsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyog
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUNEQTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0
QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjYxNSw2ICsxNjYyMSw3IEBACiAJ
CQkJQkM5QUREMjIwQ0M0MDMyNjAwMDk4QzRDIC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmgg
Ki8sCiAJCQkJMzE2MTFFNTQwRTFDNEQ0QTAwRjZBNTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZh
bHVlLmlkbCAqLywKIAkJCQk0Q0RFNTRFQzBFNTU3OTc4MDA4OUUyNkMgLyogd21sLmNzcyAqLywK
KwkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkp
OwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzE1Nyw2
ICsxNzE2NCw5IEBACiAJCQkJMzFDMEZGMUIwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1h
dGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxQzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2Vi
S2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLAorCQkJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLywKKwkJCQlDREE3OUE3MjExRTdBNEM3
MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3
OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAq
LywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50
LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlv
bkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5z
aXRpb25FdmVudC5pZGwgKi8sCkBAIC0xOTg2OCw2ICsxOTg3OCw3IEBACiAJCQkJRTFCRTUxMkUw
Q0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8s
CisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0QxMUY1ODE2MTAwMDgxRTFBIC8qIFNW
R1Jlc291cmNlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0YxMUY1ODE2MTAwMDgxRTFB
IC8qIFNWR1Jlc291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODVCMDVDMzExRkFF
MTZDMDA0RDY1RjYgLyogU1ZHUmVzb3VyY2VzQ3ljbGVTb2x2ZXIuaCBpbiBIZWFkZXJzICovLApA
QCAtMjIyNjYsNiArMjIyNzcsNyBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBY
U0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZD
NTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3
REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUNEQTc5QTc0MTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg0RDBFM0MxMUY1ODE2MTAwMDgxRTFBIC8qIFNW
R1Jlc291cmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODREMEUzRTExRjU4MTYxMDAwODFF
MUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg2QTQwMDYx
MUY2RDZCNzAwMkNFQzUzIC8qIFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyLmNwcCBpbiBTb3Vy
Y2VzICovLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oCShyZXZpc2lvbiA2NDIxMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01J
bnRlcmZhY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsMTEgQEAgQGludGVyZmFj
ZSBET01Eb2N1bWVudCA6IERPTU5vZGUgV0VCS0lUXwogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNl
bGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3Qg
KilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJM
RV9GVUxMU0NSRUVOCistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIEFWQUlMQUJMRV9J
Tl9XRUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0
aEtleXMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0Q2Fu
Y2VsRnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBA
ZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUgV0VCS0lUX1ZF
UlNJT05fMV8zCkBAIC0yMjQsNiArMjI5LDEwIEBAIEBpbnRlcmZhY2UgRE9NRWxlbWVudCA6IERP
TU5vZGUgV0VCS0lUX1YKIC0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZToo
TlNTdHJpbmcgKiluYW1lIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01F
bGVtZW50ICopcXVlcnlTZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lO
X1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDoo
TlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorLSAodm9p
ZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8w
OworLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01FbnRpdHkg
OiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtNTY5LDYgKzU3OCw5IEBAIEBpbnRlcmZh
Y2UgRE9NSFRNTElGcmFtZUVsZW1lbnQgOiBET01IVE0KIEBwcm9wZXJ0eShjb3B5KSBOU1N0cmlu
ZyAqd2lkdGg7CiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9NRG9jdW1lbnQgKmNvbnRl
bnREb2N1bWVudDsKIEBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBET01BYnN0cmFjdFZpZXcg
KmNvbnRlbnRXaW5kb3cgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZp
bmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorQHByb3BlcnR5KGFz
c2lnbikgQk9PTCB3ZWJraXRBbGxvd0Z1bGxTY3JlZW47CisjZW5kaWYKIEBlbmQKIAogQGludGVy
ZmFjZSBET01IVE1MSW1hZ2VFbGVtZW50IDogRE9NSFRNTEVsZW1lbnQgV0VCS0lUX1ZFUlNJT05f
MV8zCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA2NDIxMCkKKysrIFdlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQ0LDYgKzI0NCwxNSBAQCBQc2V1
ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRvVHlwCiAgICAgICAgIHJldHVybiBOT1BT
RVVETzsKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU47CisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuRG9jOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fRE9DOworICAgIGNhc2Ug
UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0OgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JF
RU5fUk9PVF9XSVRIX1RBUkdFVDsKKyNlbmRpZgorICAgICAgICAgICAgCiAgICAgY2FzZSBQc2V1
ZG9JbnB1dExpc3RCdXR0b246CiAjaWYgRU5BQkxFKERBVEFMSVNUKQogICAgICAgICByZXR1cm4g
SU5QVVRfTElTVF9CVVRUT047CkBAIC00MjIsNiArNDMxLDExIEBAIHN0YXRpYyBIYXNoTWFwPEF0
b21pY1N0cmluZ0ltcGwqLCBDU1NTZWwKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZmlyc3RQYWdlLCAoImZpcnN0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBsZWZ0UGFnZSwgKCJsZWZ0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwo
QXRvbWljU3RyaW5nLCByaWdodFBhZ2UsICgicmlnaHQiKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW4sICgi
LXdlYmtpdC1mdWxsLXNjcmVlbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0
cmluZywgZnVsbFNjcmVlbkRvYywgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWRvYyIpKTsKKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0
LCAoIi13ZWJraXQtZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldCIpKTsKKyNlbmRpZgogCiAg
ICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9U
eXBlPiogbmFtZVRvUHNldWRvVHlwZSA9IDA7CiAgICAgaWYgKCFuYW1lVG9Qc2V1ZG9UeXBlKSB7
CkBAIC01MzMsNiArNTQ3LDExIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBD
U1NTZWwKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0UGFnZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5z
ZXQobGVmdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGVmdFBhZ2UpOwogICAgICAg
ICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQocmlnaHRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1JpZ2h0UGFnZSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxT
Y3JlZW4pOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbkRvYy5pbXBs
KCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jKTsKKyAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW5Sb290V2l0aFRhcmdldC5pbXBsKCksIENTU1NlbGVjdG9y
OjpQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQpOworI2VuZGlmCiAgICAgfQogICAgIHJl
dHVybiBuYW1lVG9Qc2V1ZG9UeXBlOwogfQpAQCAtNjYyLDYgKzY4MSwxMSBAQCB2b2lkIENTU1Nl
bGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvCiAgICAgY2FzZSBQc2V1ZG9TaW5nbGVCdXR0
b246CiAgICAgY2FzZSBQc2V1ZG9Ob0J1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW46CisgICAg
Y2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlblJvb3RX
aXRoVGFyZ2V0OgorI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHNldWRvRmlyc3RQ
YWdlOgogICAgIGNhc2UgUHNldWRvTGVmdFBhZ2U6CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlzaW9u
IDY0MjEwKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDYgKzIxNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9M
ZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1JpZ2h0UGFnZSwKICAgICAgICAgICAgIFBzZXVk
b0ZpcnN0UGFnZSwKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgICAgIFBzZXVkb0Z1
bGxTY3JlZW4sCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuRG9jLAorICAgICAgICAgICAg
UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0LAorI2VuZGlmCiAgICAgICAgIH07CiAKICAg
ICAgICAgZW51bSBNYXJnaW5Cb3hUeXBlIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CShyZXZpc2lvbiA2NDIxMCkKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01NDgsNiArNTQ4LDE0IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxsRGVm
YXVsdFN0eWxlKCkKICAgICBTdHJpbmcgcXVpcmtzUnVsZXMgPSBTdHJpbmcocXVpcmtzVXNlckFn
ZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRl
clRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAgQ1NT
U3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwogICAg
IGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNjcmVl
bkV2YWwoKSk7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgLy8gRnVsbC1zY3Jl
ZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhmdWxsc2NyZWVu
VXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0
KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQo
KTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVuU2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVs
bHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxz
Y3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNlbmRpZgogfQog
CiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTU2Myw2ICs1NzEsMTMg
QEAgc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCiAgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChzaW1wbGVEZWZhdWx0U3R5bGVTaGVldCwgc2NyZWVuRXZhbCgp
KTsKICAgICAKICAgICAvLyBObyBuZWVkIHRvIGluaXRpYWxpemUgcXVpcmtzIHNoZWV0IHlldCBh
cyB0aGVyZSBhcmUgbm8gcXVpcmsgcnVsZXMgZm9yIGVsZW1lbnRzIGFsbG93ZWQgaW4gc2ltcGxl
IGRlZmF1bHQgc3R5bGUuCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAvLyBGdWxsLXNj
cmVlbiBydWxlcy4KKyAgICBTdHJpbmcgZnVsbHNjcmVlblJ1bGVzID0gU3RyaW5nKGZ1bGxzY3Jl
ZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hl
ZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVl
dCgpOworICAgIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChm
dWxsc2NyZWVuUnVsZXMpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVs
bHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworI2VuZGlmCiB9CiAgICAgCiBzdGF0aWMgdm9p
ZCBsb2FkVmlld1NvdXJjZVN0eWxlKCkKQEAgLTI2MTksNiArMjYzNCwzNyBAQCBib29sIENTU1N0
eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNj
cmVlbjoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxs
c2NyZWVuIHN0YXRlLCBhbmQgdGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxsc2NyZWVuIAorICAg
ICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsIHRo
ZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAg
Ly8gdGhhdCBlbGVtZW50LiBBbHNvLCBhbiA8aWZyYW1lPiwgPG9iamVjdD4gb3IgPGVtYmVkPiBl
bGVtZW50IHdob3NlIGNoaWxkIGJyb3dzaW5nIAorICAgICAgICAgICAgICAgIC8vIGNvbnRleHQn
cyBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBoYXMgdGhlICdmdWxsLXNjcmVl
bicgcHNldWRvY2xhc3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50
KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBEb2N1
bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgdGhlICdmdWxsLXNjcmVlbi1kb2MnIHBz
ZXVkb2NsYXNzIGFwcGxpZXMgCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHJvb3QgZWxlbWVu
dCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+
d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQo
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVl
blJvb3RXaXRoVGFyZ2V0OgorICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMg
aW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgYW5kIHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgZnVsbHNj
cmVlbiBlbGVtZW50IAorICAgICAgICAgICAgICAgIC8vIGlzIGFuIGVsZW1lbnQgaW4gdGhlIGRv
Y3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYy13aXRoLXRhcmdldCcgcHNldWRvY2xhc3MgYXBw
bGllcyB0byAKKyAgICAgICAgICAgICAgICAvLyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoYXQgRG9j
dW1lbnQuCisgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxT
Y3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVu
dCgpLT5jb250YWlucyhlLT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvVW5rbm93bjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNl
ZDoKICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNz
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2
IEBACis6LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgIHBvc2l0aW9uOmZpeGVkOworICB0b3A6MDsK
KyAgbGVmdDowOworICByaWdodDowOworICBib3R0b206MDsKK30KKzotd2Via2l0LWZ1bGwtc2Ny
ZWVuLXJvb3Qtd2l0aC10YXJnZXQgeworICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK3ZpZGVvOi13
ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJQor
ICAgIGltYWdlLWZpdDogZmlsbDsKK30KKworaW1nOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAg
IHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9
CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13
ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGJvdHRvbTogMHB4OworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY0MjA5KQorKysg
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTksNiArMTk5LDEw
IEBACiAjaW5jbHVkZSAiSFRNTE5vU2NyaXB0RWxlbWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIK
KyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVz
aW5nIG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtNDA0LDYgKzQwOCwxMSBAQCBEb2N1bWVudDo6RG9j
dW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAjZW5kaWYKICAgICAsIG1fd2Vha1JlZmVyZW5j
ZShEb2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1
dGVOYW1lKGlkQXR0cikKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAsIG1faXNGdWxsU2Ny
ZWVuKDApCisgICAgLCBtX2FyZUtleXNFbmFibGVkKDApCisgICAgLCBtX2Z1bGxTY3JlZW5FbGVt
ZW50KDApCisjZW5kaWYKIHsKICAgICBtX2RvY3VtZW50ID0gdGhpczsKIApAQCAtMzI3Miw2ICsz
MjgxLDEwIEBAIFBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudCgKICNlbmRp
ZgogICAgICAgICBldmVudCA9IFRvdWNoRXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlmCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU4pCisgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlIikKKyAgICAgICAgZXZlbnQgPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6
OmNyZWF0ZSgpOworI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBl
bHNlIGlmIChldmVudFR5cGUgPT0gIkRldmljZU9yaWVudGF0aW9uRXZlbnQiKQogICAgICAgICBl
dmVudCA9IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZSgpOwpAQCAtMzMyMyw2ICszMzM2
LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGMKICAgICAgICAg
ICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAg
IH0KICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50KQorICAgICAgICBh
ZGRMaXN0ZW5lclR5cGUoRlVMTFNDUkVFTl9MSVNURU5FUik7CisjZW5kaWYKIH0KIAogQ1NTU3R5
bGVEZWNsYXJhdGlvbiogRG9jdW1lbnQ6OmdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCosIGNvbnN0
IFN0cmluZyYpCkBAIC01MDM2LDUgKzUwNTMsODQgQEAgSW5zcGVjdG9yQ29udHJvbGxlciogRG9j
dW1lbnQ6Omluc3BlY3RvcgogICAgIHJldHVybiBwYWdlKCkgPyBwYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSA6IDA7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
K3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAgICB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1bWVudEVsZW1lbnQoKSwgZmFs
c2UpOworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
KCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1
bWVudEVsZW1lbnQoKSwgdHJ1ZSk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGtl
eXNFbmFibGVkKQoreworICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1
bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZWxlbWVudCkK
KyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOworICAgIAorICAgIGlmIChwYWdl
KCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChlbGVt
ZW50KSkgeworICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVs
ZW1lbnQ7CisgICAgICAgIG1fYXJlS2V5c0VuYWJsZWQgPSBrZXlzRW5hYmxlZDsKKyAgICB9Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKQoreworICAgIGlmICgh
cGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1
cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudCkpCisgICAgICAg
IHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvckVsZW1lbnQobV9m
dWxsU2NyZWVuRWxlbWVudCk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghcGFn
ZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50ID8gZWxlbWVudCA6
IGRvY3VtZW50RWxlbWVudCgpOworICAgIG1faXNGdWxsU2NyZWVuID0gdHJ1ZTsKKyAgICBtX2Z1
bGxTY3JlZW5FbGVtZW50LT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7Cisg
ICAgaWYgKGRvY3VtZW50RWxlbWVudCgpICE9IG1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAgICAg
IGRvY3VtZW50RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7
CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7Cit9Cisg
ICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVs
ZW1lbnQqKQoreworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5G
b3JFbGVtZW50KEVsZW1lbnQqKQoreworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFeGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7CisgICAgaWYgKCFwYWdlKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICBtX2lzRnVsbFNjcmVl
biA9IGZhbHNlOworICAgIG1fYXJlS2V5c0VuYWJsZWQgPSBmYWxzZTsKKyAgICBpZiAobV9mdWxs
U2NyZWVuRWxlbWVudCkgeworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXROZWVkc1N0
eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7Cisg
ICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAgIH0gZWxzZQorICAgICAgICBkb2N1
bWVudEVsZW1lbnQoKS0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6
OmNyZWF0ZSgpKTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhG
dWxsU3R5bGVDaGFuZ2UpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30KKyAgICAKKyNl
bmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDY0MjA5
KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc0LDYgKzI3
NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNo
ZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsK
ICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSk7CisjZW5kaWYKIAogICAgIERvY3Vt
ZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlwZS5nZXQoKTsgfQogCkBA
IC02NzUsNyArNjc4LDggQEAgcHVibGljOgogICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVS
ICAgICAgICAgICAgICAgPSAweDgwMCwKICAgICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiAgICAg
ICAgICAgICAgICAgID0gMHgxMDAwLAogICAgICAgICBUT1VDSF9MSVNURU5FUiAgICAgICAgICAg
ICAgICAgICAgICAgPSAweDIwMDAsCi0gICAgICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAg
ICAgICAgICAgICA9IDB4NDAwMAorICAgICAgICBCRUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAg
ICAgICAgICAgPSAweDQwMDAsCisgICAgICAgIEZVTExTQ1JFRU5fTElTVEVORVIgICAgICAgICAg
ICAgICAgICA9IDB4ODAwMCwKICAgICB9OwogCiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGUoTGlz
dGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyByZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAm
IGxpc3RlbmVyVHlwZSk7IH0KQEAgLTEwMDEsNiArMTAwNSwyMSBAQCBwdWJsaWM6CiAgICAgTWVk
aWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICAg
ICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBt
X2lkQXR0cmlidXRlTmFtZTsgfQorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGJv
b2wgd2Via2l0SXNGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW47IH0K
KyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsU2NyZWVuICYmIG1fYXJlS2V5c0VuYWJsZWQ7IH0KKyAgICBFbGVtZW50KiB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50OyB9CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHZv
aWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworICAgIHZvaWQgd2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCosIGJvb2wga2V5c0VuYWJs
ZWQpOworICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIAorICAgIHZvaWQg
d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQg
d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgdm9pZCB3
ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdl
YmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisjZW5kaWYKIAogICAg
IGJvb2wgd3JpdGVEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVEaXNhYmxlZDsgfQog
ICAgIHZvaWQgc2V0V3JpdGVEaXNhYmxlZChib29sIGZsYWcpIHsgbV93cml0ZURpc2FibGVkID0g
ZmxhZzsgfQpAQCAtMTI4Niw2ICsxMzA1LDEyIEBAIHByaXZhdGU6CiAgICAgSGFzaFNldDxNZWRp
YUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnM7CiAKICAgICBRdWFs
aWZpZWROYW1lIG1faWRBdHRyaWJ1dGVOYW1lOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQorICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW47CisgICAgYm9vbCBtX2FyZUtleXNFbmFibGVkOwor
ICAgIEVsZW1lbnQqIG1fZnVsbFNjcmVlbkVsZW1lbnQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBi
b29sIERvY3VtZW50OjpoYXNFbGVtZW50V2l0aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25z
dApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNjQyMDkpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0MCw2ICsyNDAsMTUgQEAgbW9kdWxlIGNvcmUgewog
ICAgICAgICBbRG9udEVudW1dIHZvaWQgaW5pdGlhbGl6ZVdNTFBhZ2VTdGF0ZSgpOwogI2VuZGlm
CiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgor
ICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZvaWQgd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZDsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Owor
ICAgICAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyNlbmRpZgorCiAjaWYgIWRl
ZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAg
ICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2
NDIwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgy
LDUgKzE1ODIsMTcgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKAog
ICAgIHJldHVybiBOb2RlOjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNoaWxkKTsKIH0KICNl
bmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQordm9pZCBFbGVtZW50Ojp3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpCit7CisgICAgZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhpcywgZmFsc2UpOworfQorCit2b2lkIEVsZW1lbnQ6
OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQoreworICAgIGRvY3VtZW50KCktPndl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIHRydWUpOworfQor
I2VuZGlmICAgIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9F
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2
NDIwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiAr
OTQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3Vj
aGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7
CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOworI2VuZGlmCiAKICAgICB2aXJ0
dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50
KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2Ny
aXB0aW5nQWxsb3dlZCk7CiAKQEAgLTI5Miw2ICsyOTUsMTEgQEAgcHVibGljOgogI2lmIEVOQUJM
RShTVkcpCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSop
IGNvbnN0OyAKICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuV2l0aEtleXMoKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAgRWxlbWVudChjb25zdCBR
dWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQsIENvbnN0cnVjdGlvblR5
cGUgdHlwZSkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiA2NDIwOSkKKysrIFdlYkNvcmUvZG9tL0Vs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDExIEBAIG1vZHVsZSBjb3Jl
IHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7CiAjZW5k
aWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVO
CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAg
Ly8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkBAIC0yMDUsNiArMjEwLDcgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5U
UyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50
aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVu
ZXIgb250b3VjaGNhbmNlbDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgQ29uZGl0aW9u
YWw9RlVMTFNDUkVFTl0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAj
ZW5kaWYKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA2NDIwOSkKKysrIFdlYkNvcmUvZG9t
L0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2MiwxMyBAQCBib29sIEV2ZW50
Ojppc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCitib29sIEV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wg
RXZlbnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKIHsKICAgICByZXR1
cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDY0MjA5KQorKysgV2ViQ29yZS9kb20vRXZlbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0OworI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQoKSBjb25zdDsKKyNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc1NWR1pvb21FdmVudCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lv
biA2NDIwOSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU5LDYgKzE1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8obG9h
ZGVuZCkgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorICAgIFwK
IC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNsYXNzIEV2ZW50TmFt
ZXMgOiBwdWJsaWMgTm9uY29weWFibGUgewpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorCisjaW5jbHVkZSAiRXZl
bnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBGcm9tIHRoZSBNb3pp
bGxhIEZ1bGxTY3JlZW4gcHJvcG9zYWw6ICJUaGUgW2Z1bGxTY3JlZW5DaGFuZ2VFdmVudF0gYnVi
YmxlcyAKKy8vIGFuZCBpcyBub3QgY2FuY2VsbGFibGUuIgorCitXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpCis6IEV2ZW50KGV2ZW50TmFt
ZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKQoreworfQorCitX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQo
KQoreworfQorCit2b2lkIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbmNlbGFibGVBcmcpCit7CisgICAg
aWYgKGRpc3BhdGNoZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGluaXRFdmVudCh0
eXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVBcmcpOworfQorICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9oCisjZGVmaW5lIFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudF9oCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKworI2luY2x1ZGUg
IkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOwor
ICAgIH0gICAgICAgIAorICAgIHZpcnR1YWwgfldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgp
OworICAgIAorICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBB
dG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisgICAg
Citwcml2YXRlOgorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpOworICAgIFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NSRUVO
KQorCisjZW5kaWYgLy8gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKSW5kZXg6IFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgZXZlbnRzIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdPUktFUlMmRlVMTFNDUkVFTiwKKyAgICAgICAg
Tm9TdGF0aWNUYWJsZXMKKyAgICBdIEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IEV2ZW50IHsKKwor
ICAgICAgICB2b2lkIGluaXRFcnJvckV2ZW50KGluIERPTVN0cmluZyB0eXBlQXJnLCBpbiBib29s
ZWFuIGNhbkJ1YmJsZUFyZywgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnLCBpbiBET01TdHJpbmcg
bWVzc2FnZUFyZywgaW4gRE9NU3RyaW5nIGZpbGVuYW1lQXJnLCBpbiB1bnNpZ25lZCBsb25nIGxp
bmVub0FyZyk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CShyZXZpc2lvbiA2NDIxMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBvbndlYmtpdGFuaW1hdGlvbml0ZXJh
dGlvbgogb253ZWJraXRhbmltYXRpb25lbmQKIG9ud2Via2l0YmVnaW5mdWxsc2NyZWVuCiBvbndl
YmtpdGVuZGZ1bGxzY3JlZW4KK29ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZQogb253ZWJraXR0cmFu
c2l0aW9uZW5kCiBvcHRpbXVtCiBwYXR0ZXJuCkBAIC0yODIsNSArMjgzLDYgQEAgdmlld3NvdXJj
ZQogdmxpbmsKIHZzcGFjZQogd2Via2l0ZGlyZWN0b3J5Cit3ZWJraXRhbGxvd2Z1bGxzY3JlZW4K
IHdpZHRoCiB3cmFwCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MjEwKQorKysg
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
MTAgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CkBAIC0yNjIsNiArMjY2LDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb250b3VjaGNhbmNl
bEF0dHIpIHsKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
dG91Y2hjYW5jZWxFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
KSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIGNy
ZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworI2VuZGlmCiAgICAgfQog
fQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0MjEwKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTEgQEAgbW9k
dWxlIGh0bWwgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdF
X09CSkVDVElWRV9DCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdGl0bGVE
aXNwbGF5U3RyaW5nOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAm
JiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
KCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2Vu
ZGlmCiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCShyZXZp
c2lvbiA2NDIxMCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEzMiw2ICsxMzIsMTAgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzYW5kYm94QXR0cikK
ICAgICAgICAgc2V0U2FuZGJveEZsYWdzKHBhcnNlU2FuZGJveEF0dHJpYnV0ZShhdHRyKSk7CiAj
ZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdl
YmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpCisgICAgICAgIG1fYWxsb3dGdWxsU2NyZWVuID0gdHJ1
ZTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJ
KHJldmlzaW9uIDY0MjEwKQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SFRNTElGcmFtZUVsZW1lbnQgOiBwdWJsaWMgSFRNTEZyYW1lRWxlbWVudEJhc2UgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxJRnJhbWVFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisgICAgCisgICAgYm9vbCB3ZWJraXRBbGxvd0Z1
bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93RnVsbFNjcmVlbjsgfQorICAgIHZvaWQg
c2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0Z1bGxTY3JlZW4g
PSB2YWx1ZTsgfQogCiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTAsNiArNTMsNyBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAogICAgIEF0b21p
Y1N0cmluZyBtX25hbWU7CisgICAgYm9vbCBtX2FsbG93RnVsbFNjcmVlbjsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkocmV2
aXNpb24gNjQyMTApCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5IEBAIG1vZHVsZSBodG1sIHsKICAgICAgICAgYXR0cmli
dXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0
XSBET01TdHJpbmcgc2FuZGJveDsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJp
bmcgc2Nyb2xsaW5nOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9G
VUxMU0NSRUVOCisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHdlYmtpdEFs
bG93RnVsbFNjcmVlbjsKKyNlbmRpZgogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHdpZHRoOwog
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDIxMCkKKysrIFdl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcg
KzMxMiw3IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWUKIHsKICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0VNUFRZKQogICAgICAgICBwYXVzZShwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSk7Ci0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgIGlmIChp
c0Z1bGxzY3JlZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICBIVE1MRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwogfQpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1l
bnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKCkKIHsKLSAgICBpZiAobV9pc0Z1bGxzY3Jl
ZW4pCisgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwog
CiAgICAgbV9pbkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CkBAIC0yMDEzLDI0ICsyMDEzLDQ0IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIKIH0KICNlbmRpZiAvLyBF
TkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojpp
c0Z1bGxzY3JlZW4oKSBjb25zdCAKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICByZXR1
cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dCgpID09IHRoaXMgOiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIG1faXNGdWxsc2NyZWVuOwor
I2VuZGlmCit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBBU1NFUlQoIWlzRnVsbHNjcmVlbigpKTsKKyAg
ICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZWxzZQogICAgIEFTU0VSVCgh
bV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsKICAgICBpZiAoZG9j
dW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKICAgICAgICAgZG9jdW1lbnQoKS0+cGFn
ZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CiAg
ICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2
ZW50KTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVs
bHNjcmVlbigpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgQVNTRVJUKGlzRnVsbHNj
cmVlbigpKTsKKyAgICBpZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0
Q2FuY2VsRnVsbFNjcmVlbigpOworI2Vsc2UKICAgICBBU1NFUlQobV9pc0Z1bGxzY3JlZW4pOwog
ICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1l
bnQoKS0+cGFnZSgpKSB7CiAgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNs
aWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZl
bnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlm
CiB9CiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1NZWRpYSgpIGNv
bnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDY0MjEwKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1
Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25z
dCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2lu
KCk7IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNG
dWxsc2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIGVu
dGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQyMTApCisrKyBXZWJDb3JlL2h0bWwv
SFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNp
bmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5k
ZXJWaWRlby5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMTI2LDExICsxMjcsMjMgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1
bGxzY3JlZQogICAgIGlmICghcGFnZSkgCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVu
YWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAgCiAgICAgaWYgKCFw
bGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1cHBvcnRzRnVsbHNjcmVlbigpIHx8ICFwbGF5ZXIoKS0+
aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgd2l0aCB0
aGUgcGxhdGZvcm0gY2xpZW50LgotICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCkt
PnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVu
Rm9yRWxlbWVudCh0aGlzKTsKKyNlbHNlCisgICAgLy8gc3VwcG9ydHNGdWxsU2NyZWVuRm9yTm9k
ZSBoYXMgYmVlbiByZW1vdmVkIChpbiBmYXZvciBvZiAuLi5Gb3JFbGVtZW50KS4gIFJldHVybgor
ICAgIC8vIHRydWUgaGVyZSBpbnN0ZWFkLCBzaW5jZSB0aGUgb2xkIGltcGxlbWVudGF0aW9uIHdv
dWxkIHJldHVybiB0cnVlIGlmIHRoZSAKKyAgICAvLyBlbGVtZW50IGlzIGEgSFRNTFZpZGVvRWxl
bWVudC4KKyAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogfQogCiB1bnNpZ25lZCBIVE1MVmlkZW9F
bGVtZW50Ojp2aWRlb1dpZHRoKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9u
IDY0MjA5KQorKysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTksOSArMjE5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBi
b29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9k
ZShjb25zdCBOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVu
dGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhp
dEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAg
ICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxl
bWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxz
Y3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRG
dWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9CisjZW5kaWYKIAogI2lmIEVOQUJMRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJlY3RG
b3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJbmRleDog
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiA2NDIwOSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFn
ZSogcGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwg
YmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lm
IEVOQUJMRShGVUxMU0NSRUVOKQorICAgICwgbV9mdWxsU2NyZWVuRW5hYmxlZChmYWxzZSkKKyNl
bmRpZgogICAgICwgbV9tZW1vcnlJbmZvRW5hYmxlZChmYWxzZSkKICAgICAsIG1faW50ZXJhY3Rp
dmVGb3JtVmFsaWRhdGlvbihmYWxzZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA2NDIwOSkK
KysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTAsNiArMzEw
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQYWdpbmF0ZUR1cmlu
Z0xheW91dEVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVk
ID0gZmxhZzsgfQogICAgICAgICBib29sIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOyB9CiAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICAgICAgdm9pZCBzZXRGdWxsU2NyZWVuRW5hYmxlZChib29sIGZs
YWcpIHsgbV9mdWxsU2NyZWVuRW5hYmxlZCA9IGZsYWc7IH0KKyAgICAgICAgYm9vbCBmdWxsU2Ny
ZWVuRW5hYmxlZCgpIGNvbnN0ICB7IHJldHVybiBtX2Z1bGxTY3JlZW5FbmFibGVkOyB9CisjZW5k
aWYKKwogICAgICAgICB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21l
bW9yeUluZm9FbmFibGVkID0gZmxhZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9FbmFibGVk
KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC00MDMsNiArNDA4
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faHRtbDVUcmVlQnVpbGRl
ckVuYWJsZWQ6IDE7IC8vIFdpbGwgYmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICAg
ICBib29sIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBt
X2Ruc1ByZWZldGNoaW5nRW5hYmxlZCA6IDE7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAg
ICAgIGJvb2wgbV9mdWxsU2NyZWVuRW5hYmxlZCA6IDE7CisjZW5kaWYKICAgICAgICAgYm9vbCBt
X21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBib29sIG1faW50ZXJhY3RpdmVGb3JtVmFs
aWRhdGlvbjogMTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVs
ZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5jcHAJKHJldmlzaW9uIDY0MjEwKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNyArNzc2LDEwIEBAIFBh
c3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKIHZvaWQgTWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50
KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7
Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgaWYg
KG1lZGlhRWxlbWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1lZGlhRWxlbWVu
dCgpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3Rh
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaAkocmV2aXNpb24gNjQyMTApCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIGVu
dW0gUHNldWRvSWQgewogICAgIE1FVEVSX0hPUklaT05UQUxfQkFSLCBNRVRFUl9IT1JJWk9OVEFM
X09QVElNVU0sIE1FVEVSX0hPUklaT05UQUxfU1VCT1BUSU1BTCwgTUVURVJfSE9SSVpPTlRBTF9F
VkVOX0xFU1NfR09PRCwKICAgICBNRVRFUl9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZFUlRJQ0FMX09Q
VElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NVQk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FMX0VWRU5fTEVT
U19HT09ELCAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAorICAgIEZVTExfU0NS
RUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQsCiAgICAg
RklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKICAgICBGSVJTVF9JTlRFUk5BTF9Q
U0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKICAgICBQVUJMSUNfUFNFVURPSURfTUFTSyA9
ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwgRklSU1RfUFVC
TElDX1BTRVVET0lEKSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62874</attachid>
            <date>2010-07-28 14:04:25 -0700</date>
            <delta_ts>2010-07-29 09:05:57 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>57644</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU4gbW9kZSBmb3IgdGhlIE1hYyAoZXhj
ZXB0IGlQaG9uZSkuCisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gNjQyMTYpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTk3LDYgKzU5Nyw3IEBACiAjZW5kaWYKICNkZWZpbmUg
SEFWRV9SRUFETElORSAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCisjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
UEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAxMC0wNy0y
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlwdCBBUEkgdG8gYWxsb3cg
YSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzY4Njc3OTUK
KyAgICAgICAgCisgICAgICAgIE1vemlsbGEgaGFzIHByb3Bvc2VkIGEgbmV3IHNldCBvZiBKYXZh
U2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55IGVsZW1lbnQgaW4KKyAgICAgICAgYSBkb2N1bWVu
dCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBjdXJyZW50IHJldmlzaW9uIG9mIHRoZWlyIHByb3Bv
c2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQgaGVyZToKKyAgICAgICAgPGh0dHBzOi8vd2lraS5t
b3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9R2Vja286RnVsbFNjcmVlbkFQSSZvbGRpZD0yMzU2
MDE+CisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zZWQgc3BlY2lmaWNhdGlvbiBpbmNsdWRl
cyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgIC0g
VGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVz
dEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMoKQorICAgICAgICAgICAgKyB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKQorICAgICAgICAtIFRo
cmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3VtZW50OgorICAgICAgICAgICAgKyByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuCisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRoS2V5cworICAgICAgICAgICAgKyAob3B0aW9uYWwp
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAorICAg
ICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6CisgICAgICAgIC0gVHdvIG5ldyBtZXRob2RzIG9u
IEVsZW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAg
ICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAgICAKKyAgICAg
ICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAgICAgIC0gT25lIG5ldyBjb250ZW50IGF0dHJpYnV0
ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxsU2NyZWVuCisgICAgICAgICAgICAKKyAgICAgICAg
RXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcgZXZlbnQ6CisgICAgICAgICAgICArIGZ1bGxTY3Jl
ZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAgIENTUyBQc2V1ZG8tY2xhc3NlczoKKyAgICAgICAg
LSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6CisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbgor
ICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tZG9jCisgICAgICAgICAgICArIDpmdWxsLXNjcmVl
bi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAgIAorICAgICAgICBGb3IgV2ViS2l0J3MgaW5pdGlh
bCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBhYm92ZSBuZXcgQVBJcyB3aWxsIGJlIHByZWZpeGVk
IHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9yICItd2Via2l0IiB3aGVyZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0czoKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAgICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAgICAgICAgUHJvamVjdCBmaWxlIGNoYW5nZXM6Cisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEFkZGVkIGFu
IEVOQUJMRV9GVUxMU0NSRUVOIGVudHJ5LgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
IEFkZGVkIHJ1bGVzIGZvciBmdWxsc2NyZWVuLmNzcyBhbmQgV2ViQ29yZS5GdWxsU2NyZWVuLmV4
cC4KKyAgICAgICAgKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwOiBBZGRlZCBleHBvcnQgc3ltYm9s
cyBmb3IgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IHNvdXJjZSBmaWxlcyBhZGRlZCB0byB0aGUg
cHJvamVjdC4KKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRG9jdW1lbnQncyBqYXZh
c2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBu
ZXcgZnVsbC1zY3JlZW4gQVBJIHRvIHRoZSBFbGVtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2Uu
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBhbGxvd0Z1
bGxTY3JlZW4gYXR0cmlidXRlLgorCisgICAgICAgIFNvdXJjZSBjaGFuZ2VzOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBFeHBvc2VkIERvY3VtZW50IGFu
ZCBFbGVtZW50IGZ1bGxzY3JlZW4gZnVuY3Rpb25zIGluIHRoZSBET00gY2xhc3Nlcy4KKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOiBBZGRlZCBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8tY2xh
c3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IAorICAgICAg
ICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5o
OiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOiBBZGRlZCBuZXcgZnVsbC1zY3Jl
ZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUgZW51bS4KKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6bG9hZEZ1bGxEZWZhdWx0
U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRvIHRoZSBkZWZhdWx0U3R5
bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRzLgorICAgICAgICAoV2ViQ29yZTo6
bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3NzIHNoZWV0IGlu
dG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENoZWNrIGZvciB0aGUg
bmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y3JlYXRlRXZlbnQpOiBTdXBwb3J0IGNyZWF0aW5nIGEgIldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2UiIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZExp
c3RlbmVyVHlwZUlmTmVlZGVkKTogU3VwcG9ydCBsaXN0ZW5pbmcgZm9yIGEgIndlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCIKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5XaXRoS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMpOiBQYXNzZXMgcmVxdWVzdCB0byB0
aGUgY2hyb21lIGNsaWVudCB0byBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4pOiBQYXNzZXMgcmVxdWVzdCB0
byB0aGUgY2hyb21lIGNsaWVudCB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBT
ZXRzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVt
ZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQp
OiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDbGVhcnMgdGhlIEZ1bGxTY3JlZW4gcHNldWRv
LWNsYXNzZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDogQWRkZWQgY29uc3QgYWNjZXNzb3JzIGZvciBuZXcgZnVs
bC1zY3JlZW4gaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuKTogQWNj
ZXNzb3IgZm9yIG1faXNGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCk6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNj
cmVuIGFuZCBtX2FyZUtleXNFbmFibGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCk6IEFjY2Vzc29yIGZvciBtX2Z1bGxTY3JlZW5F
bGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLiAKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOiBDYWxscyBEb2N1bWVudDo6
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMuCisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTogT3ZlcnJpZGVkIGJ5IFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmluaXRX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOiBQYXJzZSB0aGUgbmV3ICJvbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UiIGF0dHJpYnV0ZSBhbmQgcmVnaXN0ZXIgYSBsaXN0ZW5lci4KKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6
d2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxsU2NyZWVuLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNldFdlYmtpdEFsbG93RnVsbFNj
cmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOiBSZS1pbXBsZW1lbnRlZCB0aGUgSFRNTE1lZGlhRWxlbWVudCBm
dWxsIHNjcmVlbiBzdXBwb3J0IGluIHRlcm1zIG9mIHRoZSBuZXcgKGdlbmVyaWMpIGZ1bGwgc2Ny
ZWVuIHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9j
dW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
eGl0RnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCk6IFBhc3Mg
dGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvckVs
ZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3Vn
aCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9sIHJ1bnRpbWUgc3VwcG9y
dCBmb3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpmdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVGhlIGZ1bGwgc2NyZWVuIGJ1
dHRvbiBub3cgdG9nZ2xlcyBmdWxsIHNjcmVlbiBtb2RlIChwcmV2aW91c2x5LCBpdCBvbmx5IGVu
dGVyZWQpLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAxMC0wNy0yOCAgVG9ueSBHZW50aWxjb3JlICA8
dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw3IEBAIERPTV9DTEFT
U0VTID0gXAogICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUgXAogICAgIFdlYktpdENTU01hdHJp
eCBcCiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAgIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudCBcCiAgICAgV2ViS2l0UG9pbnQgXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVu
dCBcCiAgICAgV2ViU29ja2V0IFwKQEAgLTY2Miw2ICs2NjMsMTAgQEAgaWZlcSAoJChPUyksTUFD
T1MpCiBlbmRpZgogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVO
LCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9GVUxMU0NSRUVOKQorICAgIFVTRVJfQUdFTlRf
U1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3Nz
L2Z1bGxzY3JlZW4uY3NzCitlbmRpZgorCiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIDogY3NzL21h
a2UtY3NzLWZpbGUtYXJyYXlzLnBsICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAJcGVybCAk
PCAkQCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMpCiAKSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25m
aWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1
cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIEVOQUJM
RV9GSUxURVJTID0gRU5BQkxFX0ZJTFRFUlM7CiBFTkFCTEVfRklMRV9SRUFERVIgPSBFTkFCTEVf
RklMRV9SRUFERVI7CiBFTkFCTEVfRklMRV9XUklURVIgPSA7CiBFTkFCTEVfRklMRV9TWVNURU0g
PSA7CitFTkFCTEVfRlVMTFNDUkVFTiA9IEVOQUJMRV9GVUxMU0NSRUVOOwogRU5BQkxFX0dFT0xP
Q0FUSU9OID0gRU5BQkxFX0dFT0xPQ0FUSU9OOwogRU5BQkxFX0lDT05EQVRBQkFTRSA9IEVOQUJM
RV9JQ09OREFUQUJBU0U7CiBFTkFCTEVfSU1BR0VfUkVTSVpFUiA9IDsKQEAgLTg2LDQgKzg3LDQg
QEAgRU5BQkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFC
TEVfWFNMVCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NM
SUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFH
UklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVO
QUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZF
TlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJM
RV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxF
X0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVND
UklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5B
QkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChF
TkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVO
QUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9O
KSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykg
JChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxF
X1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVf
V0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRN
TE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAk
KEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JF
TkRFUklORykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcp
ICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQo
RU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVO
VEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkg
JChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVB
REVSKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxF
X0ZVTExTQ1JFRU4pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk4Nyw2ICs0OTg3LDggQEAKIAkJQzVFQkRE
ODQxMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM1RUJERDgxMTA1RURERUMwMDU2
ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggKi87IH07CiAJCUM2RDc0QUQ1MDlBQTI4
MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAv
KiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLzsgfTsKIAkJQzZENzRBRTQwOUFBMjkwQTAw
MEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFFMzA5QUEyOTBBMDAwQjBBNTIgLyog
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLzsgfTsKKwkJQ0RBNzlBNzMxMUU3QTRDNzAw
ODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlDREE3OUE3NDExRTdBNEM3
MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5
NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovOyB9OwogCQlDRTAyRjBDNDEx
RTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAv
KiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxO
b1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwICovOyB9OwpAQCAtMTA2NjEsNiArMTA2NjMsMTAgQEAKIAkJQzVFQkREODExMDVFRERFQzAw
NTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlv
bkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEy
OTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBm
dWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBNzlBNzYxMUU3QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2
ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBab29tTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjE1LDYgKzE2NjIxLDcgQEAK
IAkJCQlCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaWRsICovLAogCQkJCTRDREU1NEVDMEU1NTc5NzgwMDg5RTI2QyAvKiB3bWwuY3NzICov
LAorCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MTU3
LDYgKzE3MTY0LDkgQEAKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJL
aXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBX
ZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCisJCQkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovLAorCQkJCUNEQTc5QTcyMTFFN0E0
QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNE
QTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRs
ICovLAogCQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwICovLAogCQkJCTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmlkbCAqLywKQEAgLTE5ODY4LDYgKzE5ODc4LDcgQEAKIAkJCQlFMUJFNTEy
RTBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5N0RENEQ4NzBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAq
LywKKwkJCQlDREE3OUE3MzExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRDExRjU4MTYxMDAwODFFMUEgLyog
U1ZHUmVzb3VyY2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQkwODREMEUzRjExRjU4MTYxMDAwODFF
MUEgLyogU1ZHUmVzb3VyY2VzQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NUIwNUMzMTFG
QUUxNkMwMDRENjVGNiAvKiBTVkdSZXNvdXJjZXNDeWNsZVNvbHZlci5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yMjI2Niw2ICsyMjI3Nyw3IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8q
IFhTTFRQcm9jZXNzb3JMaWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENG
NkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
OTdERDREODYwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODREMEUzQzExRjU4MTYxMDAwODFFMUEgLyog
U1ZHUmVzb3VyY2VzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NEQwRTNFMTFGNTgxNjEwMDA4
MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODZBNDAw
NjExRjZENkI3MDAyQ0VDNTMgLyogUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIuY3BwIGluIFNv
dXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmgJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RP
TUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBAaW50ZXJm
YWNlIERPTURvY3VtZW50IDogRE9NTm9kZSBXRUJLSVRfCiAtIChET01Ob2RlTGlzdCAqKWdldEVs
ZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopdGFnbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICop
c2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlz
dCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9X
RUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5B
QkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxF
X0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRD
YW5jZWxGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYK
IEBlbmQKIAogQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZSBXRUJLSVRf
VkVSU0lPTl8xXzMKQEAgLTIyNCw2ICsyMjksMTAgQEAgQGludGVyZmFjZSBET01FbGVtZW50IDog
RE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
OihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERP
TUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVf
SU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxs
OihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwor
I2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCistICh2
b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80
XzA7CistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMgQVZBSUxBQkxFX0lO
X1dFQktJVF9WRVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUVudGl0
eSA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05fMV8zCkBAIC01NjksNiArNTc4LDkgQEAgQGludGVy
ZmFjZSBET01IVE1MSUZyYW1lRWxlbWVudCA6IERPTUhUTQogQHByb3BlcnR5KGNvcHkpIE5TU3Ry
aW5nICp3aWR0aDsKIEBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBET01Eb2N1bWVudCAqY29u
dGVudERvY3VtZW50OwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIERPTUFic3RyYWN0Vmll
dyAqY29udGVudFdpbmRvdyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRl
ZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCitAcHJvcGVydHko
YXNzaWduKSBCT09MIHdlYmtpdEFsbG93RnVsbFNjcmVlbjsKKyNlbmRpZgogQGVuZAogCiBAaW50
ZXJmYWNlIERPTUhUTUxJbWFnZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCBXRUJLSVRfVkVSU0lP
Tl8xXzMKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9j
c3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDE1IEBAIFBz
ZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXAKICAgICAgICAgcmV0dXJuIE5P
UFNFVURPOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBjYXNlIFBzZXVk
b0Z1bGxTY3JlZW46CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTjsKKyAgICBjYXNlIFBzZXVk
b0Z1bGxTY3JlZW5Eb2M6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTl9ET0M7CisgICAgY2Fz
ZSBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisgICAgICAgIHJldHVybiBGVUxMX1ND
UkVFTl9ST09UX1dJVEhfVEFSR0VUOworI2VuZGlmCisgICAgICAgICAgICAKICAgICBjYXNlIFBz
ZXVkb0lucHV0TGlzdEJ1dHRvbjoKICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgICAgIHJldHVy
biBJTlBVVF9MSVNUX0JVVFRPTjsKQEAgLTQyMiw2ICs0MzEsMTEgQEAgc3RhdGljIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmaXJzdFBhZ2UsICgiZmlyc3QiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChB
dG9taWNTdHJpbmcsIGxlZnRQYWdlLCAoImxlZnQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChBdG9taWNTdHJpbmcsIHJpZ2h0UGFnZSwgKCJyaWdodCIpKTsKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTikKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbiwg
KCItd2Via2l0LWZ1bGwtc2NyZWVuIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuRG9jLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuUm9vdFdpdGhUYXJn
ZXQsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0IikpOworI2VuZGlmCiAK
ICAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlID0gMDsKICAgICBpZiAoIW5hbWVUb1BzZXVkb1R5cGUp
IHsKQEAgLTUzMyw2ICs1NDcsMTEgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCos
IENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZmlyc3RQYWdlLmltcGwoKSwg
Q1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChsZWZ0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSk7CiAgICAg
ICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChyaWdodFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6
UHNldWRvUmlnaHRQYWdlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgbmFtZVRv
UHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW4uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVs
bFNjcmVlbik7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuRG9jLmlt
cGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2MpOworICAgICAgICBuYW1lVG9Q
c2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0LmltcGwoKSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCk7CisjZW5kaWYKICAgICB9CiAgICAg
cmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7CiB9CkBAIC02NjIsNiArNjgxLDExIEBAIHZvaWQgQ1NT
U2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBjYXNlIFBzZXVkb1NpbmdsZUJ1
dHRvbjoKICAgICBjYXNlIFBzZXVkb05vQnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm90UGFyc2Vk
OgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAg
ICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuUm9v
dFdpdGhUYXJnZXQ6CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9GaXJz
dFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNp
b24gNjQyMTYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMTcsNiArMjE3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVk
b0xlZnRQYWdlLAogICAgICAgICAgICAgUHNldWRvUmlnaHRQYWdlLAogICAgICAgICAgICAgUHNl
dWRvRmlyc3RQYWdlLAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICAgICAgUHNldWRv
RnVsbFNjcmVlbiwKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5Eb2MsCisgICAgICAgICAg
ICBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQsCisjZW5kaWYKICAgICAgICAgfTsKIAog
ICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0OCw2ICs1NDgsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxE
ZWZhdWx0U3R5bGUoKQogICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2Vy
QWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVu
ZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKICAgICBD
U1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NSdWxlcyk7CiAg
ICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgc2Ny
ZWVuRXZhbCgpKTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAvLyBGdWxsLXNj
cmVlbiBydWxlcy4KKyAgICBTdHJpbmcgZnVsbHNjcmVlblJ1bGVzID0gU3RyaW5nKGZ1bGxzY3Jl
ZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hl
ZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVl
dCgpOworICAgIENTU1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChm
dWxsc2NyZWVuUnVsZXMpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVs
bHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworI2VuZGlmCiB9
CiAKIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQpAQCAtNTYzLDYgKzU3MSwx
MyBAQCBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKICAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNpbXBsZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFs
KCkpOwogICAgIAogICAgIC8vIE5vIG5lZWQgdG8gaW5pdGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0
IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxlcyBmb3IgZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1w
bGUgZGVmYXVsdCBzdHlsZS4KKworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIC8vIEZ1bGwt
c2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNj
cmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVT
aGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURlZmF1bHRTdHlsZVNo
ZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0
KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChm
dWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisjZW5kaWYKIH0KICAgICAKIHN0YXRpYyB2
b2lkIGxvYWRWaWV3U291cmNlU3R5bGUoKQpAQCAtMjYxOSw2ICsyNjM0LDM3IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisjaWYgRU5B
QkxFKEZVTExTQ1JFRU4pCisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxs
U2NyZWVuOgorICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1
bGxzY3JlZW4gc3RhdGUsIGFuZCB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gCisg
ICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwg
dGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBwbGllcyB0byAKKyAgICAgICAgICAgICAg
ICAvLyB0aGF0IGVsZW1lbnQuIEFsc28sIGFuIDxpZnJhbWU+LCA8b2JqZWN0PiBvciA8ZW1iZWQ+
IGVsZW1lbnQgd2hvc2UgY2hpbGQgYnJvd3NpbmcgCisgICAgICAgICAgICAgICAgLy8gY29udGV4
dCdzIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGhhcyB0aGUgJ2Z1bGwtc2Ny
ZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVkLgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1l
bnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT53ZWJraXRDdXJy
ZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERv
Y3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlLCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYycg
cHNldWRvY2xhc3MgYXBwbGllcyAKKyAgICAgICAgICAgICAgICAvLyB0byB0aGUgcm9vdCBlbGVt
ZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgp
LT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVu
dCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2Ny
ZWVuUm9vdFdpdGhUYXJnZXQ6CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBEb2N1bWVudCBp
cyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBhbmQgdGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxs
c2NyZWVuIGVsZW1lbnQgCisgICAgICAgICAgICAgICAgLy8gaXMgYW4gZWxlbWVudCBpbiB0aGUg
ZG9jdW1lbnQsIHRoZSAnZnVsbC1zY3JlZW4tZG9jLXdpdGgtdGFyZ2V0JyBwc2V1ZG9jbGFzcyBh
cHBsaWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBE
b2N1bWVudC4KKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVs
bFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3Vt
ZW50KCktPmNvbnRhaW5zKGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQ
c2V1ZG9Vbmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90UGFy
c2VkOgogICAgICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4u
Y3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MjYgQEAKKzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgcG9zaXRpb246Zml4ZWQ7CisgIHRvcDow
OworICBsZWZ0OjA7CisgIHJpZ2h0OjA7CisgIGJvdHRvbTowOworfQorOi13ZWJraXQtZnVsbC1z
Y3JlZW4tcm9vdC13aXRoLXRhcmdldCB7CisgIG92ZXJmbG93OmhpZGRlbjsKK30KKwordmlkZW86
LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAl
CisgICAgaW1hZ2UtZml0OiBmaWxsOworfQorCitpbWc6LXdlYmtpdC1mdWxsLXNjcmVlbiB7Cisg
ICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlOworICAgIGltYWdlLWZpdDogZmlsbDsK
K30KKwordmlkZW86LXdlYmtpdC1mdWxsLXBhZ2UtbWVkaWE6LXdlYmtpdC1mdWxsLXNjcmVlbjo6
LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5lbCB7CisgICAgYm90dG9tOiAwcHg7Cit9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjQyMTYpCisr
KyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw2ICsxOTks
MTAgQEAKICNpbmNsdWRlICJIVE1MTm9TY3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5o
IgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwog
dXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC00MDQsNiArNDA4LDExIEBAIERvY3VtZW50OjpE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEsKICNlbmRpZgogICAgICwgbV93ZWFrUmVmZXJl
bmNlKERvY3VtZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJp
YnV0ZU5hbWUoaWRBdHRyKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICwgbV9pc0Z1bGxT
Y3JlZW4oMCkKKyAgICAsIG1fYXJlS2V5c0VuYWJsZWQoMCkKKyAgICAsIG1fZnVsbFNjcmVlbkVs
ZW1lbnQoMCkKKyNlbmRpZgogewogICAgIG1fZG9jdW1lbnQgPSB0aGlzOwogCkBAIC0zMjcyLDYg
KzMyODEsMTAgQEAgUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KAogI2Vu
ZGlmCiAgICAgICAgIGV2ZW50ID0gVG91Y2hFdmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTikKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIldlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2UiKQorICAgICAgICBldmVudCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dDo6Y3JlYXRlKCk7CisjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiRGV2aWNlT3JpZW50YXRpb25FdmVudCIpCiAgICAgICAg
IGV2ZW50ID0gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKCk7CkBAIC0zMzIzLDYgKzMz
MzYsMTAgQEAgdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoYwogICAgICAg
ICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CiAg
ICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgZWxzZSBpZiAoZXZlbnRU
eXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQpCisgICAgICAg
IGFkZExpc3RlbmVyVHlwZShGVUxMU0NSRUVOX0xJU1RFTkVSKTsKKyNlbmRpZgogfQogCiBDU1NT
dHlsZURlY2xhcmF0aW9uKiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29u
c3QgU3RyaW5nJikKQEAgLTUwMzYsNSArNTA1Myw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyKiBE
b2N1bWVudDo6aW5zcGVjdG9yCiAgICAgcmV0dXJuIHBhZ2UoKSA/IHBhZ2UoKS0+aW5zcGVjdG9y
Q29udHJvbGxlcigpIDogMDsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKQoreworICAgIHdlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKGRvY3VtZW50RWxlbWVudCgpLCBm
YWxzZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMoKQoreworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKGRv
Y3VtZW50RWxlbWVudCgpLCB0cnVlKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wg
a2V5c0VuYWJsZWQpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFlbGVtZW50
KQorICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAgCisgICAgaWYgKHBh
Z2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KGVs
ZW1lbnQpKSB7CisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxz
Y3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0g
ZWxlbWVudDsKKyAgICAgICAgbV9hcmVLZXlzRW5hYmxlZCA9IGtleXNFbmFibGVkOworICAgIH0K
K30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpCit7CisgICAgaWYg
KCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+
c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50KSkKKyAgICAg
ICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCht
X2Z1bGxTY3JlZW5FbGVtZW50KTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxF
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFw
YWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQgPyBlbGVtZW50
IDogZG9jdW1lbnRFbGVtZW50KCk7CisgICAgbV9pc0Z1bGxTY3JlZW4gPSB0cnVlOworICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsK
KyAgICBpZiAoZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAg
ICAgZG9jdW1lbnRFbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdl
KTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30K
KyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIGlmICghcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2Ny
ZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIG1faXNGdWxsU2Ny
ZWVuID0gZmFsc2U7CisgICAgbV9hcmVLZXlzRW5hYmxlZCA9IGZhbHNlOworICAgIGlmIChtX2Z1
bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVu
dC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsK
KyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAgfSBlbHNlCisgICAgICAgIGRv
Y3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dDo6Y3JlYXRlKCkpOworICAgIGRvY3VtZW50RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxj
KEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworfQorICAgIAor
I2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNjQy
MTYpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzQsNiAr
Mjc0LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91
Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hjYW5jZWwp
OwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgREVGSU5FX0FUVFJJQlVURV9F
VkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgRG9j
dW1lbnRUeXBlKiBkb2N0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kb2NUeXBlLmdldCgpOyB9CiAK
QEAgLTY3NSw3ICs2NzgsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElTVEVO
RVIgICAgICAgICAgICAgICA9IDB4ODAwLAogICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVSICAg
ICAgICAgICAgICAgICAgPSAweDEwMDAsCiAgICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAgICAg
ICAgICAgICAgICAgICA9IDB4MjAwMCwKLSAgICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAg
ICAgICAgICAgICAgID0gMHg0MDAwCisgICAgICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAg
ICAgICAgICAgICA9IDB4NDAwMCwKKyAgICAgICAgRlVMTFNDUkVFTl9MSVNURU5FUiAgICAgICAg
ICAgICAgICAgID0gMHg4MDAwLAogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVyVHlwZShM
aXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdCB7IHJldHVybiAobV9saXN0ZW5lclR5cGVz
ICYgbGlzdGVuZXJUeXBlKTsgfQpAQCAtMTAwMSw2ICsxMDA1LDIxIEBAIHB1YmxpYzoKICAgICBN
ZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAog
ICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1faWRBdHRyaWJ1dGVOYW1lOyB9CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAg
Ym9vbCB3ZWJraXRJc0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbjsg
fQorICAgIGJvb2wgd2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9pc0Z1bGxTY3JlZW4gJiYgbV9hcmVLZXlzRW5hYmxlZDsgfQorICAgIEVsZW1lbnQq
IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNj
cmVlbkVsZW1lbnQ7IH0KKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAg
dm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhFbGVtZW50KiwgYm9vbCBrZXlzRW5h
YmxlZCk7CisgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgCisgICAgdm9p
ZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgdm9p
ZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lk
IHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQg
d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyNlbmRpZgogCiAg
ICAgYm9vbCB3cml0ZURpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZURpc2FibGVkOyB9
CiAgICAgdm9pZCBzZXRXcml0ZURpc2FibGVkKGJvb2wgZmxhZykgeyBtX3dyaXRlRGlzYWJsZWQg
PSBmbGFnOyB9CkBAIC0xMjg2LDYgKzEzMDUsMTIgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PE1l
ZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVkaWFDYW5TdGFydExpc3RlbmVyczsKIAogICAgIFF1
YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5hbWU7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbjsKKyAgICBib29sIG1fYXJlS2V5c0VuYWJsZWQ7
CisgICAgRWxlbWVudCogbV9mdWxsU2NyZWVuRWxlbWVudDsKKyNlbmRpZgogfTsKIAogaW5saW5l
IGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNv
bnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQwLDYgKzI0MCwxNSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIFtEb250RW51bV0gdm9pZCBpbml0aWFsaXplV01MUGFnZVN0YXRlKCk7CiAjZW5k
aWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVO
CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVkOworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7
CisgICAgICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworI2VuZGlmCisKICNpZiAh
ZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAg
ICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRl
IFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpJbmRleDogV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9u
IDY0MjE2KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1
ODIsNSArMTU4MiwxNyBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIo
CiAgICAgcmV0dXJuIE5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQog
I2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lkIEVsZW1lbnQ6OndlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0aGlzLCBmYWxzZSk7Cit9CisKK3ZvaWQgRWxlbWVu
dDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAgZG9jdW1lbnQoKS0+
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhpcywgdHJ1ZSk7Cit9
CisjZW5kaWYgICAgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9t
L0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9u
IDY0MjE2KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2
ICs5NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRv
dWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2Vs
KTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSk7CisjZW5kaWYKIAogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBjcmVhdGVDb250ZXh0dWFsRnJhZ21l
bnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRT
Y3JpcHRpbmdBbGxvd2VkKTsKIApAQCAtMjkyLDYgKzI5NSwxMSBAQCBwdWJsaWM6CiAjaWYgRU5B
QkxFKFNWRykKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2Rl
KikgY29uc3Q7IAogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5XaXRoS2V5cygpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9u
VHlwZSB0eXBlKQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKICNl
bmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JF
RU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lk
IHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRpZgorCiAjaWYgIWRlZmlu
ZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAg
ICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9u
dEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKQEAgLTIwNSw2ICsyMTAsNyBAQCBtb2R1bGUg
Y29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZF
TlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaG1vdmU7CiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1
bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGVuZDsKICAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0
ZW5lciBvbnRvdWNoY2FuY2VsOworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBDb25kaXRp
b25hbD1GVUxMU0NSRUVOXSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsK
ICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9k
b20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDEzIEBAIGJvb2wgRXZl
bnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK2Jvb2wgRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9v
bCBFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdAogewogICAgIHJl
dHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmltYXRpb25FdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjb25zdDsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3Q7CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudCgpIGNvbnN0OworI2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgdmlydHVhbCBi
b29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0V2
ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlz
aW9uIDY0MjE2KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTksNiArMTU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhs
b2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisgICAg
XAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnRO
YW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENP
TVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09N
UFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5oIgorCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisKKyNpbmNsdWRlICJF
dmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIEZyb20gdGhlIE1v
emlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBbZnVsbFNjcmVlbkNoYW5nZUV2ZW50XSBi
dWJibGVzIAorLy8gYW5kIGlzIG5vdCBjYW5jZWxsYWJsZS4iCisKK1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKKzogRXZlbnQoZXZlbnRO
YW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpCit7Cit9CisK
K1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCgpCit7Cit9CisKK3ZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0V2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZykKK3sKKyAg
ICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaW5pdEV2ZW50
KHR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7Cit9CisgICAgCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpZm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorCisjaW5jbHVk
ZSAiRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk7
CisgICAgfSAgICAgICAgCisgICAgdmlydHVhbCB+V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
KCk7CisgICAgCisgICAgdm9pZCBpbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBib29sIGNhbmNlbGFibGVBcmcpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBp
c1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAg
ICAKK3ByaXZhdGU6CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSk7Cit9Owor
ICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JF
RU4pCisKKyNlbmRpZiAvLyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaApJbmRleDogV2Vi
Q29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBldmVudHMgeworCisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9uYWw9V09SS0VSUyZGVUxMU0NSRUVOLAorICAgICAg
ICBOb1N0YXRpY1RhYmxlcworICAgIF0gRnVsbFNjcmVlbkNoYW5nZUV2ZW50IDogRXZlbnQgewor
CisgICAgICAgIHZvaWQgaW5pdEVycm9yRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJv
b2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmlu
ZyBtZXNzYWdlQXJnLCBpbiBET01TdHJpbmcgZmlsZW5hbWVBcmcsIGluIHVuc2lnbmVkIGxvbmcg
bGluZW5vQXJnKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0
ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMu
aW4JKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIG9ud2Via2l0YW5pbWF0aW9uaXRl
cmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAogb253ZWJraXRiZWdpbmZ1bGxzY3JlZW4KIG9u
d2Via2l0ZW5kZnVsbHNjcmVlbgorb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlCiBvbndlYmtpdHRy
YW5zaXRpb25lbmQKIG9wdGltdW0KIHBhdHRlcm4KQEAgLTI4Miw1ICsyODMsNiBAQCB2aWV3c291
cmNlCiB2bGluawogdnNwYWNlCiB3ZWJraXRkaXJlY3RvcnkKK3dlYmtpdGFsbG93ZnVsbHNjcmVl
bgogd2lkdGgKIHdyYXAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkocmV2aXNpb24gNjQyMTYpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
NywxMCBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMu
aD4KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFt
ZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6
cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoY2Fu
Y2VsQXR0cikgewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUo
KSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjZW5kaWYKICAgICB9
CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMSBAQCBt
b2R1bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VB
R0VfT0JKRUNUSVZFX0MKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0aXRs
ZURpc3BsYXlTdHJpbmc7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4p
ICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7Cisj
ZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CiBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6OkhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxGcmFtZUVs
ZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAg
ICwgbV9hbGxvd0Z1bGxTY3JlZW4oZmFsc2UpCisjZW5kaWYKIHsKICAgICBBU1NFUlQoaGFzVGFn
TmFtZShpZnJhbWVUYWcpKTsKIH0KQEAgLTEzMiw2ICsxMzUsMTAgQEAgdm9pZCBIVE1MSUZyYW1l
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBz
YW5kYm94QXR0cikKICAgICAgICAgc2V0U2FuZGJveEZsYWdzKHBhcnNlU2FuZGJveEF0dHJpYnV0
ZShhdHRyKSk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBpZiAoYXR0ci0+
bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpCisgICAgICAgIG1fYWxsb3dGdWxs
U2NyZWVuID0gdHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVu
dEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIpOwogfQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJh
bWVFbGVtZW50LmgJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50IDogcHVibGljIEhUTUxGcmFtZUVsZW1lbnRC
YXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworICAgIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorICAgIGJvb2wgd2Via2l0QWxsb3dGdWxsU2NyZWVuKCkgY29uc3QgeyBy
ZXR1cm4gbV9hbGxvd0Z1bGxTY3JlZW47IH0KKyAgICB2b2lkIHNldFdlYmtpdEFsbG93RnVsbFNj
cmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dGdWxsU2NyZWVuID0gdmFsdWU7IH0KKyNlbmRpZgog
CiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwpAQCAtNTAsNiArNTUsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBp
c1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBjb25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX25h
bWU7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgYm9vbCBtX2FsbG93RnVsbFNjcmVlbjsK
KyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZy
YW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0
bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAg
ICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzY3JvbGxpbmc7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVM
TFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0
XSBET01TdHJpbmcgd2Via2l0QWxsb3dGdWxsU2NyZWVuOworI2VuZGlmCiAgICAgICAgIGF0dHJp
YnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0
XSBET01TdHJpbmcgd2lkdGg7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJl
dmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZQogewogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkp
CiAgICAgICAgIHBhdXNlKHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKLSAgICBpZiAobV9pc0Z1
bGxzY3JlZW4pCisgICAgaWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVl
bigpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CkBAIC0xODUy
LDcgKzE4NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAK
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKQogewot
ICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAg
IGV4aXRGdWxsc2NyZWVuKCk7CiAKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKQEAg
LTIwMTMsMjQgKzIwMTMsNDQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBs
YXllcgogfQogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCitib29s
IEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbigpIGNvbnN0IAoreworI2lmIEVOQUJMRShG
VUxMU0NSRUVOKQorICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+d2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdGhpcyA6IGZhbHNlOworI2Vsc2UKKyAgICByZXR1
cm4gbV9pc0Z1bGxzY3JlZW47CisjZW5kaWYKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50Ojpl
bnRlckZ1bGxzY3JlZW4oKQogeworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIEFTU0VSVCgh
aXNGdWxsc2NyZWVuKCkpOworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsK
KyNlbHNlCiAgICAgQVNTRVJUKCFtX2lzRnVsbHNjcmVlbik7CiAgICAgbV9pc0Z1bGxzY3JlZW4g
PSB0cnVlOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiAgICAgICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiB7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgQVNTRVJUKGlzRnVsbHNjcmVlbigpKTsKKyAg
ICBpZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNj
cmVlbigpOworI2Vsc2UKICAgICBBU1NFUlQobV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxs
c2NyZWVuID0gZmFsc2U7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgp
KSB7Ci0gICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0
RnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiAgICAgICAg
IHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAg
ICAgfQorI2VuZGlmCiB9CiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZv
cm1NZWRpYSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDY0
MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlP
cmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNl
Y3VyaXR5T3JpZ2luKCk7IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdDsK
ICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsK
IApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTI2LDExICsxMjcsMTYgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50
OjpzdXBwb3J0c0Z1bGxzY3JlZQogICAgIGlmICghcGFnZSkgCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAg
CiAgICAgaWYgKCFwbGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1cHBvcnRzRnVsbHNjcmVlbigpIHx8
ICFwbGF5ZXIoKS0+aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
Q2hlY2sgd2l0aCB0aGUgcGxhdGZvcm0gY2xpZW50LgotICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJu
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCh0
aGlzKTsKIH0KIAogdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6dmlkZW9XaWR0aCgpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5LDkgKzIxOSw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFsbG93c0FjY2VsZXJhdGVkQ29tcG9z
aXRpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25zdCBOb2RlKikgeyByZXR1cm4gZmFs
c2U7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoTm9kZSop
IHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7
IH0KKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoY29u
c3QgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRl
ckZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9CiAKICNpZiBFTkFCTEUoVElM
RURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVSZWN0Rm9y
VGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KSW5kZXg6IFdl
YkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDkgQEAgU2V0dGluZ3M6OlNldHRpbmdzKFBhZ2Uq
IHBhZ2UpCiAgICAgLCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFibGVkKGZhbHNlKSAvLyBXaWxsIGJl
IGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAgICAsIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRF
bmFibGVkKGZhbHNlKQogICAgICwgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQodHJ1ZSkKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTikKKyAgICAsIG1fZnVsbFNjcmVlbkVuYWJsZWQoZmFsc2UpCisjZW5k
aWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVyYWN0aXZl
Rm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNjQyMTYpCisr
KyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEwLDYgKzMxMCwx
MSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGFnaW5hdGVEdXJpbmdM
YXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA9
IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU4pCisgICAgICAgIHZvaWQgc2V0RnVsbFNjcmVlbkVuYWJsZWQoYm9vbCBmbGFn
KSB7IG1fZnVsbFNjcmVlbkVuYWJsZWQgPSBmbGFnOyB9CisgICAgICAgIGJvb2wgZnVsbFNjcmVl
bkVuYWJsZWQoKSBjb25zdCAgeyByZXR1cm4gbV9mdWxsU2NyZWVuRW5hYmxlZDsgfQorI2VuZGlm
CisKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sIGZsYWcpIHsgbV9tZW1v
cnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBtZW1vcnlJbmZvRW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0VuYWJsZWQ7IH0KIApAQCAtNDAzLDYgKzQwOCw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2h0bWw1VHJlZUJ1aWxkZXJF
bmFibGVkOiAxOyAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAgICAgICAg
Ym9vbCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA6IDE7CiAgICAgICAgIGJvb2wgbV9k
bnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAg
ICBib29sIG1fZnVsbFNjcmVlbkVuYWJsZWQgOiAxOworI2VuZGlmCiAgICAgICAgIGJvb2wgbV9t
ZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb246IDE7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzc2LDcgKzc3NiwxMCBAQCBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FCiB2b2lkIE1lZGlhQ29udHJvbEZ1
bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkK
IHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewot
ICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CisgICAgICAgIGlmICht
ZWRpYUVsZW1lbnQoKS0+aXNGdWxsc2NyZWVuKCkpCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQo
KS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbWVkaWFFbGVt
ZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRs
ZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihl
dmVudCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmgJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksNyBAQCBlbnVt
IFBzZXVkb0lkIHsKICAgICBNRVRFUl9IT1JJWk9OVEFMX0JBUiwgTUVURVJfSE9SSVpPTlRBTF9P
UFRJTVVNLCBNRVRFUl9IT1JJWk9OVEFMX1NVQk9QVElNQUwsIE1FVEVSX0hPUklaT05UQUxfRVZF
Tl9MRVNTX0dPT0QsCiAgICAgTUVURVJfVkVSVElDQUxfQkFSLCBNRVRFUl9WRVJUSUNBTF9PUFRJ
TVVNLCBNRVRFUl9WRVJUSUNBTF9TVUJPUFRJTUFMLCBNRVRFUl9WRVJUSUNBTF9FVkVOX0xFU1Nf
R09PRCwgCiAgICAgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRCwKKyAgICBGVUxMX1NDUkVF
TiwgRlVMTF9TQ1JFRU5fRE9DLCBGVUxMX1NDUkVFTl9ST09UX1dJVEhfVEFSR0VULAogICAgIEZJ
UlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCiAgICAgRklSU1RfSU5URVJOQUxfUFNF
VURPSUQgPSBGSUxFX1VQTE9BRF9CVVRUT04sCiAgICAgUFVCTElDX1BTRVVET0lEX01BU0sgPSAo
KDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0gMSkgJiB+KCgxIDw8IEZJUlNUX1BVQkxJ
Q19QU0VVRE9JRCkgLSAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62954</attachid>
            <date>2010-07-29 09:05:57 -0700</date>
            <delta_ts>2010-07-29 11:02:35 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>58292</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjE2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU4gbW9kZSBmb3IgdGhlIE1hYyAoZXhj
ZXB0IGlQaG9uZSkuCisKIDIwMTAtMDctMjcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCkluZGV4OiBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAkocmV2aXNpb24gNjQyMTYpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZv
cm0uaAkod29ya2luZyBjb3B5KQpAQCAtNTk3LDYgKzU5Nyw3IEBACiAjZW5kaWYKICNkZWZpbmUg
SEFWRV9SRUFETElORSAxCiAjZGVmaW5lIEhBVkVfUlVOTE9PUF9USU1FUiAxCisjZGVmaW5lIEVO
QUJMRV9GVUxMU0NSRUVOIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMpICYmICFQTEFURk9STShJ
UEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJD
b3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAorMjAxMC0wNy0y
NyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlwdCBBUEkgdG8gYWxsb3cg
YSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9wcm9ibGVtLzY4Njc3OTUK
KyAgICAgICAgCisgICAgICAgIE1vemlsbGEgaGFzIHByb3Bvc2VkIGEgbmV3IHNldCBvZiBKYXZh
U2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55IGVsZW1lbnQgaW4KKyAgICAgICAgYSBkb2N1bWVu
dCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBjdXJyZW50IHJldmlzaW9uIG9mIHRoZWlyIHByb3Bv
c2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQgaGVyZToKKyAgICAgICAgPGh0dHBzOi8vd2lraS5t
b3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9R2Vja286RnVsbFNjcmVlbkFQSSZvbGRpZD0yMzU2
MDE+CisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zZWQgc3BlY2lmaWNhdGlvbiBpbmNsdWRl
cyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgIC0g
VGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVz
dEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMoKQorICAgICAgICAgICAgKyB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKQorICAgICAgICAtIFRo
cmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3VtZW50OgorICAgICAgICAgICAgKyByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuCisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRoS2V5cworICAgICAgICAgICAgKyAob3B0aW9uYWwp
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAorICAg
ICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6CisgICAgICAgIC0gVHdvIG5ldyBtZXRob2RzIG9u
IEVsZW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAg
ICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAgICAKKyAgICAg
ICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAgICAgIC0gT25lIG5ldyBjb250ZW50IGF0dHJpYnV0
ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxsU2NyZWVuCisgICAgICAgICAgICAKKyAgICAgICAg
RXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcgZXZlbnQ6CisgICAgICAgICAgICArIGZ1bGxTY3Jl
ZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAgIENTUyBQc2V1ZG8tY2xhc3NlczoKKyAgICAgICAg
LSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6CisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbgor
ICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tZG9jCisgICAgICAgICAgICArIDpmdWxsLXNjcmVl
bi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAgIAorICAgICAgICBGb3IgV2ViS2l0J3MgaW5pdGlh
bCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBhYm92ZSBuZXcgQVBJcyB3aWxsIGJlIHByZWZpeGVk
IHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9yICItd2Via2l0IiB3aGVyZSBhcHByb3ByaWF0ZS4K
KyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0czoKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNj
cmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAgICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAgICAgICAgUHJvamVjdCBmaWxlIGNoYW5nZXM6Cisg
ICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6IEFkZGVkIGFu
IEVOQUJMRV9GVUxMU0NSRUVOIGVudHJ5LgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6
IEFkZGVkIHJ1bGVzIGZvciBmdWxsc2NyZWVuLmNzcyBhbmQgV2ViQ29yZS5GdWxsU2NyZWVuLmV4
cC4KKyAgICAgICAgKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwOiBBZGRlZCBleHBvcnQgc3ltYm9s
cyBmb3IgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IHNvdXJjZSBmaWxlcyBhZGRlZCB0byB0aGUg
cHJvamVjdC4KKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
aWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRG9jdW1lbnQncyBqYXZh
c2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBu
ZXcgZnVsbC1zY3JlZW4gQVBJIHRvIHRoZSBFbGVtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2Uu
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6IEFkZGVkIHRoZSBhbGxvd0Z1
bGxTY3JlZW4gYXR0cmlidXRlLgorCisgICAgICAgIFNvdXJjZSBjaGFuZ2VzOgorICAgICAgICAq
IGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBFeHBvc2VkIERvY3VtZW50IGFu
ZCBFbGVtZW50IGZ1bGxzY3JlZW4gZnVuY3Rpb25zIGluIHRoZSBET00gY2xhc3Nlcy4KKyAgICAg
ICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOiBBZGRlZCBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8tY2xh
c3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1ZG9JZCk6IAorICAgICAg
ICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5o
OiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOiBBZGRlZCBuZXcgZnVsbC1zY3Jl
ZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUgZW51bS4KKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6bG9hZEZ1bGxEZWZhdWx0
U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRvIHRoZSBkZWZhdWx0U3R5
bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRzLgorICAgICAgICAoV2ViQ29yZTo6
bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4uY3NzIHNoZWV0IGlu
dG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENoZWNrIGZvciB0aGUg
bmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6Y3JlYXRlRXZlbnQpOiBTdXBwb3J0IGNyZWF0aW5nIGEgIldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2UiIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFkZExp
c3RlbmVyVHlwZUlmTmVlZGVkKTogU3VwcG9ydCBsaXN0ZW5pbmcgZm9yIGEgIndlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCIKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5XaXRoS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMpOiBQYXNzZXMgcmVxdWVzdCB0byB0
aGUgY2hyb21lIGNsaWVudCB0byBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4pOiBQYXNzZXMgcmVxdWVzdCB0
byB0aGUgY2hyb21lIGNsaWVudCB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBT
ZXRzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVt
ZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQp
OiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDbGVhcnMgdGhlIEZ1bGxTY3JlZW4gcHNldWRv
LWNsYXNzZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAg
ICAgICAgKiBkb20vRG9jdW1lbnQuaDogQWRkZWQgY29uc3QgYWNjZXNzb3JzIGZvciBuZXcgZnVs
bC1zY3JlZW4gaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuKTogQWNj
ZXNzb3IgZm9yIG1faXNGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCk6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNj
cmVuIGFuZCBtX2FyZUtleXNFbmFibGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Ondl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCk6IEFjY2Vzc29yIGZvciBtX2Z1bGxTY3JlZW5F
bGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLiAKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOiBDYWxscyBEb2N1bWVudDo6
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMuCisgICAgICAgICogZG9t
L0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTogT3ZlcnJpZGVkIGJ5IFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmluaXRX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDogQWRkZWQuCisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUpOiBQYXJzZSB0aGUgbmV3ICJvbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UiIGF0dHJpYnV0ZSBhbmQgcmVnaXN0ZXIgYSBsaXN0ZW5lci4KKyAgICAgICAgKiBodG1sL0hU
TUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZyYW1lRWxlbWVudDo6
d2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dGdWxsU2NyZWVuLgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNldFdlYmtpdEFsbG93RnVsbFNj
cmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAgICAgICAgKiBodG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwOiBSZS1pbXBsZW1lbnRlZCB0aGUgSFRNTE1lZGlhRWxlbWVudCBm
dWxsIHNjcmVlbiBzdXBwb3J0IGluIHRlcm1zIG9mIHRoZSBuZXcgKGdlbmVyaWMpIGZ1bGwgc2Ny
ZWVuIHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpIVE1MTWVk
aWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnBhcnNlTWFw
cGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92
ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6ZG9j
dW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6
OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojpl
eGl0RnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxW
aWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MVmlk
ZW9FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCk6IFBhc3Mg
dGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNo
cm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVn
YXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvckVs
ZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3Vn
aCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9sIHJ1bnRpbWUgc3VwcG9y
dCBmb3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQorICAgICAgICAoV2ViQ29y
ZTo6U2V0dGluZ3M6OnNldEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlNl
dHRpbmdzOjpmdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgICogcmVuZGVyaW5nL01lZGlhQ29u
dHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbEZ1bGxzY3Jl
ZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVGhlIGZ1bGwgc2NyZWVuIGJ1
dHRvbiBub3cgdG9nZ2xlcyBmdWxsIHNjcmVlbiBtb2RlIChwcmV2aW91c2x5LCBpdCBvbmx5IGVu
dGVyZWQpLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5o
OgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAxMC0wNy0yOCAgVG9ueSBHZW50aWxjb3JlICA8
dG9ueWdAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDQ5LDYgKzQ0OSw3IEBAIERPTV9DTEFT
U0VTID0gXAogICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUgXAogICAgIFdlYktpdENTU01hdHJp
eCBcCiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAgIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudCBcCiAgICAgV2ViS2l0UG9pbnQgXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVu
dCBcCiAgICAgV2ViU29ja2V0IFwKQEAgLTY2Miw2ICs2NjMsMTAgQEAgaWZlcSAoJChPUyksTUFD
T1MpCiBlbmRpZgogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVO
LCQoRkVBVFVSRV9ERUZJTkVTKSksIEVOQUJMRV9GVUxMU0NSRUVOKQorICAgIFVTRVJfQUdFTlRf
U1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpICQoV2ViQ29yZSkvY3Nz
L2Z1bGxzY3JlZW4uY3NzCitlbmRpZgorCiBVc2VyQWdlbnRTdHlsZVNoZWV0cy5oIDogY3NzL21h
a2UtY3NzLWZpbGUtYXJyYXlzLnBsICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAJcGVybCAk
PCAkQCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMpCiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhw
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYyLDMgKzE0NjIsMTAgQEAgX19aTjdXZWJDb3JlMTZI
VE1MTWVkaWFFbGVtZW50MTlzZXRNZWRpYQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczhhdWRpb1Rh
Z0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4dmlkZW9UYWdFCiAjZW5kaWYKKworI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorX19aTjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlOERvY3VtZW50MzR3ZWJr
aXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKK19fWk43V2ViQ29y
ZThEb2N1bWVudDM0d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1l
bnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JF
bGVtZW50RVBOU183RWxlbWVudEUKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNv
cmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkK
QEAgLTU2LDYgKzU2LDcgQEAgRU5BQkxFX0ZJTFRFUlMgPSBFTkFCTEVfRklMVEVSUzsKIEVOQUJM
RV9GSUxFX1JFQURFUiA9IEVOQUJMRV9GSUxFX1JFQURFUjsKIEVOQUJMRV9GSUxFX1dSSVRFUiA9
IDsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOID0gRU5BQkxFX0ZV
TExTQ1JFRU47CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiBFTkFC
TEVfSUNPTkRBVEFCQVNFID0gRU5BQkxFX0lDT05EQVRBQkFTRTsKIEVOQUJMRV9JTUFHRV9SRVNJ
WkVSID0gOwpAQCAtODYsNCArODcsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFU
SCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVf
REVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChF
TkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVM
X01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9E
QVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9E
RVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RP
TV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFC
TEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RF
TSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVf
SU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRf
U1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQo
RU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElO
RV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkp
ICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcp
ICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVf
U1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19G
T1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxF
X1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxF
X1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xU
KTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNE
X0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVO
QUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9O
KSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNU
KSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQp
ICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklM
VEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJM
RV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTikgJChFTkFCTEVfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVf
SU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NS
SVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFC
TEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVO
QUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5B
QkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04p
ICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAk
KEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVf
U1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9X
RUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1M
TVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00OTg3
LDYgKzQ5ODcsOCBAQAogCQlDNUVCREQ4NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAq
LzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RM
ZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZE
NzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9
OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0
QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9
OworCQlDREE3OUE3MzExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3
OUE3MTExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi87
IH07CisJCUNEQTc5QTc0MTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
Q0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5j
cHAgKi87IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVy
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0Uw
MkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxNzJFMDExMTM2RThD
RTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTRDMDBFNDEw
RjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUg
LyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDY2MSw2ICsxMDY2MywxMCBA
QAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1
MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0
TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kaWZ5U2Vs
ZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0RTBB
RkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7
IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RB
NzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4
RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpv
b21Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTY2MTUsNiArMTY2MjEsNyBAQAogCQkJCUJDOUFERDIyMENDNDAzMjYwMDA5OEM0QyAvKiBX
ZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oICovLAogCQkJCTMxNjExRTU0MEUxQzRENEEwMEY2QTU3
OSAvKiBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgKi8sCiAJCQkJNENERTU0RUMwRTU1Nzk3
ODAwODlFMjZDIC8qIHdtbC5jc3MgKi8sCisJCQkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8q
IGZ1bGxzY3JlZW4uY3NzICovLAogCQkJKTsKIAkJCXBhdGggPSBjc3M7CiAJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOwpAQCAtMTcxNTcsNiArMTcxNjQsOSBAQAogCQkJCTMxQzBGRjFCMEU0Q0VC
NkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5jcHAgKi8sCiAJCQkJMzFDMEZGMUMw
RTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZG
MUQwRTRDRUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmlkbCAqLywKKwkJCQlD
REE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmgg
Ki8sCisJCQkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5jcHAgKi8sCisJCQkJQ0RBNzlBNzYxMUU3QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwgKi8sCiAJCQkJMzFDMEZGMUUwRTRDRUI2RTAwN0Q2RkU1
IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5jcHAgKi8sCiAJCQkJMzFDMEZGMUYwRTRDRUI2RTAw
N0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjIwMEU0Q0VC
NkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaWRsICovLApAQCAtMTk4NjgsNiAr
MTk4NzgsNyBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyog
Wm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA4NEQw
RTNEMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTA4NEQwRTNGMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXNDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJMDg1QjA1QzMxMUZBRTE2QzAwNEQ2NUY2IC8qIFNWR1Jlc291cmNlc0N5Y2xl
U29sdmVyLmggaW4gSGVhZGVycyAqLywKQEAgLTIyMjY2LDYgKzIyMjc3LDcgQEAKIAkJCQk5M0Yx
OUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVk
aXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyog
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NEQw
RTNDMTFGNTgxNjEwMDA4MUUxQSAvKiBTVkdSZXNvdXJjZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJMDg0RDBFM0UxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNlc0NhY2hlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTA4NkE0MDA2MTFGNkQ2QjcwMDJDRUM1MyAvKiBSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lci5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTYsNiArMTU2LDExIEBAIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnQgOiBET01Ob2RlIFdFQktJVF8K
IC0gKERPTU5vZGVMaXN0ICopZ2V0RWxlbWVudHNCeUNsYXNzTmFtZTooTlNTdHJpbmcgKil0YWdu
YW1lIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01FbGVtZW50ICopcXVl
cnlTZWxlY3RvcjooTlNTdHJpbmcgKilzZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJT
SU9OXzRfMDsKIC0gKERPTU5vZGVMaXN0ICopcXVlcnlTZWxlY3RvckFsbDooTlNTdHJpbmcgKilz
ZWxlY3RvcnMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVO
QUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorLSAodm9pZCl3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lP
Tl80XzA7CistICh2b2lkKXdlYmtpdENhbmNlbEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJ
VF9WRVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJh
Z21lbnQgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtMjI0LDYgKzIyOSwxMCBAQCBA
aW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2RlIFdFQktJVF9WCiAtIChET01Ob2RlTGlzdCAq
KWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopbmFtZSBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5n
ICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2Rl
TGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9J
Tl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYg
RU5BQkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxB
QkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW5XaXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5k
CiAKIEBpbnRlcmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAg
LTU2OSw2ICs1NzgsOSBAQCBAaW50ZXJmYWNlIERPTUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRN
CiBAcHJvcGVydHkoY29weSkgTlNTdHJpbmcgKndpZHRoOwogQHByb3BlcnR5KHJlYWRvbmx5LCBy
ZXRhaW4pIERPTURvY3VtZW50ICpjb250ZW50RG9jdW1lbnQ7CiBAcHJvcGVydHkocmVhZG9ubHks
IHJldGFpbikgRE9NQWJzdHJhY3RWaWV3ICpjb250ZW50V2luZG93IEFWQUlMQUJMRV9JTl9XRUJL
SVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxF
X0ZVTExTQ1JFRU4KK0Bwcm9wZXJ0eShhc3NpZ24pIEJPT0wgd2Via2l0QWxsb3dGdWxsU2NyZWVu
OworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NSFRNTEltYWdlRWxlbWVudCA6IERPTUhU
TUxFbGVtZW50IFdFQktJVF9WRVJTSU9OXzFfMwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkocmV2aXNp
b24gNjQyMTYpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI0NCw2ICsyNDQsMTUgQEAgUHNldWRvSWQgQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKFBzZXVk
b1R5cAogICAgICAgICByZXR1cm4gTk9QU0VVRE87CiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAgICAgICAgcmV0dXJuIEZVTExf
U0NSRUVOOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgcmV0dXJuIEZV
TExfU0NSRUVOX0RPQzsKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoK
KyAgICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQ7CisjZW5kaWYKKyAg
ICAgICAgICAgIAogICAgIGNhc2UgUHNldWRvSW5wdXRMaXN0QnV0dG9uOgogI2lmIEVOQUJMRShE
QVRBTElTVCkKICAgICAgICAgcmV0dXJuIElOUFVUX0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYgKzQz
MSwxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsKICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGVmdFBhZ2UsICgibGVmdCIpKTsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmlnaHRQYWdlLCAoInJpZ2h0
IikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRv
bWljU3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4iKSk7CisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5Eb2MsICgiLXdlYmtpdC1m
dWxsLXNjcmVlbi1kb2MiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcs
IGZ1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLXJvb3Qtd2l0
aC10YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0lt
cGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGUgPSAwOwogICAg
IGlmICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAtNTMzLDYgKzU0NywxMSBAQCBzdGF0aWMgSGFz
aE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUt
PnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKICAg
ICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxlZnRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6
OlBzZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHJpZ2h0UGFn
ZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UpOworI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbi5pbXBsKCks
IENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlw
ZS0+c2V0KGZ1bGxTY3JlZW5Eb2MuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVl
bkRvYyk7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuUm9vdFdpdGhU
YXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0
KTsKKyNlbmRpZgogICAgIH0KICAgICByZXR1cm4gbmFtZVRvUHNldWRvVHlwZTsKIH0KQEAgLTY2
Miw2ICs2ODEsMTEgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjbwog
ICAgIGNhc2UgUHNldWRvU2luZ2xlQnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm9CdXR0b246CiAg
ICAgY2FzZSBQc2V1ZG9Ob3RQYXJzZWQ6CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgY2Fz
ZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICBj
YXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyNlbmRpZgogICAgICAgICBicmVh
azsKICAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKICAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgpJ
bmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICAgICAgUHNldWRvTGVmdFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9SaWdo
dFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9GaXJzdFBhZ2UsCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU4pCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuLAorICAgICAgICAgICAgUHNldWRvRnVs
bFNjcmVlbkRvYywKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwK
KyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gTWFyZ2luQm94VHlwZSB7CkluZGV4
OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQ4LDYgKzU0OCwxNCBA
QCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAgICAgU3RyaW5nIHF1aXJrc1J1
bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihxdWlya3NVc2Vy
QWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhUXVp
cmtzU3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIHF1aXJrc1NoZWV0ID0gcGFyc2VV
QVNoZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOworICAgIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVu
UnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxs
c2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgp
LT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVl
blNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAg
ZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNj
cmVlbkV2YWwoKSk7CisjZW5kaWYKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRT
dHlsZSgpCkBAIC01NjMsNiArNTcxLDEzIEBAIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVEZWZhdWx0
U3R5bGUoKQogICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2ltcGxlRGVmYXVs
dFN0eWxlU2hlZXQsIHNjcmVlbkV2YWwoKSk7CiAgICAgCiAgICAgLy8gTm8gbmVlZCB0byBpbml0
aWFsaXplIHF1aXJrcyBzaGVldCB5ZXQgYXMgdGhlcmUgYXJlIG5vIHF1aXJrIHJ1bGVzIGZvciBl
bGVtZW50cyBhbGxvd2VkIGluIHNpbXBsZSBkZWZhdWx0IHN0eWxlLgorCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisgICAgLy8gRnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3Jl
ZW5SdWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1
bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1l
KCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2Ny
ZWVuU2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNl
bmRpZgogfQogICAgIAogc3RhdGljIHZvaWQgbG9hZFZpZXdTb3VyY2VTdHlsZSgpCkBAIC0yNjE5
LDYgKzI2MzQsMzcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6Ogog
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgIH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8gV2hpbGUg
YSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVudCdz
IGN1cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVs
ZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBs
aWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFt
ZT4sIDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAKKyAg
ICAgICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4g
c3RhdGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAg
ICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUt
PmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAg
ICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUs
IHRoZSAnZnVsbC1zY3JlZW4tZG9jJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIAorICAgICAgICAgICAg
ICAgIC8vIHRvIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAg
ICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAgICAgICAgICAgICAg
ICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUg
ZG9jdW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gZWxlbWVudCAKKyAgICAgICAgICAgICAgICAv
LyBpcyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0
aC10YXJnZXQnIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhl
IHJvb3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+
ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDog
V2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVs
bHNjcmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorOi13ZWJraXQtZnVsbC1zY3JlZW4geworICBw
b3NpdGlvbjpmaXhlZDsKKyAgdG9wOjA7CisgIGxlZnQ6MDsKKyAgcmlnaHQ6MDsKKyAgYm90dG9t
OjA7Cit9Cis6LXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0IHsKKyAgb3ZlcmZs
b3c6aGlkZGVuOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDog
MTAwJTsKKyAgICBoZWlnaHQ6IDEwMCUKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK2ltZzot
d2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7
CisgICAgaW1hZ2UtZml0OiBmaWxsOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRp
YTotd2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAg
ICBib3R0b206IDBweDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTk5LDYgKzE5OSwxMCBAQAogI2luY2x1ZGUgIkhUTUxOb1NjcmlwdEVsZW1l
bnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5jbHVkZSAiV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsK
IHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2luZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTQwNCw2
ICs0MDgsMTEgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSwogI2Vu
ZGlmCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUo
dGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgLCBtX2lzRnVsbFNjcmVlbigwKQorICAgICwgbV9hcmVLZXlzRW5hYmxlZCgw
KQorICAgICwgbV9mdWxsU2NyZWVuRWxlbWVudCgwKQorI2VuZGlmCiB7CiAgICAgbV9kb2N1bWVu
dCA9IHRoaXM7CiAKQEAgLTMyNzIsNiArMzI4MSwxMCBAQCBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1
bWVudDo6Y3JlYXRlRXZlbnQoCiAjZW5kaWYKICAgICAgICAgZXZlbnQgPSBUb3VjaEV2ZW50Ojpj
cmVhdGUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGVsc2UgaWYgKGV2
ZW50VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAgICAgIGV2ZW50ID0gV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShE
RVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJEZXZpY2VPcmll
bnRhdGlvbkV2ZW50IikKICAgICAgICAgZXZlbnQgPSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50Ojpj
cmVhdGUoKTsKQEAgLTMzMjMsNiArMzMzNiwxMCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5l
clR5cGVJZk5lZWRlZChjCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5l
ZWRUb3VjaEV2ZW50cyh0cnVlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JFRU5fTElTVEVO
RVIpOworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVy
cmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQpAQCAtNTAzNiw1ICs1MDUzLDg0IEBA
IEluc3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3IKICAgICByZXR1cm4gcGFn
ZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwogfQogI2VuZGlmCisgICAg
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbigpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtl
eXMoZG9jdW1lbnRFbGVtZW50KCksIGZhbHNlKTsKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRFbGVtZW50KCksIHRydWUpOworfQorICAgIAor
dm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMo
RWxlbWVudCogZWxlbWVudCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8
fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1l
bnQoKTsKKyAgICAKKyAgICBpZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRz
RnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OworICAgICAgICBtX2FyZUtleXNFbmFibGVk
ID0ga2V5c0VuYWJsZWQ7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxG
dWxsU2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5m
dWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhZ2Uo
KS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVs
bFNjcmVlbkVsZW1lbnQpKQorICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhp
dEZ1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQpOworfQorICAgIAordm9p
ZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxs
U2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVt
ZW50ID0gZWxlbWVudCA/IGVsZW1lbnQgOiBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICBtX2lzRnVs
bFNjcmVlbiA9IHRydWU7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJl
Y2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChkb2N1bWVudEVsZW1lbnQoKSAhPSBtX2Z1
bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHls
ZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3Bh
dGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgdXBk
YXRlU3R5bGVJZk5lZWRlZCgpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50
ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6
d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9p
ZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQor
eworICAgIGlmICghcGFnZSgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKCFwYWdl
KCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAg
ICAgICAgCisgICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVk
ID0gZmFsc2U7CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpIHsKKyAgICAgICAgbV9mdWxs
U2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAg
ICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsK
KyAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgZG9jdW1lbnRFbGVtZW50
KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICB1cGRhdGVTdHls
ZUlmTmVlZGVkKCk7Cit9CisgICAgCisjZW5kaWYKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3NCw2ICsyNzQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UpOworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUoKSBjb25zdCB7IHJldHVy
biBtX2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtNjc1LDcgKzY3OCw4IEBAIHB1YmxpYzoKICAgICAg
ICAgVFJBTlNJVElPTkVORF9MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg4MDAsCiAgICAgICAg
IEJFRk9SRUxPQURfTElTVEVORVIgICAgICAgICAgICAgICAgICA9IDB4MTAwMCwKICAgICAgICAg
VE9VQ0hfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAwLAotICAgICAgICBC
RUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAKKyAgICAgICAgQkVG
T1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAwLAorICAgICAgICBGVUxM
U0NSRUVOX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDgwMDAsCiAgICAgfTsKIAogICAg
IGJvb2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5cGUpIGNvbnN0IHsg
cmV0dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9CkBAIC0xMDAxLDYgKzEw
MDUsMjEgQEAgcHVibGljOgogICAgIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogdGFrZUFueU1lZGlh
Q2FuU3RhcnRMaXN0ZW5lcigpOwogCiAgICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgaWRBdHRyaWJ1
dGVOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9pZEF0dHJpYnV0ZU5hbWU7IH0KKyAgICAKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTikKKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbigpIGNvbnN0IHsg
cmV0dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRo
S2V5c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbiAmJiBtX2FyZUtleXNF
bmFibGVkOyB9CisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkg
Y29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudDsgfQorICAgIHZvaWQgd2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtl
eXMoKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlz
KEVsZW1lbnQqLCBib29sIGtleXNFbmFibGVkKTsKKyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxT
Y3JlZW4oKTsKKyAgICAKKyAgICB2b2lkIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1l
bnQoRWxlbWVudCopOworICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVu
dChFbGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQo
RWxlbWVudCopOworI2VuZGlmCiAKICAgICBib29sIHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3dyaXRlRGlzYWJsZWQ7IH0KICAgICB2b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBm
bGFnKSB7IG1fd3JpdGVEaXNhYmxlZCA9IGZsYWc7IH0KQEAgLTEyODYsNiArMTMwNSwxMiBAQCBw
cml2YXRlOgogICAgIEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0
YXJ0TGlzdGVuZXJzOwogCiAgICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAg
ICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBib29sIG1faXNGdWxsU2NyZWVuOworICAg
IGJvb2wgbV9hcmVLZXlzRW5hYmxlZDsKKyAgICBFbGVtZW50KiBtX2Z1bGxTY3JlZW5FbGVtZW50
OworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJZChB
dG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDY0MjE2
KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDAsNiAr
MjQwLDE1IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0RvbnRFbnVtXSB2b2lkIGluaXRpYWxp
emVXTUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVF
TikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuOwor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW5XaXRo
S2V5c0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKKyAgICAgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2Ny
ZWVuKCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAh
TEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmli
dXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTU4Miw1ICsxNTgyLDE3IEBAIGJvb2wgRWxlbWVudDo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcigKICAgICByZXR1cm4gTm9kZTo6Y2hpbGRTaG91bGRDcmVh
dGVSZW5kZXJlcihjaGlsZCk7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKQoreworICAgIGRvY3Vt
ZW50KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIGZh
bHNlKTsKK30KKwordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
KCkKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRX
aXRoS2V5cyh0aGlzLCB0cnVlKTsKK30KKyNlbmRpZiAgICAKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTk0LDYgKzk0LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hh
bmdlKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+
IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGlu
Z1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCkBAIC0yOTIsNiArMjk1
LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNo
b3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsgCiAjZW5kaWYKKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAg
dm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKIAogcHJvdGVj
dGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24g
NjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMz
LDYgKzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01TdHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NS
RUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygp
OworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdV
QUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMK
ICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpAQCAt
MjA1LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51
bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5l
ciBvbnRvdWNobW92ZTsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1U
T1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwog
ICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFi
bGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5dIEV2ZW50TGlzdGVuZXIgb253
ZWJraXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlmCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9k
b20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNp
b24gNjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
Miw2ICsxNjIsMTMgQEAgYm9vbCBFdmVudDo6aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjbwog
ICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorYm9vbCBFdmVu
dDo6aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBm
YWxzZTsKK30KKyNlbmRpZgorCiBib29sIEV2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZl
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2NDIxNikK
KysrIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1h
dGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRp
b25FdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQo
KSBjb25zdDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgdmlydHVhbCBib29sIGlz
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUo
U1ZHKQogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRp
ZgpJbmRleDogV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSw2ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgXAogICAgIG1hY3JvKGxvYWRlbmQpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkKKyAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9F
QUNICiAKICAgICBjbGFzcyBFdmVudE5hbWVzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6
IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTikKKworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorLy8gRnJvbSB0aGUgTW96aWxsYSBGdWxsU2NyZWVuIHByb3Bvc2FsOiAiVGhlIFtm
dWxsU2NyZWVuQ2hhbmdlRXZlbnRdIGJ1YmJsZXMgCisvLyBhbmQgaXMgbm90IGNhbmNlbGxhYmxl
LiIKKworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQoKQorOiBFdmVudChldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50
LCB0cnVlLCBmYWxzZSkKK3sKK30KKworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+V2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKK3sKK30KKwordm9pZCBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQ6OmluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9v
bCBjYW5jZWxhYmxlQXJnKQoreworICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJn
KTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnRfaAorI2RlZmluZSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU4pCisKKyNpbmNsdWRlICJFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisgICAgCitjbGFzcyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgOiBwdWJsaWMgRXZlbnQg
eworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTsKKyAgICB9ICAgICAgICAKKyAgICB2aXJ0dWFsIH5XZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICAKKyAgICB2b2lkIGluaXRXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZyk7Cisg
ICAgCisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQoKTsKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRv
bWljU3RyaW5nJiB0eXBlKTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTikKKworI2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9k
dWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JL
RVJTJkZVTExTQ1JFRU4sCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQgOiBFdmVudCB7CisKKyAgICAgICAgdm9pZCBpbml0RXJyb3JFdmVudChpbiBE
T01TdHJpbmcgdHlwZUFyZywgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIGluIGJvb2xlYW4gY2Fu
Y2VsYWJsZUFyZywgaW4gRE9NU3RyaW5nIG1lc3NhZ2VBcmcsIGluIERPTVN0cmluZyBmaWxlbmFt
ZUFyZywgaW4gdW5zaWduZWQgbG9uZyBsaW5lbm9BcmcpOworICAgIH07CisKK30KSW5kZXg6IFdl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcg
QEAgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9ud2Via2l0YW5pbWF0aW9uZW5kCiBvbndl
YmtpdGJlZ2luZnVsbHNjcmVlbgogb253ZWJraXRlbmRmdWxsc2NyZWVuCitvbndlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UKIG9ud2Via2l0dHJhbnNpdGlvbmVuZAogb3B0aW11bQogcGF0dGVybgpAQCAt
MjgyLDUgKzI4Myw2IEBAIHZpZXdzb3VyY2UKIHZsaW5rCiB2c3BhY2UKIHdlYmtpdGRpcmVjdG9y
eQord2Via2l0YWxsb3dmdWxsc2NyZWVuCiB3aWR0aAogd3JhcApJbmRleDogV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisjaW5j
bHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjYyLDYgKzI2Niwx
MCBAQCB2b2lkIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBCiAgICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0
ci0+bmFtZSgpID09IG9udG91Y2hjYW5jZWxBdHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAg
IH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIp
IHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0
ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKKyNlbmRpZgogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVt
ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCShyZXZp
c2lvbiA2NDIxNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTY0LDYgKzY0LDExIEBAIG1vZHVsZSBodG1sIHsKICNpZiBkZWZpbmVkKExBTkdVQUdF
X09CSkVDVElWRV9DKSAmJiBMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgRE9NU3RyaW5nIHRpdGxlRGlzcGxheVN0cmluZzsKICNlbmRpZgorCisjaWYgZGVm
aW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbmRpZgogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hU
TUxJRnJhbWVFbGVtZW50LmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw5IEBAIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MSUZyYW1lRWxlbWVudDo6SFRNTElG
cmFtZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50KQogICAgIDogSFRNTEZyYW1lRWxlbWVudEJhc2UodGFnTmFtZSwgZG9jdW1lbnQpCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU4pCisgICAgLCBtX2FsbG93RnVsbFNjcmVlbihmYWxzZSkKKyNlbmRp
ZgogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOwogfQpAQCAtMTMyLDYgKzEz
NSwxMCBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94Rmxh
Z3MocGFyc2VTYW5kYm94QXR0cmlidXRlKGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0
cikKKyAgICAgICAgbV9hbGxvd0Z1bGxTY3JlZW4gPSB0cnVlOworI2VuZGlmCiAgICAgZWxzZQog
ICAgICAgICBIVE1MRnJhbWVFbGVtZW50QmFzZTo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7
CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkocmV2aXNpb24gNjQyMTYpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiAr
MzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTElGcmFtZUVsZW1lbnQgOiBw
dWJsaWMgSFRNTEZyYW1lRWxlbWVudEJhc2UgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEhUTUxJRnJhbWVFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3Vt
ZW50Kik7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgYm9vbCB3ZWJraXRBbGxv
d0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93RnVsbFNjcmVlbjsgfQorICAgIHZv
aWQgc2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKGJvb2wgdmFsdWUpIHsgbV9hbGxvd0Z1bGxTY3Jl
ZW4gPSB2YWx1ZTsgfQorI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgSFRNTElGcmFtZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC01MCw2ICs1NSw5IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCBib29sIGlzVVJMQXR0cmlidXRlKEF0dHJpYnV0ZSopIGNvbnN0Owog
CiAgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBi
b29sIG1fYWxsb3dGdWxsU2NyZWVuOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0MjE2KQor
KysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNh
bmRib3g7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNjcm9sbGluZzsK
KyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOKSAmJiBFTkFCTEVfRlVMTFNDUkVFTgorICAg
ICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gd2Via2l0QWxsb3dGdWxsU2NyZWVuOwor
I2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNyYzsKICAgICAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAKSW5kZXg6IFdlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZQogewogICAgIGlmIChtX25ldHdvcmtT
dGF0ZSA+IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHBhdXNlKHByb2Nlc3NpbmdVc2VyR2VzdHVy
ZSgpKTsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgaWYgKGlzRnVsbHNjcmVlbigpKQog
ICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURv
Y3VtZW50KCk7CiB9CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6
OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxs
QmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICBpZiAoaXNG
dWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAKICAgICBtX2luQWN0aXZl
RG9jdW1lbnQgPSBmYWxzZTsKQEAgLTIwMTMsMjQgKzIwMTMsNDQgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcgogfQogI2VuZGlmIC8vIEVOQUJMRShQTFVHSU5fUFJP
WFlfRk9SX1ZJREVPKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbigpIGNv
bnN0IAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIHJldHVybiBkb2N1bWVudCgpID8g
ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgPT0gdGhpcyA6IGZh
bHNlOworI2Vsc2UKKyAgICByZXR1cm4gbV9pc0Z1bGxzY3JlZW47CisjZW5kaWYKK30KKwogdm9p
ZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4oKQogeworI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIEFTU0VSVCghaXNGdWxsc2NyZWVuKCkpOworICAgIHdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMoKTsKKyNlbHNlCiAgICAgQVNTRVJUKCFtX2lzRnVsbHNjcmVlbik7
CiAgICAgbV9pc0Z1bGxzY3JlZW4gPSB0cnVlOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3Vt
ZW50KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5j
bGllbnQoKS0+ZW50ZXJGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQo
KS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQo
dGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVs
bHNjcmVlbkV2ZW50KTsKICAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50
OjpleGl0RnVsbHNjcmVlbigpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgQVNTRVJU
KGlzRnVsbHNjcmVlbigpKTsKKyAgICBpZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQo
KS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworI2Vsc2UKICAgICBBU1NFUlQobV9pc0Z1bGxz
Y3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7CiAgICAgaWYgKGRvY3VtZW50KCkg
JiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hy
b21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvckVs
ZW1lbnQodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVu
ZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIFBsYXRmb3JtTWVkaWEgSFRN
TE1lZGlhRWxlbWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmgJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJv
b2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwg
bV9wbGF5ZXItPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7IH0KICAgICAKLSAgICBib29sIGlz
RnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CisgICAgYm9vbCBp
c0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIHZv
aWQgZXhpdEZ1bGxzY3JlZW4oKTsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAko
cmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVk
ZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUgIlNl
dHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTI2LDExICsxMjcsMTYgQEAg
Ym9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZQogICAgIGlmICghcGFnZSkg
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGlm
ICghcGFnZS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworI2VuZGlmCisgICAgCiAgICAgaWYgKCFwbGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1
cHBvcnRzRnVsbHNjcmVlbigpIHx8ICFwbGF5ZXIoKS0+aGFzVmlkZW8oKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgLy8gQ2hlY2sgd2l0aCB0aGUgcGxhdGZvcm0gY2xpZW50LgotICAg
IHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5v
ZGUodGhpcyk7CisgICAgcmV0dXJuIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNG
dWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKIH0KIAogdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVu
dDo6dmlkZW9XaWR0aCgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2NDIx
NikKKysrIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjE5
LDkgKzIxOSw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGFs
bG93c0FjY2VsZXJhdGVkQ29tcG9zaXRpbmcoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAjZW5k
aWYKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZShjb25z
dCBOb2RlKikgeyByZXR1cm4gZmFsc2U7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVs
bHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxz
Y3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KKyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVs
bHNjcmVlbkZvckVsZW1lbnQoY29uc3QgRWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0K
KyAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kikg
eyB9CiAKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgdmlydHVhbCBJ
bnRSZWN0IHZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBJ
bnRSZWN0KCk7IH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNiArMTM2LDkgQEAgU2V0
dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFi
bGVkKGZhbHNlKSAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAgICAsIG1f
cGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGZhbHNlKQogICAgICwgbV9kbnNQcmVmZXRjaGlu
Z0VuYWJsZWQodHJ1ZSkKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAsIG1fZnVsbFNjcmVl
bkVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aAkocmV2aXNpb24gNjQyMTYpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMzEwLDYgKzMxMCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRl
RHVyaW5nTGF5b3V0RW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmlu
Z0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZDsgfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIHZvaWQgc2V0RnVsbFNj
cmVlbkVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fZnVsbFNjcmVlbkVuYWJsZWQgPSBmbGFnOyB9Cisg
ICAgICAgIGJvb2wgZnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCAgeyByZXR1cm4gbV9mdWxsU2Ny
ZWVuRW5hYmxlZDsgfQorI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxl
ZChib29sIGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9v
bCBtZW1vcnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0VuYWJsZWQ7
IH0KIApAQCAtNDAzLDYgKzQwOCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFibGVkOiAxOyAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwg
ZG8gbm90IHVzZS4KICAgICAgICAgYm9vbCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA6
IDE7CiAgICAgICAgIGJvb2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOworI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorICAgICAgICBib29sIG1fZnVsbFNjcmVlbkVuYWJsZWQgOiAxOworI2Vu
ZGlmCiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5hYmxlZDogMTsKICAgICAgICAgYm9vbCBt
X2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7CiAgICAgCkluZGV4OiBXZWJDb3JlL3JlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCShyZXZpc2lvbiA2NDIxNikKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Nzc2LDcgKzc3NiwxMCBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25F
CiB2b2lkIE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRI
YW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5h
bWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2Ny
ZWVuKCk7CisgICAgICAgIGlmIChtZWRpYUVsZW1lbnQoKS0+aXNGdWxsc2NyZWVuKCkpCisgICAg
ICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZXhpdEZ1bGxzY3JlZW4oKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNjcmVlbigpOwogICAgICAgICBl
dmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKICAgICB9CiAgICAgSFRNTElucHV0RWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHJldmlzaW9uIDY0MjE2KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkod29ya2luZyBjb3B5KQpA
QCAtNzksNiArNzksNyBAQCBlbnVtIFBzZXVkb0lkIHsKICAgICBNRVRFUl9IT1JJWk9OVEFMX0JB
UiwgTUVURVJfSE9SSVpPTlRBTF9PUFRJTVVNLCBNRVRFUl9IT1JJWk9OVEFMX1NVQk9QVElNQUws
IE1FVEVSX0hPUklaT05UQUxfRVZFTl9MRVNTX0dPT0QsCiAgICAgTUVURVJfVkVSVElDQUxfQkFS
LCBNRVRFUl9WRVJUSUNBTF9PUFRJTVVNLCBNRVRFUl9WRVJUSUNBTF9TVUJPUFRJTUFMLCBNRVRF
Ul9WRVJUSUNBTF9FVkVOX0xFU1NfR09PRCwgCiAgICAgQUZURVJfTEFTVF9JTlRFUk5BTF9QU0VV
RE9JRCwKKyAgICBGVUxMX1NDUkVFTiwgRlVMTF9TQ1JFRU5fRE9DLCBGVUxMX1NDUkVFTl9ST09U
X1dJVEhfVEFSR0VULAogICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCiAg
ICAgRklSU1RfSU5URVJOQUxfUFNFVURPSUQgPSBGSUxFX1VQTE9BRF9CVVRUT04sCiAgICAgUFVC
TElDX1BTRVVET0lEX01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0gMSkg
JiB+KCgxIDw8IEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>62968</attachid>
            <date>2010-07-29 11:02:05 -0700</date>
            <delta_ts>2010-08-03 11:43:27 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>58299</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjkxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU4gbW9kZSBmb3IgdGhlIE1hYyAoZXhj
ZXB0IGlQaG9uZSkuCisKIDIwMTAtMDctMjkgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpJbmRleDogSmF2YVNj
cmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHJldmlzaW9uIDY0MjkxKQorKysgSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRm
b3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5Nyw2ICs1OTcsNyBAQAogI2VuZGlmCiAjZGVmaW5l
IEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQorI2RlZmluZSBF
TkFCTEVfRlVMTFNDUkVFTiAxCiAjZW5kaWYgLyogUExBVEZPUk0oTUFDKSAmJiAhUExBVEZPUk0o
SVBIT05FKSAqLwogCiAjaWYgUExBVEZPUk0oTUFDKQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0MjkxKQorKysgV2Vi
Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNDEgQEAKKzIwMTAtMDct
MjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93
IGEgcGFnZSB0byBnbyBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1
CisgICAgICAgIAorICAgICAgICBNb3ppbGxhIGhhcyBwcm9wb3NlZCBhIG5ldyBzZXQgb2YgSmF2
YVNjcmlwdCBBUElzIHdoaWNoIGFsbG93IGFueSBlbGVtZW50IGluCisgICAgICAgIGEgZG9jdW1l
bnQgdG8gZ28gZnVsbC1zY3JlZW4uICBUaGUgY3VycmVudCByZXZpc2lvbiBvZiB0aGVpciBwcm9w
b3NhbCBjYW4gYmUgCisgICAgICAgIGZvdW5kIGhlcmU6CisgICAgICAgIDxodHRwczovL3dpa2ku
bW96aWxsYS5vcmcvaW5kZXgucGhwP3RpdGxlPUdlY2tvOkZ1bGxTY3JlZW5BUEkmb2xkaWQ9MjM1
NjAxPgorICAgICAgICAKKyAgICAgICAgVGhlIHByb3Bvc2VkIHNwZWNpZmljYXRpb24gaW5jbHVk
ZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIERvY3VtZW50OgorICAgICAgICAt
IFRocmVlIG5ldyBtZXRob2RzIG9uIERvY3VtZW50OgorICAgICAgICAgICAgKyB2b2lkIHJlcXVl
c3RGdWxsU2NyZWVuKCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhL
ZXlzKCkKKyAgICAgICAgICAgICsgdm9pZCBjYW5jZWxGdWxsU2NyZWVuKCkKKyAgICAgICAgLSBU
aHJlZSBuZXcgYXR0cmlidXRlcyBvZiBEb2N1bWVudDoKKyAgICAgICAgICAgICsgcmVhZG9ubHkg
YXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbgorICAgICAgICAgICAgKyByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuV2l0aEtleXMKKyAgICAgICAgICAgICsgKG9wdGlvbmFs
KSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBjdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQKKyAg
ICAgICAgICAgIAorICAgICAgICBFbGVtZW50OgorICAgICAgICAtIFR3byBuZXcgbWV0aG9kcyBv
biBFbGVtZW50OgorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuKCkKKyAgICAg
ICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKKyAgICAgICAgCisgICAg
ICAgIEhUTUxJRnJhbWVFbGVtZW50OgorICAgICAgICAtIE9uZSBuZXcgY29udGVudCBhdHRyaWJ1
dGU6CisgICAgICAgICAgICArIGFsbG93RnVsbFNjcmVlbgorICAgICAgICAgICAgCisgICAgICAg
IEV2ZW50czoKKyAgICAgICAgLSBPbmUgbmV3IGV2ZW50OgorICAgICAgICAgICAgKyBmdWxsU2Ny
ZWVuQ2hhbmdlCisgICAgICAgIAorICAgICAgICBDU1MgUHNldWRvLWNsYXNzZXM6CisgICAgICAg
IC0gVGhyZWUgbmV3IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4K
KyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLWRvYworICAgICAgICAgICAgKyA6ZnVsbC1zY3Jl
ZW4tcm9vdC13aXRoLXRhcmdldAorICAgICAgICAKKyAgICAgICAgRm9yIFdlYktpdCdzIGluaXRp
YWwgaW1wbGVtZW50YXRpb24sIGFsbCB0aGUgYWJvdmUgbmV3IEFQSXMgd2lsbCBiZSBwcmVmaXhl
ZCB3aXRoIAorICAgICAgICAid2Via2l0IiBvciAiLXdlYmtpdCIgd2hlcmUgYXBwcm9wcmlhdGUu
CisgICAgICAgIAorICAgICAgICBOZXcgdGVzdHM6CisgICAgICAgIExheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1jc3MuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAorCisgICAgICAgIFByb2plY3QgZmlsZSBjaGFuZ2VzOgor
ICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOiBBZGRlZCBh
biBFTkFCTEVfRlVMTFNDUkVFTiBlbnRyeS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtl
OiBBZGRlZCBydWxlcyBmb3IgZnVsbHNjcmVlbi5jc3MgYW5kIFdlYkNvcmUuRnVsbFNjcmVlbi5l
eHAuCisgICAgICAgICogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDogQWRkZWQgZXhwb3J0IHN5bWJv
bHMgZm9yIERvY3VtZW50IGFuZCBFbGVtZW50IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyBzb3VyY2UgZmlsZXMgYWRkZWQgdG8gdGhl
IHByb2plY3QuCisKKyAgICAgICAgSURMIGNoYW5nZXM6CisgICAgICAgICogZG9tL0RvY3VtZW50
LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIERvY3VtZW50J3MgamF2
YXNjcmlwdCBpbnRlcmZhY2UuCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUg
bmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRWxlbWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNl
LgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOiBBZGRlZCB0aGUgYWxsb3dG
dWxsU2NyZWVuIGF0dHJpYnV0ZS4KKworICAgICAgICBTb3VyY2UgY2hhbmdlczoKKyAgICAgICAg
KiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDogRXhwb3NlZCBEb2N1bWVudCBh
bmQgRWxlbWVudCBmdWxsc2NyZWVuIGZ1bmN0aW9ucyBpbiB0aGUgRE9NIGNsYXNzZXMuCisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDogQWRkZWQgbmV3IEZ1bGxTY3JlZW4gcHNldWRvLWNs
YXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRvSWQpOiAKKyAgICAg
ICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3Iu
aDogCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KTogQWRkZWQgbmV3IGZ1bGwtc2Ny
ZWVuIHBzZXVkbyBjbGFzc2VzIHRvIHRoZSBQc2V1ZG9UeXBlIGVudW0uCisgICAgICAgICogY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OmxvYWRGdWxsRGVmYXVs
dFN0eWxlKTogUHVsbCB0aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0
eWxlIGFuZCB0aGUgZGVmYXVsdFF1aXJrc1N0eWxlIHNoZWV0cy4KKyAgICAgICAgKFdlYkNvcmU6
OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBp
bnRvIHRoZSBkZWZhdWx0U3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBDaGVjayBmb3IgdGhl
IG5ldyBGdWxsU2NyZWVuIHBzZXVkbyBjbGFzc2VzLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KTogU3VwcG9ydCBjcmVhdGluZyBhICJXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlIiBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRM
aXN0ZW5lclR5cGVJZk5lZWRlZCk6IFN1cHBvcnQgbGlzdGVuaW5nIGZvciBhICJ3ZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQiCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuV2l0aEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKTogUGFzc2VzIHJlcXVlc3QgdG8g
dGhlIGNocm9tZSBjbGllbnQgdG8gZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKTogUGFzc2VzIHJlcXVlc3Qg
dG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTog
U2V0cyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxl
bWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KTogQ3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0
RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ2xlYXJzIHRoZSBGdWxsU2NyZWVuIHBzZXVk
by1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVtZW50IGFuZCBpdHMgZG9jdW1lbnQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50Lmg6IEFkZGVkIGNvbnN0IGFjY2Vzc29ycyBmb3IgbmV3IGZ1
bGwtc2NyZWVuIGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
OjopOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdElzRnVsbFNjcmVlbik6IEFj
Y2Vzc29yIGZvciBtX2lzRnVsbFNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3
ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQpOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxT
Y3JlbiBhbmQgbV9hcmVLZXlzRW5hYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQpOiBBY2Nlc3NvciBmb3IgbV9mdWxsU2NyZWVu
RWxlbWVudC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbik6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cy4gCisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKTogQ2FsbHMgRG9jdW1lbnQ6
OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLgorICAgICAgICAqIGRv
bS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6IE92ZXJyaWRlZCBieSBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAg
ICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAg
ICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGw6IEFkZGVkLgorICAgICAgICAq
IGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnBh
cnNlTWFwcGVkQXR0cmlidXRlKTogUGFyc2UgdGhlIG5ldyAib253ZWJraXRmdWxsc2NyZWVuY2hh
bmdlIiBhdHRyaWJ1dGUgYW5kIHJlZ2lzdGVyIGEgbGlzdGVuZXIuCisgICAgICAgICogaHRtbC9I
VE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6
OndlYmtpdEFsbG93RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpzZXRXZWJraXRBbGxvd0Z1bGxT
Y3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAgICAgICogaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcDogUmUtaW1wbGVtZW50ZWQgdGhlIEhUTUxNZWRpYUVsZW1lbnQg
ZnVsbCBzY3JlZW4gc3VwcG9ydCBpbiB0ZXJtcyBvZiB0aGUgbmV3IChnZW5lcmljKSBmdWxsIHNj
cmVlbiBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6SFRNTE1l
ZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwYXJzZU1h
cHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRv
Y3VtZW50V2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6
ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
VmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTFZp
ZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBQYXNz
IHRocm91Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpD
aHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRG
dWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxl
Z2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JF
bGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBh
Z2UvU2V0dGluZ3MuaDogQWRkIGEgbmV3IHNldHRpbmcgdG8gY29udHJvbCBydW50aW1lIHN1cHBv
cnQgZm9yIGZ1bGwgc2NyZWVuIG1vZGUgKGRlZmF1bHRzIHRvIG9mZikKKyAgICAgICAgKFdlYkNv
cmU6OlNldHRpbmdzOjpzZXRGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
ZXR0aW5nczo6ZnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAgICAqIHJlbmRlcmluZy9NZWRpYUNv
bnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xGdWxsc2Ny
ZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRoZSBmdWxsIHNjcmVlbiBi
dXR0b24gbm93IHRvZ2dsZXMgZnVsbCBzY3JlZW4gbW9kZSAocHJldmlvdXNseSwgaXQgb25seSBl
bnRlcmVkKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMu
aDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisKIDIwMTAtMDctMjkgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1h
bi4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC00NDksNiArNDQ5LDcgQEAgRE9NX0NM
QVNTRVMgPSBcCiAgICAgV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZSBcCiAgICAgV2ViS2l0Q1NTTWF0
cml4IFwKICAgICBXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZSBcCisgICAgV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50IFwKICAgICBXZWJLaXRQb2ludCBcCiAgICAgV2ViS2l0VHJhbnNpdGlvbkV2
ZW50IFwKICAgICBXZWJTb2NrZXQgXApAQCAtNjY4LDYgKzY2OSwxMCBAQCBpZmVxICgkKE9TKSxN
QUNPUykKIGVuZGlmCiBlbmRpZgogCitpZmVxICgkKGZpbmRzdHJpbmcgRU5BQkxFX0ZVTExTQ1JF
RU4sJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZVTExTQ1JFRU4pCisgICAgVVNFUl9BR0VO
VF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9j
c3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBjc3Mv
bWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIAlwZXJs
ICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5UX1NUWUxFX1NI
RUVUUykKIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA2NDI5MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NjcsMyArMTQ2NywxMCBAQCBfX1pON1dlYkNvcmUx
NkhUTUxNZWRpYUVsZW1lbnQxOXNldE1lZGlhCiBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGF1ZGlv
VGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKICNlbmRpZgorCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU4pCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzM3dlYmtpdERpZEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdl
YmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJD
b3JlOERvY3VtZW50MzR3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxl
bWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM1d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZv
ckVsZW1lbnRFUE5TXzdFbGVtZW50RQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL0NvbmZpZ3VyYXRp
b25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ29uZmln
dXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHJldmlzaW9uIDY0MjkxKQorKysgV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtNTYsNiArNTYsNyBAQCBFTkFCTEVfRklMVEVSUyA9IEVOQUJMRV9GSUxURVJTOwogRU5B
QkxFX0ZJTEVfUkVBREVSID0gRU5BQkxFX0ZJTEVfUkVBREVSOwogRU5BQkxFX0ZJTEVfV1JJVEVS
ID0gOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOworRU5BQkxFX0ZVTExTQ1JFRU4gPSBFTkFCTEVf
RlVMTFNDUkVFTjsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIEVO
QUJMRV9JQ09OREFUQUJBU0UgPSBFTkFCTEVfSUNPTkRBVEFCQVNFOwogRU5BQkxFX0lNQUdFX1JF
U0laRVIgPSA7CkBAIC04Niw0ICs4Nyw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQ
QVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVS
RV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAk
KEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQoRU5BQkxFX0NIQU5O
RUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxF
X0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxF
X0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVf
RE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVO
QUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5BQkxFX0ZJTEVfU1lT
VEVNKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJM
RV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBV
VF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkg
JChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVC
WSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NW
RykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJM
RV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZH
X0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFC
TEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFC
TEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hT
TFQpOworRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVf
M0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0JfU0xJQ0UpICQo
RU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJ
T04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJ
U1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9B
RCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9G
SUxURVJTKSAkKEVOQUJMRV9GSUxFX1JFQURFUikgJChFTkFCTEVfRklMRV9XUklURVIpICQoRU5B
QkxFX0ZJTEVfU1lTVEVNKSAkKEVOQUJMRV9GVUxMU0NSRUVOKSAkKEVOQUJMRV9HRU9MT0NBVElP
TikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJM
RV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFT
Q1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVO
QUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQo
RU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChF
TkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElP
TikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1Mp
ICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJM
RV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxF
X1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhU
TUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5
ODksNiArNDk4OSw4IEBACiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5o
ICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
NkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87
IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2
ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZE
NzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87
IH07CisJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENE
QTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAq
LzsgfTsKKwkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmNwcCAqLzsgfTsKIAkJQ0UwMkYwQzQxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xs
ZXJCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTE3MkUwMTExMzZF
OENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENFMTcyRTAwMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUNFNEMwMEU0
MTBGNkY3QkEwMENBMzhGNSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFNEMwMEUzMTBGNkY3QkEwMENBMzhG
NSAvKiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLzsgfTsKQEAgLTEwNjY1LDYgKzEwNjY3LDEw
IEBACiAJCUM1RUJERDgxMTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0b3JhZ2VFdmVudERpc3BhdGNo
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzZENzRBRDMwOUFBMjgyRTAwMEIw
QTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNb2RpZnlT
ZWxlY3Rpb25MaXN0TGV2ZWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDRDRF
MEFGQTExRjdCQzI3MDA5RDM4MTEgLyogZnVsbHNjcmVlbi5jc3MgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LmNz
czsgcGF0aCA9IGZ1bGxzY3JlZW4uY3NzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3MjExRTdBNEM3MDA4
NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyog
Wm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8q
IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0xNjYyMSw2ICsxNjYyNyw3IEBACiAJCQkJQkM5QUREMjIwQ0M0MDMyNjAwMDk4QzRDIC8q
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFFNTQwRTFDNEQ0QTAwRjZB
NTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJCQk0Q0RFNTRFQzBFNTU3
OTc4MDA4OUUyNkMgLyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEg
LyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzE2Myw2ICsxNzE3MCw5IEBACiAJCQkJMzFDMEZGMUIwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYx
QzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMw
RkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLAorCQkJ
CUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aCAqLywKKwkJCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZG
RTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZF
MDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0xOTg3NCw2
ICsxOTg4NCw3IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAv
KiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTkz
MDlBMTMxMUY0QUU2QTAwMjUwNjAzIC8qIERldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jay5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0QxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jlc291cmNl
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMDg0RDBFM0YxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jl
c291cmNlc0NhY2hlLmggaW4gSGVhZGVycyAqLywKQEAgLTIyMjczLDYgKzIyMjg0LDcgQEAKIAkJ
CQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2Rl
U29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyog
WFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE3OUE3NDExRTdBNEM3MDA4NzhE
OTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTU5MzA5QTExMTFGNEFFNTgwMDI1MDYwMyAvKiBEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2su
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg0RDBFM0MxMUY1ODE2MTAwMDgxRTFBIC8qIFNWR1Jl
c291cmNlcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwODREMEUzRTExRjU4MTYxMDAwODFFMUEg
LyogU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2Jp
bmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9uIDY0MjkxKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5
KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBAaW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZSBX
RUJLSVRfCiAtIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5n
ICopdGFnbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVu
dCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJL
SVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3Ry
aW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVm
aW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKy0gKHZvaWQpd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0g
KHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRDYW5jZWxGdWxsU2NyZWVuIEFWQUlMQUJMRV9J
Tl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01Eb2N1
bWVudEZyYWdtZW50IDogRE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTIyNCw2ICsyMjks
MTAgQEAgQGludGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9k
ZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxF
X0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihO
U1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAo
RE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJ
TEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCistICh2b2lkKXdlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNlbmRp
ZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUVudGl0eSA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05f
MV8zCkBAIC01NjksNiArNTc4LDkgQEAgQGludGVyZmFjZSBET01IVE1MSUZyYW1lRWxlbWVudCA6
IERPTUhUTQogQHByb3BlcnR5KGNvcHkpIE5TU3RyaW5nICp3aWR0aDsKIEBwcm9wZXJ0eShyZWFk
b25seSwgcmV0YWluKSBET01Eb2N1bWVudCAqY29udGVudERvY3VtZW50OwogQHByb3BlcnR5KHJl
YWRvbmx5LCByZXRhaW4pIERPTUFic3RyYWN0VmlldyAqY29udGVudFdpbmRvdyBBVkFJTEFCTEVf
SU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYm
IEVOQUJMRV9GVUxMU0NSRUVOCitAcHJvcGVydHkoYXNzaWduKSBCT09MIHdlYmtpdEFsbG93RnVs
bFNjcmVlbjsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhUTUxJbWFnZUVsZW1lbnQg
OiBET01IVE1MRWxlbWVudCBXRUJLSVRfVkVSU0lPTl8xXzMKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJ
KHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNDQsNiArMjQ0LDE1IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9J
ZChQc2V1ZG9UeXAKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgIHJldHVy
biBGVUxMX1NDUkVFTjsKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgICAgIHJl
dHVybiBGVUxMX1NDUkVFTl9ET0M7CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhU
YXJnZXQ6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTl9ST09UX1dJVEhfVEFSR0VUOworI2Vu
ZGlmCisgICAgICAgICAgICAKICAgICBjYXNlIFBzZXVkb0lucHV0TGlzdEJ1dHRvbjoKICNpZiBF
TkFCTEUoREFUQUxJU1QpCiAgICAgICAgIHJldHVybiBJTlBVVF9MSVNUX0JVVFRPTjsKQEAgLTQy
Miw2ICs0MzEsMTEgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmaXJzdFBhZ2UsICgiZmlyc3Qi
KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGxlZnRQYWdlLCAoImxl
ZnQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIHJpZ2h0UGFnZSwg
KCJyaWdodCIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbiwgKCItd2Via2l0LWZ1bGwtc2NyZWVuIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuRG9jLCAoIi13
ZWJraXQtZnVsbC1zY3JlZW4tZG9jIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1y
b290LXdpdGgtdGFyZ2V0IikpOworI2VuZGlmCiAKICAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlID0g
MDsKICAgICBpZiAoIW5hbWVUb1BzZXVkb1R5cGUpIHsKQEAgLTUzMyw2ICs1NDcsMTEgQEAgc3Rh
dGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoZmlyc3RQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFn
ZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsZWZ0UGFnZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChy
aWdodFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvUmlnaHRQYWdlKTsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW4u
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbik7CisgICAgICAgIG5hbWVUb1Bz
ZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuRG9jLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1
bGxTY3JlZW5Eb2MpOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlblJv
b3RXaXRoVGFyZ2V0LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0
aFRhcmdldCk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7CiB9
CkBAIC02NjIsNiArNjgxLDExIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBl
KCkgY28KICAgICBjYXNlIFBzZXVkb1NpbmdsZUJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vQnV0
dG9uOgogICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQor
ICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2M6
CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisjZW5kaWYKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0
UGFnZToKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gNjQyOTEpCisrKyBXZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDExIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0xlZnRQYWdlLAogICAgICAgICAgICAgUHNl
dWRvUmlnaHRQYWdlLAogICAgICAgICAgICAgUHNldWRvRmlyc3RQYWdlLAorI2lmIEVOQUJMRShG
VUxMU0NSRUVOKQorICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlbiwKKyAgICAgICAgICAgIFBz
ZXVkb0Z1bGxTY3JlZW5Eb2MsCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhU
YXJnZXQsCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUg
ewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0MjkxKQorKysgV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0OCw2ICs1
NDgsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgIFN0cmluZyBx
dWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVp
cmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5l
eHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKICAgICBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9
IHBhcnNlVUFTaGVldChxdWlya3NSdWxlcyk7CiAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICAvLyBGdWxsLXNjcmVlbiBydWxlcy4KKyAgICBTdHJpbmcgZnVs
bHNjcmVlblJ1bGVzID0gU3RyaW5nKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXpl
b2YoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRlclRoZW1lOjpkZWZhdWx0
VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworICAgIENTU1N0eWxlU2hlZXQqIGZ1
bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVsZXMpOworICAgIGRlZmF1
bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkp
OworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNo
ZWV0LCBzY3JlZW5FdmFsKCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIGxvYWRTaW1wbGVE
ZWZhdWx0U3R5bGUoKQpAQCAtNTYzLDYgKzU3MSwxMyBAQCBzdGF0aWMgdm9pZCBsb2FkU2ltcGxl
RGVmYXVsdFN0eWxlKCkKICAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNpbXBs
ZURlZmF1bHRTdHlsZVNoZWV0LCBzY3JlZW5FdmFsKCkpOwogICAgIAogICAgIC8vIE5vIG5lZWQg
dG8gaW5pdGlhbGl6ZSBxdWlya3Mgc2hlZXQgeWV0IGFzIHRoZXJlIGFyZSBubyBxdWlyayBydWxl
cyBmb3IgZWxlbWVudHMgYWxsb3dlZCBpbiBzaW1wbGUgZGVmYXVsdCBzdHlsZS4KKworI2lmIEVO
QUJMRShGVUxMU0NSRUVOKQorICAgIC8vIEZ1bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBm
dWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNp
emVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpLT5leHRyYURlZmF1bHRTdHlsZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCog
ZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNoZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVm
YXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwo
KSk7CisjZW5kaWYKIH0KICAgICAKIHN0YXRpYyB2b2lkIGxvYWRWaWV3U291cmNlU3R5bGUoKQpA
QCAtMjYxOSw2ICsyNjM0LDM3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVj
a2VyOjoKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgICAgICB9CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuOgorICAgICAgICAgICAgICAgIC8v
IFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIGFuZCB0aGUgZG9j
dW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gCisgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBp
cyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xh
c3MgYXBwbGllcyB0byAKKyAgICAgICAgICAgICAgICAvLyB0aGF0IGVsZW1lbnQuIEFsc28sIGFu
IDxpZnJhbWU+LCA8b2JqZWN0PiBvciA8ZW1iZWQ+IGVsZW1lbnQgd2hvc2UgY2hpbGQgYnJvd3Np
bmcgCisgICAgICAgICAgICAgICAgLy8gY29udGV4dCdzIERvY3VtZW50IGlzIGluIHRoZSBmdWxs
c2NyZWVuIHN0YXRlIGhhcyB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVkLgor
ICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAo
ZSAhPSBlLT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYzoK
KyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVu
IHN0YXRlLCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYycgcHNldWRvY2xhc3MgYXBwbGllcyAKKyAgICAg
ICAgICAgICAgICAvLyB0byB0aGUgcm9vdCBlbGVtZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAg
ICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9
IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBj
YXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQ6CisgICAgICAg
ICAgICAgICAgLy8gV2hpbGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBh
bmQgdGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxsc2NyZWVuIGVsZW1lbnQgCisgICAgICAgICAg
ICAgICAgLy8gaXMgYW4gZWxlbWVudCBpbiB0aGUgZG9jdW1lbnQsIHRoZSAnZnVsbC1zY3JlZW4t
ZG9jLXdpdGgtdGFyZ2V0JyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRvIAorICAgICAgICAgICAgICAg
IC8vIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAgICBp
ZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQo
KS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPmNvbnRhaW5zKGUtPmRvY3VtZW50
KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAg
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duOgogICAgICAgICAgICAg
Y2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90UGFyc2VkOgogICAgICAgICAgICAgZGVmYXVsdDoK
SW5kZXg6IFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
Y3NzL2Z1bGxzY3JlZW4uY3NzCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvZnVsbHNjcmVl
bi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKKzotd2Via2l0LWZ1bGwtc2NyZWVu
IHsKKyAgcG9zaXRpb246Zml4ZWQ7CisgIHRvcDowOworICBsZWZ0OjA7CisgIHJpZ2h0OjA7Cisg
IGJvdHRvbTowOworfQorOi13ZWJraXQtZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldCB7Cisg
IG92ZXJmbG93OmhpZGRlbjsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAg
d2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlCisgICAgaW1hZ2UtZml0OiBmaWxsOworfQor
CitpbWc6LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0
OiAxMDAlOworICAgIGltYWdlLWZpdDogZmlsbDsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXBh
Z2UtbWVkaWE6LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1wYW5l
bCB7CisgICAgYm90dG9tOiAwcHg7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNjQyOTEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsMTAgQEAKICNpbmNsdWRlICJIVE1MTm9TY3Jp
cHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorI2luY2x1ZGUg
IldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBA
IC00MDUsNiArNDA5LDExIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0
IEsKICNlbmRpZgogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3VtZW50V2Vha1JlZmVyZW5jZTo6
Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRBdHRyKQorI2lmIEVOQUJM
RShGVUxMU0NSRUVOKQorICAgICwgbV9pc0Z1bGxTY3JlZW4oMCkKKyAgICAsIG1fYXJlS2V5c0Vu
YWJsZWQoMCkKKyAgICAsIG1fZnVsbFNjcmVlbkVsZW1lbnQoMCkKKyNlbmRpZgogewogICAgIG1f
ZG9jdW1lbnQgPSB0aGlzOwogCkBAIC0zMzMwLDYgKzMzMzksMTAgQEAgUGFzc1JlZlB0cjxFdmVu
dD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KAogI2VuZGlmCiAgICAgICAgIGV2ZW50ID0gVG91Y2hF
dmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICBlbHNl
IGlmIChldmVudFR5cGUgPT0gIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2UiKQorICAgICAgICBldmVu
dCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCk7CisjZW5kaWYKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiRGV2
aWNlT3JpZW50YXRpb25FdmVudCIpCiAgICAgICAgIGV2ZW50ID0gRGV2aWNlT3JpZW50YXRpb25F
dmVudDo6Y3JlYXRlKCk7CkBAIC0zMzgxLDYgKzMzOTQsMTAgQEAgdm9pZCBEb2N1bWVudDo6YWRk
TGlzdGVuZXJUeXBlSWZOZWVkZWQoYwogICAgICAgICAgICAgcGFnZS0+Y2hyb21lKCktPmNsaWVu
dCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CiAgICAgfQogI2VuZGlmCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCisgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRm
dWxsc2NyZWVuY2hhbmdlRXZlbnQpCisgICAgICAgIGFkZExpc3RlbmVyVHlwZShGVUxMU0NSRUVO
X0xJU1RFTkVSKTsKKyNlbmRpZgogfQogCiBDU1NTdHlsZURlY2xhcmF0aW9uKiBEb2N1bWVudDo6
Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikKQEAgLTUwOTQsNSArNTEx
MSw4NCBAQCBJbnNwZWN0b3JDb250cm9sbGVyKiBEb2N1bWVudDo6aW5zcGVjdG9yCiAgICAgcmV0
dXJuIHBhZ2UoKSA/IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKIH0KICNlbmRp
ZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQordm9pZCBEb2N1bWVudDo6d2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW4oKQoreworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVu
dFdpdGhLZXlzKGRvY3VtZW50RWxlbWVudCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQoreworICAgIHdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKGRvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKK30K
KyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdp
dGhLZXlzKEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wga2V5c0VuYWJsZWQpCit7CisgICAgaWYgKCFw
YWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgaWYgKCFlbGVtZW50KQorICAgICAgICBlbGVtZW50ID0gZG9jdW1l
bnRFbGVtZW50KCk7CisgICAgCisgICAgaWYgKHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5z
dXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIHBhZ2UoKS0+
Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpOwor
ICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVudDsKKyAgICAgICAgbV9hcmVLZXlz
RW5hYmxlZCA9IGtleXNFbmFibGVkOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0
Q2FuY2VsRnVsbFNjcmVlbigpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGlu
Z3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlm
IChwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVu
dChtX2Z1bGxTY3JlZW5FbGVtZW50KSkKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50
KCktPmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50KTsKK30KKyAg
ICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3Mo
KS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudCA9IGVsZW1lbnQgPyBlbGVtZW50IDogZG9jdW1lbnRFbGVtZW50KCk7CisgICAg
bV9pc0Z1bGxTY3JlZW4gPSB0cnVlOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICBpZiAoZG9jdW1lbnRFbGVtZW50KCkg
IT0gbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPnNldE5l
ZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
ICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9j
dW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9
CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KikKK3sKKyAgICBpZiAoIXBhZ2UoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlm
ICghcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1
cm47CisgICAgICAgIAorICAgIG1faXNGdWxsU2NyZWVuID0gZmFsc2U7CisgICAgbV9hcmVLZXlz
RW5hYmxlZCA9IGZhbHNlOworICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KSB7CisgICAgICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdl
KTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVu
dCA9IDA7CisgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2
ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIGRvY3VtZW50
RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBk
YXRlU3R5bGVJZk5lZWRlZCgpOworfQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNjQyOTEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDkgQEAgcHVibGljOgogICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU4pCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgRG9jdW1lbnRUeXBlKiBkb2N0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV9kb2NUeXBlLmdldCgpOyB9CiAKQEAgLTY4OCw3ICs2OTEsOCBAQCBwdWJsaWM6
CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4ODAwLAog
ICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDEwMDAsCiAg
ICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjAwMCwKLSAg
ICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAwCisgICAg
ICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMCwKKyAgICAg
ICAgRlVMTFNDUkVFTl9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHg4MDAwLAogICAgIH07
CiAKICAgICBib29sIGhhc0xpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVuZXJUeXBlKSBj
b25zdCB7IHJldHVybiAobV9saXN0ZW5lclR5cGVzICYgbGlzdGVuZXJUeXBlKTsgfQpAQCAtMTAx
NCw2ICsxMDE4LDIxIEBAIHB1YmxpYzoKICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VB
bnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlk
QXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1lOyB9CisgICAg
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgYm9vbCB3ZWJraXRJc0Z1bGxTY3JlZW4oKSBj
b25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbjsgfQorICAgIGJvb2wgd2Via2l0SXNGdWxsU2Ny
ZWVuV2l0aEtleXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW4gJiYgbV9h
cmVLZXlzRW5hYmxlZDsgfQorICAgIEVsZW1lbnQqIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNjcmVlbkVsZW1lbnQ7IH0KKyAgICB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bldpdGhLZXlzKCk7CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRX
aXRoS2V5cyhFbGVtZW50KiwgYm9vbCBrZXlzRW5hYmxlZCk7CisgICAgdm9pZCB3ZWJraXRDYW5j
ZWxGdWxsU2NyZWVuKCk7CisgICAgCisgICAgdm9pZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50KEVsZW1lbnQqKTsKKyNlbmRpZgogCiAgICAgYm9vbCB3cml0ZURpc2FibGVkKCkgY29u
c3QgeyByZXR1cm4gbV93cml0ZURpc2FibGVkOyB9CiAgICAgdm9pZCBzZXRXcml0ZURpc2FibGVk
KGJvb2wgZmxhZykgeyBtX3dyaXRlRGlzYWJsZWQgPSBmbGFnOyB9CkBAIC0xMzAxLDYgKzEzMjAs
MTIgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVk
aWFDYW5TdGFydExpc3RlbmVyczsKIAogICAgIFF1YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5h
bWU7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgYm9vbCBtX2lzRnVsbFNjcmVl
bjsKKyAgICBib29sIG1fYXJlS2V5c0VuYWJsZWQ7CisgICAgRWxlbWVudCogbV9mdWxsU2NyZWVu
RWxlbWVudDsKKyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRX
aXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lv
biA2NDI5MSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAt
MjQ1LDYgKzI0NSwxNSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtEb250RW51bV0gdm9pZCBp
bml0aWFsaXplV01MUGFnZVN0YXRlKCk7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZV
TExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhL
ZXlzKCk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNj
cmVlbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2Ny
ZWVuV2l0aEtleXNFbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CisgICAgICAgIHZvaWQgd2Via2l0Q2FuY2Vs
RnVsbFNjcmVlbigpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVf
QykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9N
IGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBv
bmFib3J0OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODIsNSArMTU4MiwxNyBAQCBib29sIEVsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0dXJuIE5vZGU6OmNoaWxkU2hv
dWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU4pCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAg
ICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0
aGlzLCBmYWxzZSk7Cit9CisKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5X
aXRoS2V5cygpCit7CisgICAgZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JF
bGVtZW50V2l0aEtleXModGhpcywgdHJ1ZSk7Cit9CisjZW5kaWYgICAgCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9kb20vRWxl
bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklC
VVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxM
U0NSRUVOKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNj
cmVlbmNoYW5nZSk7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRT
Y3JpcHRpbmdQZXJtaXNzaW9uID0gRnJhZ21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIApAQCAtMjky
LDYgKzI5NSwxMSBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKFNWRykKICAgICB2aXJ0dWFsIGJvb2wg
Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7IAogI2VuZGlmCisgICAgCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigp
OworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCiAK
IHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpJbmRleDogV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTEzMyw2ICsxMzMsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVf
RlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JFRU4KKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0
aEtleXMoKTsKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8
ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRy
aWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9y
dDsKQEAgLTIwNSw2ICsyMTAsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50
TGlzdGVuZXIgb250b3VjaG1vdmU7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0
aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3Vj
aGVuZDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVO
VFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOworICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOXSBFdmVudExpc3Rl
bmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFdl
YkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJ
KHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xNjIsNiArMTYyLDEzIEBAIGJvb2wgRXZlbnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50
KCkgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKK2Jv
b2wgRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUv
ZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24g
NjQyOTEpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiAr
MTIzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJL
aXRBbmltYXRpb25FdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRU
cmFuc2l0aW9uRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlzQmVmb3JlTG9h
ZEV2ZW50KCkgY29uc3Q7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0OworI2VuZGlmCiAjaWYg
RU5BQkxFKFNWRykKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7
CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9kb20v
RXZlbnROYW1lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgIFwKICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3Jv
KHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1F
U19GT1JfRUFDSAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7
CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU4pCisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICAKKy8vIEZyb20gdGhlIE1vemlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDog
IlRoZSBbZnVsbFNjcmVlbkNoYW5nZUV2ZW50XSBidWJibGVzIAorLy8gYW5kIGlzIG5vdCBjYW5j
ZWxsYWJsZS4iCisKK1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50KCkKKzogRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2VFdmVudCwgdHJ1ZSwgZmFsc2UpCit7Cit9CisKK1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpCit7Cit9CisKK3ZvaWQgV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0
IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGJvb2wgY2FuY2VsYWJsZUFyZykKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAg
ICByZXR1cm47CisgICAgCisgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2Vs
YWJsZUFyZyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRl
eDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50X2gKKyNkZWZpbmUgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKworI2lm
IEVOQUJMRShGVUxMU0NSRUVOKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworICAgIAorY2xhc3MgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IDogcHVibGlj
IEV2ZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQ+IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk7CisgICAgfSAgICAgICAgCisgICAgdmlydHVh
bCB+V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgCisgICAgdm9pZCBpbml0V2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbmNlbGFibGVB
cmcpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNv
bnN0IEF0b21pY1N0cmluZyYgdHlwZSk7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU4pCisKKyNlbmRpZiAvLyBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnRfaApJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK21vZHVsZSBldmVudHMgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ29uZGl0aW9u
YWw9V09SS0VSUyZGVUxMU0NSRUVOLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gRnVs
bFNjcmVlbkNoYW5nZUV2ZW50IDogRXZlbnQgeworCisgICAgICAgIHZvaWQgaW5pdEVycm9yRXZl
bnQoaW4gRE9NU3RyaW5nIHR5cGVBcmcsIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCBpbiBib29s
ZWFuIGNhbmNlbGFibGVBcmcsIGluIERPTVN0cmluZyBtZXNzYWdlQXJnLCBpbiBET01TdHJpbmcg
ZmlsZW5hbWVBcmcsIGluIHVuc2lnbmVkIGxvbmcgbGluZW5vQXJnKTsKKyAgICB9OworCit9Cklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDY0MjkxKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYg
KzIyMyw3IEBAIG9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVu
ZAogb253ZWJraXRiZWdpbmZ1bGxzY3JlZW4KIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgorb253ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKIG9wdGltdW0KIHBhdHRl
cm4KQEAgLTI4Miw1ICsyODMsNiBAQCB2aWV3c291cmNlCiB2bGluawogdnNwYWNlCiB3ZWJraXRk
aXJlY3RvcnkKK3dlYmtpdGFsbG93ZnVsbHNjcmVlbgogd2lkdGgKIHdyYXAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkocmV2aXNpb24gNjQyOTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgIm1hcmt1cC5o
IgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
KQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw2
ICsyNjYsMTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoY2FuY2VsQXR0cikgewogICAgICAgICBzZXRBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
TikKKyAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2VBdHRyKSB7CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyKSk7CisjZW5kaWYKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50Lmlk
bAkocmV2aXNpb24gNjQyOTEpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCwxMSBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChM
QU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYgTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyB0aXRsZURpc3BsYXlTdHJpbmc7CiAjZW5kaWYKKwor
I2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU4pICYmIEVOQUJMRV9GVUxMU0NSRUVOCisgICAg
ICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBA
QCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6
OkhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCkKICAgICA6IEhUTUxGcmFtZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50
KQorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICwgbV9hbGxvd0Z1bGxTY3JlZW4oZmFsc2Up
CisjZW5kaWYKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpZnJhbWVUYWcpKTsKIH0KQEAgLTEz
Miw2ICsxMzUsMTAgQEAgdm9pZCBIVE1MSUZyYW1lRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaQog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBzYW5kYm94QXR0cikKICAgICAgICAgc2V0U2Fu
ZGJveEZsYWdzKHBhcnNlU2FuZGJveEF0dHJpYnV0ZShhdHRyKSk7CiAjZW5kaWYKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNj
cmVlbkF0dHIpCisgICAgICAgIG1fYWxsb3dGdWxsU2NyZWVuID0gdHJ1ZTsKKyNlbmRpZgogICAg
IGVsc2UKICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRl
KGF0dHIpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDY0Mjkx
KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDYgKzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUTUxJRnJhbWVFbGVt
ZW50IDogcHVibGljIEhUTUxGcmFtZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgIGJvb2wgd2Vi
a2l0QWxsb3dGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9hbGxvd0Z1bGxTY3JlZW47IH0K
KyAgICB2b2lkIHNldFdlYmtpdEFsbG93RnVsbFNjcmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dG
dWxsU2NyZWVuID0gdmFsdWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTAsNiArNTUsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU4p
CisgICAgYm9vbCBtX2FsbG93RnVsbFNjcmVlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2
NDI5MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1Jl
ZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0
cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzY3Jv
bGxpbmc7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTikgJiYgRU5BQkxFX0ZVTExTQ1JF
RU4KKyAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBib29sZWFuIHdlYmtpdEFsbG93RnVsbFNj
cmVlbjsKKyNlbmRpZgogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzcmM7
CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHdpZHRoOwogCkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDI5MSkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEyLDcgKzMxMiw3IEBA
IHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWUKIHsKICAgICBpZiAobV9u
ZXR3b3JrU3RhdGUgPiBORVRXT1JLX0VNUFRZKQogICAgICAgICBwYXVzZShwcm9jZXNzaW5nVXNl
ckdlc3R1cmUoKSk7Ci0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQorICAgIGlmIChpc0Z1bGxzY3Jl
ZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKICAgICBIVE1MRWxlbWVudDo6cmVtb3Zl
ZEZyb21Eb2N1bWVudCgpOwogfQpAQCAtMTg1Miw3ICsxODUyLDcgQEAgdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojp1c2VyQ2FuY2VsbGVkTG9hZAogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRvY3Vt
ZW50V2lsbEJlY29tZUluYWN0aXZlKCkKIHsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAg
aWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogCiAgICAgbV9p
bkFjdGl2ZURvY3VtZW50ID0gZmFsc2U7CkBAIC0yMDEzLDI0ICsyMDEzLDQ0IEBAIHZvaWQgSFRN
TE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIKIH0KICNlbmRpZiAvLyBFTkFCTEUoUExV
R0lOX1BST1hZX0ZPUl9WSURFTykKIAorYm9vbCBIVE1MTWVkaWFFbGVtZW50Ojppc0Z1bGxzY3Jl
ZW4oKSBjb25zdCAKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICByZXR1cm4gZG9jdW1l
bnQoKSA/IGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IHRo
aXMgOiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIG1faXNGdWxsc2NyZWVuOworI2VuZGlmCit9
CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTikKKyAgICBBU1NFUlQoIWlzRnVsbHNjcmVlbigpKTsKKyAgICB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZWxzZQogICAgIEFTU0VSVCghbV9pc0Z1bGxz
Y3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsKICAgICBpZiAoZG9jdW1lbnQoKSAm
JiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJv
bWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgICAgIGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JF
bGVtZW50KHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRi
ZWdpbmZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogeworI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAg
IEFTU0VSVChpc0Z1bGxzY3JlZW4oKSk7CisgICAgaWYgKGRvY3VtZW50KCkpCisgICAgICAgIGRv
Y3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyNlbHNlCiAgICAgQVNTRVJUKG1f
aXNGdWxsc2NyZWVuKTsKICAgICBtX2lzRnVsbHNjcmVlbiA9IGZhbHNlOwogICAgIGlmIChkb2N1
bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdl
KCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOworICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3Jl
ZW5Gb3JFbGVtZW50KHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53
ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQpOwogICAgIH0KKyNlbmRpZgogfQogCiBQbGF0Zm9ybU1l
ZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBsYXRmb3JtTWVkaWEoKSBjb25zdApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiA2NDI5MSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAK
ICAgICBib29sIGhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxh
eWVyIHx8IG1fcGxheWVyLT5oYXNTaW5nbGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAgCi0gICAg
Ym9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbHNjcmVlbjsgfQorICAg
IGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3Q7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsK
ICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuKCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlk
ZW9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgog
I2luY2x1ZGUgIlJlbmRlckltYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNpbmNs
dWRlICJTZXR0aW5ncy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiwxMSArMTI3
LDE2IEBAIGJvb2wgSFRNTFZpZGVvRWxlbWVudDo6c3VwcG9ydHNGdWxsc2NyZWUKICAgICBpZiAo
IXBhZ2UpIAogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTikK
KyAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAogICAgIGlmICghcGxheWVyKCkgfHwgIXBsYXll
cigpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSB8fCAhcGxheWVyKCktPmhhc1ZpZGVvKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIHdpdGggdGhlIHBsYXRmb3JtIGNsaWVu
dC4KLSAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3Jl
ZW5Gb3JOb2RlKHRoaXMpOworICAgIHJldHVybiBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1
cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhUTUxWaWRl
b0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBjb25zdApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNs
aWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNp
b24gNjQyOTEpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxOSw5ICsyMTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBhbGxvd3NBY2NlbGVyYXRlZENvbXBvc2l0aW5nKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsg
fQogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvck5v
ZGUoY29uc3QgTm9kZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBl
bnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9CisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqKSB7IHJldHVybiBmYWxzZTsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50
KikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCopIHsgfQogCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgICAgIHZp
cnR1YWwgSW50UmVjdCB2aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QgeyBy
ZXR1cm4gSW50UmVjdCgpOyB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHJldmlzaW9uIDY0MjkxKQorKysg
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5
IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBwYWdlKQogICAgICwgbV9odG1sNVRyZWVCdWls
ZGVyRW5hYmxlZChmYWxzZSkgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRvIG5vdCB1c2UuCiAg
ICAgLCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChmYWxzZSkKICAgICAsIG1fZG5zUHJl
ZmV0Y2hpbmdFbmFibGVkKHRydWUpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU4pCisgICAgLCBtX2Z1
bGxTY3JlZW5FbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX21lbW9yeUluZm9FbmFibGVk
KGZhbHNlKQogICAgICwgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uKGZhbHNlKQogewpJbmRl
eDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgJKHJldmlzaW9uIDY0MjkxKQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMxMyw2ICszMTMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChib29sIGZsYWcpIHsgbV9w
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgcGFnaW5h
dGVEdXJpbmdMYXlvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0ZUR1cmluZ0xh
eW91dEVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOKQorICAgICAgICB2b2lkIHNl
dEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5FbmFibGVkID0gZmxh
ZzsgfQorICAgICAgICBib29sIGZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1f
ZnVsbFNjcmVlbkVuYWJsZWQ7IH0KKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5m
b0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fbWVtb3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAgICAg
ICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUluZm9F
bmFibGVkOyB9CiAKQEAgLTQwNyw2ICs0MTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIGJvb2wgbV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxldGVk
IHNvb24sIGRvIG5vdCB1c2UuCiAgICAgICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVu
YWJsZWQgOiAxOwogICAgICAgICBib29sIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTikKKyAgICAgICAgYm9vbCBtX2Z1bGxTY3JlZW5FbmFibGVkIDog
MTsKKyNlbmRpZgogICAgICAgICBib29sIG1fbWVtb3J5SW5mb0VuYWJsZWQ6IDE7CiAgICAgICAg
IGJvb2wgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uOiAxOwogICAgIApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gNjQyOTEpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTc3Niw3ICs3NzYsMTAgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVu
QnV0dG9uRQogdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVy
RnVsbHNjcmVlbigpOworICAgICAgICBpZiAobWVkaWFFbGVtZW50KCktPmlzRnVsbHNjcmVlbigp
KQorICAgICAgICAgICAgbWVkaWFFbGVtZW50KCktPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVs
ZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA2NDI5MSkKKysr
IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc5LDYgKzc5LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVURVJfSE9SSVpP
TlRBTF9CQVIsIE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwgTUVURVJfSE9SSVpPTlRBTF9TVUJP
UFRJTUFMLCBNRVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19HT09ELAogICAgIE1FVEVSX1ZFUlRJ
Q0FMX0JBUiwgTUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVURVJfVkVSVElDQUxfU1VCT1BUSU1B
TCwgTUVURVJfVkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAogICAgIEFGVEVSX0xBU1RfSU5URVJO
QUxfUFNFVURPSUQsCisgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQywgRlVMTF9TQ1JF
RU5fUk9PVF9XSVRIX1RBUkdFVCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9M
SU5FLAogICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEID0gRklMRV9VUExPQURfQlVUVE9OLAog
ICAgIFBVQkxJQ19QU0VVRE9JRF9NQVNLID0gKCgxIDw8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lE
KSAtIDEpICYgfigoMSA8PCBGSVJTVF9QVUJMSUNfUFNFVURPSUQpIC0gMSkK
</data>
<flag name="review"
          id="51242"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63360</attachid>
            <date>2010-08-03 11:35:21 -0700</date>
            <delta_ts>2010-08-05 11:03:43 -0700</delta_ts>
            <desc>FullScree-LayoutTests</desc>
            <filename>FullScreen-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>18231</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0NTY1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2Ny
ZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAgVGVzdHMgdGhl
IG5ldyBmdWxsIHNjcmVlbiBBUEk6CisgICAgICAgIAorICAgICAgICBmdWxsLXNjcmVlbi1hcGku
aHRtbDogdGVzdHMgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGFwaXMu
CisgICAgICAgIGZ1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbDogdGVzdHMgdGhhdCBjbGllbnRzIGNh
biByZXF1ZXN0IHRoZSBicm93c2VyIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUgc3VjY2Vzc2Z1bGx5
LgorICAgICAgICBmdWxsLXNjcmVlbi1jc3MuaHRtbDogdGVzdHMgdGhhdCB0aGUgbmV3IGZ1bGwg
c2NyZWVuIHBzZXVkbyBjbGFzc2VzIGFyZSBhcHBsaWVkIG9uY2UgZnVsbCBzY3JlZW4gbW9kZSBp
cyBlbnRlcmVkLgorCisgICAgICAgICogZnVsbHNjcmVlbjogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoZGlzYWJsZUZ1bGxUZXN0
RGV0YWlsc1ByaW50aW5nKToKKyAgICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEFu
ZEVuZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAgICAg
IChyZXBvcnRFeHBlY3RlZCk6CisgICAgICAgIChydW5TaWxlbnRseSk6CisgICAgICAgIChydW4p
OgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5f
ZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZv
ckV2ZW50VGVzdEFuZEVuZCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRGYWlsKToKKyAgICAg
ICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZv
ckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh0ZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKGVuZFRl
c3QpOgorICAgICAgICAoZW5kVGVzdExhdGVyKToKKyAgICAgICAgKGZhaWxUZXN0SW4pOgorICAg
ICAgICAoZmFpbFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAgKGNvbnNvbGVX
cml0ZSk6CisgICAgICAgIChyZWxhdGl2ZVVSTCk6CisgICAgICAgIChpc0luVGltZVJhbmdlcyk6
CisKIDIwMTAtMDgtMDMgIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdIEluY29ycmVjdCBrZXlJZGVudGlmaWVyIGZvciBwcmludCBzY3JlZW4g
a2V5IGV2ZW50cwpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tYXBpLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdElzRnVsbFNjcmVlbiA9PSAnZmFsc2Un
KSBPSworRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuICE9ICd1bmRl
ZmluZWQnKSBPSworRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0
aEtleXMgIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q2FuY2Vs
RnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ251bGwnKSBPSworRVhQRUNURUQgKGRvY3VtZW50
Lm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA9PSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoc3Bhbi53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEIChzcGFu
LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMgIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBF
Q1RFRCAoc3Bhbi5vbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UgIT0gJ251bGwnKSBPSworRVhQRUNU
RUQgKGlmcmFtZS53ZWJraXRBbGxvd0Z1bGxTY3JlZW4gPT0gJ3RydWUnKSBPSworRVhQRUNURUQg
KGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlJyk7ICE9ICdudWxs
JykgT0sKK0VORCBPRiBURVNUCisgCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWFwaS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tYXBpLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLWFwaS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIyIEBACis8Ym9k
eT4KKzxzY3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+Cis8c3BhbiBvbndl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2U9ImNvbnNvbGUud3JpdGUoJ3JlYWNoZWQnKTsiPjwvc3Bhbj4K
KzxpZnJhbWUgd2Via2l0QWxsb3dGdWxsU2NyZWVuPSJ0cnVlIj48L2lmcmFtZT4KKzxzY3JpcHQ+
CisgICAgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisJ
dGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRJc0Z1bGxTY3JlZW4iLCBmYWxzZSk7CisJdGVz
dEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIsIHVuZGVmaW5lZCwg
IiE9Iik7CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldp
dGhLZXlzIiwgdW5kZWZpbmVkLCAiIT0iKTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtp
dENhbmNlbEZ1bGxTY3JlZW4iLCB1bmRlZmluZWQsICIhPSIpOworCXRlc3RFeHBlY3RlZCgiZG9j
dW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgbnVsbCk7CisJdGVzdEV4cGVj
dGVkKCJkb2N1bWVudC5vbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UiLCBudWxsKQorCXRlc3RFeHBl
Y3RlZCgic3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiIsIHVuZGVmaW5lZCwgIiE9Iik7CisJ
dGVzdEV4cGVjdGVkKCJzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMiLCB1bmRl
ZmluZWQsICIhPSIpOworCXRlc3RFeHBlY3RlZCgic3Bhbi5vbndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UiLCBudWxsLCAiIT0iKQorCQorCWlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdpZnJhbWUnKVswXTsKKwl0ZXN0RXhwZWN0ZWQoImlmcmFtZS53ZWJraXRBbGxvd0Z1bGxT
Y3JlZW4iLHRydWUpOworCQorCXRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2UnKTsiLCBudWxsLCAiIT0iKQorCWVuZFRlc3QoKTsKKzwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
Y3NzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tY3NzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBA
CitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtp
dEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSwor
RVhQRUNURUQgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3BhbiwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICdyZ2IoMCwgMjU1LCAw
KScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShk
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91
bmQtY29sb3InKSA9PSAncmdiKDI1NSwgMCwgMCknKSBPSworRVhQRUNURUQgKGRvY3VtZW50LmRl
ZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxs
KS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpID09ICdyZ2IoMCwgMCwgMjU1KScpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3Nz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWNzcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8Ym9keT4KKzxzY3JpcHQg
c3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgOi13ZWJraXQt
ZnVsbC1zY3JlZW4geyBiYWNrZ3JvdW5kOiBsaW1lOyB9CisgICAgOi13ZWJraXQtZnVsbC1zY3Jl
ZW4tZG9jIHsgY29sb3I6IGJsdWU7IH0KKyAgICA6LXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdp
dGgtdGFyZ2V0IHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgorPHNwYW4+PC9zcGFuPgor
PHNjcmlwdD4KKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdz
cGFuJylbMF07CisgICAgdmFyIHRlc3RDU1MgPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB0
ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsc3Bh
bik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0
ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJyki
LCAicmdiKDAsIDI1NSwgMCkiKTsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZh
dWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCku
Z2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgInJnYigyNTUsIDAsIDApIik7
CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Nv
bG9yJykiLCAicmdiKDAsIDAsIDI1NSkiKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH07Cisg
ICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIHRlc3RD
U1MpOworICAgIHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKzwvc2NyaXB0PgpJbmRl
eDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3ItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVtb3ZlLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAn
W29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkK
K0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tv
YmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5hY3R1YWwudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFu
Y2VzdG9yLmFjdHVhbC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5hY3R1YWwudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9j
dW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2JqZWN0IEhUTUxFbGVt
ZW50XScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3Vt
ZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MSHRtbEVs
ZW1lbnRdJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3IuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9y
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzAgQEAKKzxib2R5PgorPHNjcmlwdCBzcmM9
ZnVsbC1zY3JlZW4tdGVzdC5qcz48L3NjcmlwdD4KKzxkaXY+PHNwYW4+PC9zcGFuPjwvZGl2Pgor
PHNjcmlwdD4KKyAgICB2YXIgY2FsbGJhY2s7CisgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0g
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAg
ICBjYWxsYmFjayhldmVudCkKKyAgICB9OworICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKKyAgICB2YXIgc3Bh
biA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisgICAgdmFyIGRp
diA9IHNwYW4ucGFyZW50Tm9kZTsKKworICAgIHZhciBzcGFuSXNGdWxsU2NyZWVuID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudElzRnVsbFNjcmVlbjsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQiLCBzcGFuKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkaXYpOworICAg
IH07CisKKyAgICB2YXIgZG9jdW1lbnRJc0Z1bGxTY3JlZW4gPSBmdW5jdGlvbihldmVudCkgewor
ICAgICAgICBjYWxsYmFjayA9IG51bGw7CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQu
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
KTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH07CisKKyAgICBjYWxsYmFjayA9IHNwYW5Jc0Z1
bGxTY3JlZW47CisgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworPC9zY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1y
ZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQu
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2JqZWN0IEhUTUxFbGVtZW50XScp
IE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50Lndl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MSHRtbEVsZW1lbnRd
JykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcmVtb3ZlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZW1vdmUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjkg
QEAKKzxib2R5PgorPHNjcmlwdCBzcmM9ZnVsbC1zY3JlZW4tdGVzdC5qcz48L3NjcmlwdD4KKzxk
aXY+PHNwYW4+PC9zcGFuPjwvZGl2PgorPHNjcmlwdD4KKyAgICB2YXIgY2FsbGJhY2s7CisgICAg
dmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBp
ZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICB9OworICAgIHdh
aXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVu
Q2hhbmdlZCk7CisgICAgCisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgnc3BhbicpWzBdOworICAgIAorICAgIHZhciBzcGFuSXNGdWxsU2NyZWVuID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudElzRnVsbFNjcmVlbjsKKyAg
ICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1l
bnQiLCBzcGFuKTsKKyAgICAgICAgc3Bhbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNwYW4pOwor
ICAgIH07CisgICAgCisgICAgdmFyIGRvY3VtZW50SXNGdWxsU2NyZWVuID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICAgICAgY2FsbGJhY2sgPSBudWxsOworICAgICAgICB0ZXN0RXhwZWN0ZWQoImRv
Y3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9OworICAgIAorICAgIGNhbGxiYWNr
ID0gc3BhbklzRnVsbFNjcmVlbjsKKyAgICBzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVx
dWVzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMyBAQAorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkgVEVTVChk
b2N1bWVudC53ZWJraXRJc0Z1bGxTY3JlZW49PXRydWUpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4
OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVz
dC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKKzxib2R5PgorPHNjcmlwdCBzcmM9
ZnVsbC1zY3JlZW4tdGVzdC5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgd2FpdEZvckV2ZW50
VGVzdEFuZEVuZChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCAiZG9jdW1lbnQu
d2Via2l0SXNGdWxsU2NyZWVuPT10cnVlIik7CisgICAgaWYgKGRvY3VtZW50LndlYmtpdFJlcXVl
c3RGdWxsU2NyZWVuID09IHVuZGVmaW5lZCkKKyAgICAgICAgZW5kVGVzdCgpOworICAgIGRvY3Vt
ZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjIwIEBACisKK3ZhciBjb25zb2xlID0gbnVsbDsKK3ZhciBwcmludEZ1bGxUZXN0RGV0
YWlscyA9IHRydWU7IC8vIFRoaXMgaXMgb3B0aW9uYWx5IHN3aXRjaGVkIG9mIGJ5IHRlc3Qgd2hv
c2UgdGVzdGVkIHZhbHVlcyBjYW4gZGlmZmVyLiAoc2VlIGRpc2FibGVGdWxsVGVzdERldGFpbHNQ
cmludGluZygpKQordmFyIEZhaWxlZCA9IGZhbHNlOworCitsb2dDb25zb2xlKCk7CisKK2lmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwor
fQorCitmdW5jdGlvbiBkaXNhYmxlRnVsbFRlc3REZXRhaWxzUHJpbnRpbmcoKQoreworICAgIHBy
aW50RnVsbFRlc3REZXRhaWxzID0gZmFsc2U7Cit9CisKK2Z1bmN0aW9uIGxvZ0NvbnNvbGUoKQor
eworICAgIGlmICghY29uc29sZSAmJiBkb2N1bWVudC5ib2R5KSB7CisgICAgICAgIGNvbnNvbGUg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5h
cHBlbmRDaGlsZChjb25zb2xlKTsKKyAgICB9CisgICAgcmV0dXJuIGNvbnNvbGU7Cit9CisKK2Z1
bmN0aW9uIHRlc3RBbmRFbmQodGVzdEZ1bmNTdHJpbmcpCit7CisgICAgdGVzdCh0ZXN0RnVuY1N0
cmluZywgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQor
eworICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIlRFU1QoIiArIHRlc3RGdW5j
U3RyaW5nICsgIikiKTsKKyAgICBpZiAoZW5kaXQpCisgICAgICAgIGVuZFRlc3QoKTsgIAorfQor
CitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkLCBjb21wYXJp
c29uKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNT
dHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgaWYgKGNvbXBhcmlzb24gPT09IHVuZGVm
aW5lZCkKKyAgICAgICAgY29tcGFyaXNvbiA9ICc9PSc7CisKKyAgICB2YXIgc3VjY2VzcyA9IGZh
bHNlOworICAgIHN3aXRjaCAoY29tcGFyaXNvbikKKyAgICB7CisgICAgICAgIGNhc2UgJzwnOiAg
IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJzw9
Jzogc3VjY2VzcyA9IG9ic2VydmVkIDw9IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAn
Pic6ICAgc3VjY2VzcyA9IG9ic2VydmVkID4gIGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2Fz
ZSAnPj0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPj0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBj
YXNlICchPSc6ICBzdWNjZXNzID0gb2JzZXJ2ZWQgIT0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAg
ICBjYXNlICc9PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA9PSBleHBlY3RlZDsgYnJlYWs7CisgICAg
fQorICAgIAorICAgIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21w
YXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit9CisKK3ZhciB0ZXN0TnVtYmVyID0gMDsKKwor
ZnVuY3Rpb24gcmVwb3J0RXhwZWN0ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlz
b24sIGV4cGVjdGVkLCBvYnNlcnZlZCkKK3sKKyAgICB0ZXN0TnVtYmVyKys7CisKKyAgICB2YXIg
bXNnID0gIlRlc3QgIiArIHRlc3ROdW1iZXI7CisKKyAgICBpZiAocHJpbnRGdWxsVGVzdERldGFp
bHMgfHwgIXN1Y2Nlc3MpCisgICAgICAgIG1zZyA9ICJFWFBFQ1RFRCAoPGVtPiIgKyB0ZXN0RnVu
Y1N0cmluZyArICIgPC9lbT4iICsgY29tcGFyaXNvbiArICIgJzxlbT4iICsgZXhwZWN0ZWQgKyAi
PC9lbT4nKSI7CisKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgIG1zZyArPSAgIiwgT0JTRVJW
RUQgJzxlbT4iICsgb2JzZXJ2ZWQgKyAiPC9lbT4nIjsKKworICAgIGxvZ1Jlc3VsdChzdWNjZXNz
LCBtc2cpOworfQorCitmdW5jdGlvbiBydW5TaWxlbnRseSh0ZXN0RnVuY1N0cmluZykKK3sKKyAg
ICBpZiAocHJpbnRGdWxsVGVzdERldGFpbHMpCisgICAgICAgIGNvbnNvbGVXcml0ZSgiUlVOKCIg
KyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0RnVu
Y1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgaWYgKCFwcmludEZ1bGxUZXN0
RGV0YWlscykgeworICAgICAgICAgICAgLy8gTm8gZGV0YWlscyB3ZXJlIHByaW50ZWQgcHJldmlv
dXMsIGdpdmUgc29tZSBub3cuCisgICAgICAgICAgICAvLyBUaGlzIHdpbGwgYmUgaGVscGZ1bCBp
biBjYXNlIG9mIGVycm9yLgorICAgICAgICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgIkVycm9yIGlu
IFJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKToiKTsKKyAgICAgICAgfQorICAgICAgICBsb2dS
ZXN1bHQoRmFpbGVkLCAiPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+IitleCsiPC9zcGFuPiIpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gcnVuKHRlc3RGdW5jU3RyaW5nKQoreworICAgIGNvbnNvbGVX
cml0ZSgiUlVOKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgdHJ5IHsKKyAgICAgICAg
ZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgY29uc29s
ZVdyaXRlKGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChlbGVt
ZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50KGVsZW1lbnQs
IGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50
KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50
Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBl
dmVudE5hbWUgKyAiKSIpOworCisgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgZnVuYyhl
dmVudCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0
KCk7ICAgIAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUs
IF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFuZEVuZChl
bGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVudEFu
ZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9CisKK2Z1
bmN0aW9uIHdhaXRGb3JFdmVudEFuZEZhaWwoZWxlbWVudCwgZXZlbnROYW1lKQoreworICAgIHdh
aXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVlKTsKK30K
KworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RG
dW5jU3RyaW5nLCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkK
KyAgICB7CisgICAgICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVWRU5UKCIg
KyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgICAg
IGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorICAgIAorICAg
IGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30K
KworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbih0ZXN0U3RyaW5nLCBleGNlcHRpb25TdHJpbmcpCit7
CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0U3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkg
eyAKKyAgICAgICAgbG9nUmVzdWx0KGV4LmNvZGUgPT0gZXZhbChleGNlcHRpb25TdHJpbmcpLCAi
VEVTVCgiICsgdGVzdFN0cmluZyArICIpIFRIUk9XUygiK2V4Y2VwdGlvblN0cmluZysiKSIpOwor
ICAgIH0KK30KKwordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkK
K3sKKyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1
ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRU
ZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gZW5kVGVzdExh
dGVyKCkKK3sKKyAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDI1MCk7Cit9CisKK2Z1bmN0aW9uIGZh
aWxUZXN0SW4obXMpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGNv
bnNvbGVXcml0ZSgiRkFJTDogZGlkIG5vdCBlbmQgZmFzdCBlbm91Z2giKTsKKyAgICAgICAgZW5k
VGVzdCgpOworICAgIH0sIG1zKTsKK30KKworZnVuY3Rpb24gZmFpbFRlc3QodGV4dCkKK3sKKyAg
ICBsb2dSZXN1bHQoRmFpbGVkLCB0ZXh0KTsKKyAgICBlbmRUZXN0KCk7Cit9CisKKworZnVuY3Rp
b24gbG9nUmVzdWx0KHN1Y2Nlc3MsIHRleHQpCit7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAg
IGNvbnNvbGVXcml0ZSh0ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFu
PiIpOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxl
PSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0
ZXh0KQoreworICAgIGlmICh0ZXN0RW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBsb2dDb25z
b2xlKCkuaW5uZXJIVE1MICs9IHRleHQgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHJlbGF0aXZl
VVJMKHVybCkKK3sKKyAgICByZXR1cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhPZignL21lZGlhLycp
KzcpOworfQorCisKK2Z1bmN0aW9uIGlzSW5UaW1lUmFuZ2VzKHJhbmdlcywgdGltZSkKK3sKKyAg
ICB2YXIgaSA9IDA7CisgICAgZm9yIChpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICBpZiAodGltZSA+PSByYW5nZXMuc3RhcnQoaSkgJiYgdGltZSA8PSByYW5nZXMuZW5k
KGkpKSB7CisgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10
d2ljZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi10d2ljZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXR3aWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQg
KGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1M
RWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChk
b2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0
bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXR3aWNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI5IEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3Jp
cHQ+Cis8c3Bhbj48L3NwYW4+Cis8c2NyaXB0PgorICAgIHZhciBjYWxsYmFjazsKKyAgICB2YXIg
ZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAgIH07CisgICAgd2FpdEZv
ckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFu
Z2VkKTsKKyAgICAKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdzcGFuJylbMF07CisKKyAgICB2YXIgc3BhbklzRnVsbFNjcmVlbiA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCIsIHNwYW4pOworICAgICAgICBjYWxsYmFjayA9IGRvY3VtZW50SXNGdWxsU2NyZWVuOwor
ICAgICAgICBkb2N1bWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIH07CisgICAg
CisgICAgdmFyIGRvY3VtZW50SXNGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgIHRl
c3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICAgICAgY2FsbGJhY2sgPSBudWxsOworICAgICAg
ICBlbmRUZXN0KCk7CisgICAgfTsKKworICAgIGNhbGxiYWNrID0gc3BhbklzRnVsbFNjcmVlbjsK
KyAgICBzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7Cis8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63361</attachid>
            <date>2010-08-03 11:43:27 -0700</date>
            <delta_ts>2010-08-03 17:48:31 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>62283</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NTY1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU5fQVBJIG1vZGUgZm9yIHRoZSBNYWMg
KGV4Y2VwdCBpUGhvbmUpLgorCiAyMDEwLTA4LTAyICBLZXZpbiBPbGxpdmllciAgPGtldmlub0B0
aGVvbGxpdmllcnMuY29tPgogCiAgICAgICAgIFt3eF0gQnVpbGQgZml4IGFmdGVyIHJlbW92YWwg
b2YgbmVlZCB0byBjb21waWxlIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAKSW5kZXg6IEph
dmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NDU2NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9Q
bGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiArNTk0LDcgQEAKICNlbmRpZgogI2Rl
ZmluZSBIQVZFX1JFQURMSU5FIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVSIDEKKyNkZWZp
bmUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMpICYmICFQ
TEFURk9STShJUEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJDb3JlL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjQ1NjUp
CisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0MSBAQAor
MjAxMC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlwdCBBUEkg
dG8gYWxsb3cgYSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9wcm9ibGVt
LzY4Njc3OTUKKyAgICAgICAgCisgICAgICAgIE1vemlsbGEgaGFzIHByb3Bvc2VkIGEgbmV3IHNl
dCBvZiBKYXZhU2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55IGVsZW1lbnQgaW4KKyAgICAgICAg
YSBkb2N1bWVudCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBjdXJyZW50IHJldmlzaW9uIG9mIHRo
ZWlyIHByb3Bvc2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQgaGVyZToKKyAgICAgICAgPGh0dHBz
Oi8vd2lraS5tb3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9R2Vja286RnVsbFNjcmVlbkFQSSZv
bGRpZD0yMzU2MDE+CisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zZWQgc3BlY2lmaWNhdGlv
biBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgRG9jdW1lbnQ6Cisg
ICAgICAgIC0gVGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1lbnQ6CisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2Ny
ZWVuV2l0aEtleXMoKQorICAgICAgICAgICAgKyB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4oKQorICAg
ICAgICAtIFRocmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3VtZW50OgorICAgICAgICAgICAgKyBy
ZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuCisgICAgICAgICAgICArIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRoS2V5cworICAgICAgICAgICAgKyAo
b3B0aW9uYWwpIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudAorICAgICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6CisgICAgICAgIC0gVHdvIG5ldyBt
ZXRob2RzIG9uIEVsZW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4o
KQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAg
ICAKKyAgICAgICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAgICAgIC0gT25lIG5ldyBjb250ZW50
IGF0dHJpYnV0ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxsU2NyZWVuCisgICAgICAgICAgICAK
KyAgICAgICAgRXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcgZXZlbnQ6CisgICAgICAgICAgICAr
IGZ1bGxTY3JlZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAgIENTUyBQc2V1ZG8tY2xhc3NlczoK
KyAgICAgICAgLSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6CisgICAgICAgICAgICArIDpmdWxs
LXNjcmVlbgorICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tZG9jCisgICAgICAgICAgICArIDpm
dWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAgIAorICAgICAgICBGb3IgV2ViS2l0
J3MgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBhYm92ZSBuZXcgQVBJcyB3aWxsIGJl
IHByZWZpeGVkIHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9yICItd2Via2l0IiB3aGVyZSBhcHBy
b3ByaWF0ZS4KKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0czoKKyAgICAgICAgTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAgICAgIExheW91dFRlc3RzL2Z1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAgICAgICAgUHJvamVjdCBmaWxlIGNo
YW5nZXM6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6
IEFkZGVkIGFuIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBlbnRyeS4KKyAgICAgICAgKiBEZXJpdmVk
U291cmNlcy5tYWtlOiBBZGRlZCBydWxlcyBmb3IgZnVsbHNjcmVlbi5jc3MgYW5kIFdlYkNvcmUu
RnVsbFNjcmVlbi5leHAuCisgICAgICAgICogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDogQWRkZWQg
ZXhwb3J0IHN5bWJvbHMgZm9yIERvY3VtZW50IGFuZCBFbGVtZW50IGZ1bmN0aW9ucy4KKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyBzb3VyY2UgZmlsZXMg
YWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgSURMIGNoYW5nZXM6CisgICAgICAgICog
ZG9tL0RvY3VtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIERv
Y3VtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2UuCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRWxlbWVudCdzIGphdmFzY3Jp
cHQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsOiBBZGRl
ZCB0aGUgYWxsb3dGdWxsU2NyZWVuIGF0dHJpYnV0ZS4KKworICAgICAgICBTb3VyY2UgY2hhbmdl
czoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDogRXhwb3Nl
ZCBEb2N1bWVudCBhbmQgRWxlbWVudCBmdWxsc2NyZWVuIGZ1bmN0aW9ucyBpbiB0aGUgRE9NIGNs
YXNzZXMuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDogQWRkZWQgbmV3IEZ1bGxTY3Jl
ZW4gcHNldWRvLWNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6cHNldWRv
SWQpOiAKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU2VsZWN0b3IuaDogCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KTogQWRkZWQg
bmV3IGZ1bGwtc2NyZWVuIHBzZXVkbyBjbGFzc2VzIHRvIHRoZSBQc2V1ZG9UeXBlIGVudW0uCisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNvcmU6Omxv
YWRGdWxsRGVmYXVsdFN0eWxlKTogUHVsbCB0aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0
aGUgZGVmYXVsdFN0eWxlIGFuZCB0aGUgZGVmYXVsdFF1aXJrc1N0eWxlIHNoZWV0cy4KKyAgICAg
ICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVu
LmNzcyBzaGVldCBpbnRvIHRoZSBkZWZhdWx0U3R5bGUgc2hlZXQuCisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IpOiBD
aGVjayBmb3IgdGhlIG5ldyBGdWxsU2NyZWVuIHBzZXVkbyBjbGFzc2VzLgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KTogU3VwcG9ydCBjcmVhdGlu
ZyBhICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlIiBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZCk6IFN1cHBvcnQgbGlzdGVuaW5nIGZvciBh
ICJ3ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQiCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKTogUGFzc2Vz
IHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZW50ZXIgZnVsbCBzY3JlZW4gbW9kZS4K
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKTogUGFz
c2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZXhpdCBmdWxsIHNjcmVlbiBtb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KTogU2V0cyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVs
bC1zY3JlZW4gZWxlbWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDdXJyZW50bHkgYSBu
by1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3Jl
ZW5Gb3JFbGVtZW50KTogQ3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ2xlYXJzIHRoZSBGdWxs
U2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVtZW50IGFuZCBpdHMg
ZG9jdW1lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IEFkZGVkIGNvbnN0IGFjY2Vzc29y
cyBmb3IgbmV3IGZ1bGwtc2NyZWVuIGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjopOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdElzRnVs
bFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQpOiBBY2Nlc3NvciBm
b3IgbV9pc0Z1bGxTY3JlbiBhbmQgbV9hcmVLZXlzRW5hYmxlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQpOiBBY2Nlc3NvciBmb3Ig
bV9mdWxsU2NyZWVuRWxlbWVudC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbik6IENhbGxzIERvY3Vt
ZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cy4gCisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKTogQ2Fs
bHMgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLgor
ICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6IE92ZXJy
aWRlZCBieSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50
Lmg6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAgKiBkb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCk6CisgICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGw6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogUGFyc2UgdGhlIG5ldyAib253ZWJraXRm
dWxsc2NyZWVuY2hhbmdlIiBhdHRyaWJ1dGUgYW5kIHJlZ2lzdGVyIGEgbGlzdGVuZXIuCisgICAg
ICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElG
cmFtZUVsZW1lbnQ6OndlYmtpdEFsbG93RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93
RnVsbFNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50OjpzZXRXZWJr
aXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4uCisgICAg
ICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDogUmUtaW1wbGVtZW50ZWQgdGhlIEhUTUxN
ZWRpYUVsZW1lbnQgZnVsbCBzY3JlZW4gc3VwcG9ydCBpbiB0ZXJtcyBvZiB0aGUgbmV3IChnZW5l
cmljKSBmdWxsIHNjcmVlbiBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxl
bWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAgICAgICAq
IGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6
CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvckVs
ZW1lbnQpOiBQYXNzIHRocm91Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAg
IChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBDcmVh
dGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgY3Vy
cmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZXhpdEZ1
bGxzY3JlZW5Gb3JFbGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFu
ZCBwYXNzIHRocm91Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgICogcGFn
ZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgor
ICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkIGEgbmV3IHNldHRpbmcgdG8gY29udHJvbCBy
dW50aW1lIHN1cHBvcnQgZm9yIGZ1bGwgc2NyZWVuIG1vZGUgKGRlZmF1bHRzIHRvIG9mZikKKyAg
ICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRGdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXR0aW5nczo6ZnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAgICAqIHJlbmRl
cmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRoZSBm
dWxsIHNjcmVlbiBidXR0b24gbm93IHRvZ2dsZXMgZnVsbCBzY3JlZW4gbW9kZSAocHJldmlvdXNs
eSwgaXQgb25seSBlbnRlcmVkKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGVDb25zdGFudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisKIDIwMTAtMDgtMDMgIEFsZXhh
bmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKb3NlcGggUGVjb3Jhcm8uCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA2NDU2NSkK
KysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDU4LDYg
KzQ1OCw3IEBAIERPTV9DTEFTU0VTID0gXAogICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUgXAog
ICAgIFdlYktpdENTU01hdHJpeCBcCiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAg
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCBcCiAgICAgV2ViS2l0UG9pbnQgXAogICAgIFdl
YktpdFRyYW5zaXRpb25FdmVudCBcCiAgICAgV2ViU29ja2V0IFwKQEAgLTY2OSw2ICs2NzAsMTAg
QEAgaWZlcSAoJChPUyksTUFDT1MpCiBlbmRpZgogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5n
IEVOQUJMRV9GVUxMU0NSRUVOX0FQSSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFND
UkVFTl9BUEkpCisgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NU
WUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJB
Z2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FH
RU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5j
cHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA2NDU2
NSkKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NzAsNiAr
MTQ3MCwxMyBAQCBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGF1ZGlvVGFnRQogX19aTjdXZWJDb3Jl
OUhUTUxOYW1lczh2aWRlb1RhZ0UKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorX19aTjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlOERvY3VtZW50MzR3ZWJraXREaWRFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0
d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dl
YkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183
RWxlbWVudEUKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykK
IF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNHF1b3RhRm9yT3JpZ2luRVBL
TlNfMTRTZWN1cml0eU9yaWdpbkVSeAogX19aTjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZTE0c2V0TWF4aW11bVNpemVFeApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25z
L0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTc0
LDYgKzc0LDcgQEAgRU5BQkxFX0ZJTEVfUkVBREVSX21hY29zeCA9IEVOQUJMRV9GSUxFXwogCiBF
TkFCTEVfRklMRV9XUklURVIgPSA7CiBFTkFCTEVfRklMRV9TWVNURU0gPSA7CitFTkFCTEVfRlVM
TFNDUkVFTl9BUEkgPSBFTkFCTEVfRlVMTFNDUkVFTl9BUEk7CiBFTkFCTEVfR0VPTE9DQVRJT04g
PSBFTkFCTEVfR0VPTE9DQVRJT047CiAKIEVOQUJMRV9JQ09OREFUQUJBU0UgPSAkKEVOQUJMRV9J
Q09OREFUQUJBU0VfJChSRUFMX1BMQVRGT1JNX05BTUUpKTsKQEAgLTEyMyw0ICsxMjQsNCBAQCBF
TkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9YUEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9Y
U0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJF
RkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJM
RV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5U
X0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQp
ICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxF
X0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNP
VVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJ
TEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQo
RU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFCTEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5E
RVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5QVVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBU
X0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwpICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVf
Tk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJM
RV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JVQlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxF
X1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9TVkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQo
RU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFCTEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVO
QUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NWR19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZH
X1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5BQkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJf
VElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5BQkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVAp
ICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9YU0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5B
QkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVS
SU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChF
TkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFC
TEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJ
T04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVO
QUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIp
ICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVM
TFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDk5Nyw2ICs0OTk3LDEzIEBACiAJCUM1RUJE
RDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1
NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEy
ODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEw
MDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8q
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CisJCUNEQTc5QTczMTFFN0E0Qzcw
MDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsgfTsKKwkJQ0RBNzlBNzQxMUU3QTRD
NzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OUE3MjExRTdBNEM3MDA4NzhE
OTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLzsgfTsKKwkJQ0RFMjA4NEEx
MjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NDcxMjAzNTVF
NDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlD
REUyMDg0QjEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4
NDgxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSAq
LzsgfTsKKwkJQ0RFMjA4NEMxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDREUyMDg0OTEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50SW50ZXJuYWwuaCAqLzsgfTsKKwkJQ0RFMjA4NTIxMjAzNTYxRTAwRDEwQTc1
IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBK
U1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi87IH07CisJCUNERTIwODUzMTIwMzU2
MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NTExMjAzNTYxRTAwRDEw
QTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi87IH07CiAJCUNFMDJGMEM0
MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRB
IC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2Rl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE3MkUw
MDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRN
TE5vU2NyaXB0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDRTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVu
dC5jcHAgKi87IH07CkBAIC0xMDcxMyw2ICsxMDcyMCwxNSBAQAogCQlDNUVCREQ4MTEwNUVEREVD
MDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0
aW9uTGlzdExldmVsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlB
QTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8q
IGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNz
czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREUyMDg0NzEyMDM1NUU0MDBE
MTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREUyMDg0ODEyMDM1NUU0MDBEMTBBNzUgLyogRE9N
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDREUyMDg0OTEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50SW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NTAxMjAzNTYxRTAwRDEwQTc1IC8qIEpT
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMg
LyogWm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1
IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzE2Myw2ICsxMzE3OSw5IEBACiAJCQkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1
IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjQ3MEU0Q0VGREQw
MDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi8sCiAJCQkJMzFDMEZGNDgw
RTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8s
CisJCQkJQ0RFMjA4NDcxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5oICovLAorCQkJCUNERTIwODQ4MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gKi8sCisJCQkJQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1
IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggKi8sCiAJCQkJODVD
N0Y1RTUwQUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQuaCAqLywKIAkJCQk4NUM3RjVF
NjBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSAqLywKIAkJCSk7CkBAIC0xNDgy
Miw2ICsxNDg0MSw4IEBACiAJCQkJMzFDMEZGM0EwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0
QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYzQjBFNENFRkFDMDA3RDZGRTUgLyogSlNX
ZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjNDMEU0Q0VGQUMwMDdENkZF
NSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVudC5oICovLAorCQkJCUNERTIwODUwMTIwMzU2MUUw
MEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RF
MjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmgg
Ki8sCiAJCQkJNjVERjMxRjEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5jcHAgKi8s
CiAJCQkJNjVERjMxRjIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5oICovLAogCQkJ
KTsKQEAgLTE2NzIwLDYgKzE2NzQxLDcgQEAKIAkJCQlCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMg
LyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0RDRBMDBG
NkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAogCQkJCTRDREU1NEVDMEU1
NTc5NzgwMDg5RTI2QyAvKiB3bWwuY3NzICovLAorCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgx
MSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MjYyLDYgKzE3Mjg0LDkgQEAKIAkJCQkzMUMwRkYxQjBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBG
RjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMx
QzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCisJ
CQkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5oICovLAorCQkJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNEQTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdE
NkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFGMEU0Q0VC
NkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYyMDBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCAqLywKQEAgLTE5OTc4
LDYgKzIwMDAzLDEwIEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmlj
b2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8q
IFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUz
MyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4
RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
Q0RFMjA4NEExMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFMjA4NEMxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlD
REUyMDg1MzEyMDM1NjFFMDBEMTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTc4OEMxMTIwNzg1MkMwMEEzN0M0QSAvKiBWaXNpdGVk
TGlua1N0cmF0ZWd5LmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzlEMDA2RDExRjhFMzA4MDA2MDQx
RjIgLyogUG9wdXBNZW51TWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlEMzlEMDA5RDExRjkwN0U2
MDA2MDQxRjIgLyogU2VhcmNoUG9wdXBNZW51TWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTIyMzg2
LDYgKzIyNDE1LDkgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nl
c3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVB
OTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBG
REY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlDREE3
OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUNERTIwODRCMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gaW4gU291cmNlcyAqLywKKwkJCQlDREUyMDg1MjEyMDM1
NjFFMDBEMTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2Vz
LmgJKHJldmlzaW9uIDY0NTY1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUlu
dGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1NiwxMSBAQCBAaW50ZXJmYWNl
IERPTURvY3VtZW50IDogRE9NTm9kZSBXRUJLSVRfCiAtIChET01Ob2RlTGlzdCAqKWdldEVsZW1l
bnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopdGFnbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZF
UlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2Vs
ZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlzdCAq
KXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJL
SVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVO
QUJMRV9GVUxMU0NSRUVOX0FQSQorLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJ
TEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CistICh2b2lkKXdl
YmtpdENhbmNlbEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNl
bmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTURvY3VtZW50RnJhZ21lbnQgOiBET01Ob2RlIFdF
QktJVF9WRVJTSU9OXzFfMwpAQCAtMjI0LDYgKzIyOSwxMCBAQCBAaW50ZXJmYWNlIERPTUVsZW1l
bnQgOiBET01Ob2RlIFdFQktJVF9WCiAtIChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFz
c05hbWU6KE5TU3RyaW5nICopbmFtZSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwog
LSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlM
QUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0
b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80
XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NS
RUVOX0FQSQorLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYKIEBlbmQKIAogQGludGVy
ZmFjZSBET01FbnRpdHkgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtNTY5LDYgKzU3
OCw5IEBAIEBpbnRlcmZhY2UgRE9NSFRNTElGcmFtZUVsZW1lbnQgOiBET01IVE0KIEBwcm9wZXJ0
eShjb3B5KSBOU1N0cmluZyAqd2lkdGg7CiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikgRE9N
RG9jdW1lbnQgKmNvbnRlbnREb2N1bWVudDsKIEBwcm9wZXJ0eShyZWFkb25seSwgcmV0YWluKSBE
T01BYnN0cmFjdFZpZXcgKmNvbnRlbnRXaW5kb3cgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9O
XzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJCitAcHJvcGVydHkoYXNzaWduKSBCT09MIHdlYmtpdEFsbG93RnVsbFNjcmVlbjsK
KyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhUTUxJbWFnZUVsZW1lbnQgOiBET01IVE1M
RWxlbWVudCBXRUJLSVRfVkVSU0lPTl8xXzMKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDY0NTY1KQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0yNDQsNiArMjQ0LDE1IEBAIFBzZXVkb0lkIENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9U
eXAKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAgICAgICByZXR1cm4gRlVM
TF9TQ1JFRU47CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICByZXR1cm4g
RlVMTF9TQ1JFRU5fRE9DOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0
OgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fUk9PVF9XSVRIX1RBUkdFVDsKKyNlbmRpZgor
ICAgICAgICAgICAgCiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246CiAjaWYgRU5BQkxF
KERBVEFMSVNUKQogICAgICAgICByZXR1cm4gSU5QVVRfTElTVF9CVVRUT047CkBAIC00MjIsNiAr
NDMxLDExIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWwKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RQYWdlLCAoImZpcnN0IikpOwog
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsZWZ0UGFnZSwgKCJsZWZ0Iikp
OwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByaWdodFBhZ2UsICgicmln
aHQiKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIERFRklORV9TVEFUSUNfTE9D
QUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4iKSk7Cisg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5Eb2MsICgiLXdl
YmtpdC1mdWxsLXNjcmVlbi1kb2MiKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIGZ1bGxTY3JlZW5Sb290V2l0aFRhcmdldCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLXJv
b3Qtd2l0aC10YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0
cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4qIG5hbWVUb1BzZXVkb1R5cGUgPSAw
OwogICAgIGlmICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAtNTMzLDYgKzU0NywxMSBAQCBzdGF0
aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgICAgIG5hbWVUb1BzZXVk
b1R5cGUtPnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRmlyc3RQYWdl
KTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxlZnRQYWdlLmltcGwoKSwgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KHJp
Z2h0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2UpOworI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3Jl
ZW4uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbik7CisgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuRG9jLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVk
b0Z1bGxTY3JlZW5Eb2MpOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVl
blJvb3RXaXRoVGFyZ2V0LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Sb290
V2l0aFRhcmdldCk7CisjZW5kaWYKICAgICB9CiAgICAgcmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7
CiB9CkBAIC02NjIsNiArNjgxLDExIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKCkgY28KICAgICBjYXNlIFBzZXVkb1NpbmdsZUJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb05v
QnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm90UGFyc2VkOgorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW46CisgICAgY2FzZSBQc2V1ZG9GdWxsU2Ny
ZWVuRG9jOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0OgorI2VuZGlm
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHNldWRvRmlyc3RQYWdlOgogICAgIGNhc2UgUHNl
dWRvTGVmdFBhZ2U6CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlzaW9uIDY0NTY1KQorKysgV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDYgKzIxNywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9MZWZ0UGFnZSwKICAgICAgICAg
ICAgIFBzZXVkb1JpZ2h0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb0ZpcnN0UGFnZSwKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuLAorICAg
ICAgICAgICAgUHNldWRvRnVsbFNjcmVlbkRvYywKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3Jl
ZW5Sb290V2l0aFRhcmdldCwKKyNlbmRpZgogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gTWFy
Z2luQm94VHlwZSB7CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gNjQ1
NjUpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTUzLDYgKzU1MywxNCBAQCBzdGF0aWMgdm9pZCBsb2FkRnVsbERlZmF1bHRTdHlsZSgpCiAg
ICAgU3RyaW5nIHF1aXJrc1J1bGVzID0gU3RyaW5nKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQs
IHNpemVvZihxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRoZW1lKCktPmV4dHJhUXVpcmtzU3R5bGVTaGVldCgpOwogICAgIENTU1N0eWxlU2hlZXQqIHF1
aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0KHF1aXJrc1J1bGVzKTsKICAgICBkZWZhdWx0UXVpcmtz
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCBzY3JlZW5FdmFsKCkpOworICAg
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAvLyBGdWxsLXNjcmVlbiBydWxlcy4K
KyAgICBTdHJpbmcgZnVsbHNjcmVlblJ1bGVzID0gU3RyaW5nKGZ1bGxzY3JlZW5Vc2VyQWdlbnRT
dHlsZVNoZWV0LCBzaXplb2YoZnVsbHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJlbmRl
clRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFEZWZhdWx0U3R5bGVTaGVldCgpOworICAgIENT
U1N0eWxlU2hlZXQqIGZ1bGxzY3JlZW5TaGVldCA9IHBhcnNlVUFTaGVldChmdWxsc2NyZWVuUnVs
ZXMpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZnVsbHNjcmVlblNoZWV0
LCBzY3JlZW5FdmFsKCkpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoZnVsbHNjcmVlblNoZWV0LCBzY3JlZW5FdmFsKCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2
b2lkIGxvYWRTaW1wbGVEZWZhdWx0U3R5bGUoKQpAQCAtMjYyOSw2ICsyNjM3LDM3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjoKICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvRnVsbFNjcmVlbjoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGlu
IHRoZSBmdWxsc2NyZWVuIHN0YXRlLCBhbmQgdGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxsc2Ny
ZWVuIAorICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgaXMgYW4gZWxlbWVudCBpbiB0aGUgZG9j
dW1lbnQsIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAg
ICAgICAgICAgLy8gdGhhdCBlbGVtZW50LiBBbHNvLCBhbiA8aWZyYW1lPiwgPG9iamVjdD4gb3Ig
PGVtYmVkPiBlbGVtZW50IHdob3NlIGNoaWxkIGJyb3dzaW5nIAorICAgICAgICAgICAgICAgIC8v
IGNvbnRleHQncyBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSBoYXMgdGhlICdm
dWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBwbGllZC4KKyAgICAgICAgICAgICAgICBpZiAoIWUt
PmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2Ug
Q1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2M6CisgICAgICAgICAgICAgICAgLy8gV2hp
bGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgdGhlICdmdWxsLXNjcmVl
bi1kb2MnIHBzZXVkb2NsYXNzIGFwcGxpZXMgCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHJv
b3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9j
dW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVu
dEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
RnVsbFNjcmVlblJvb3RXaXRoVGFyZ2V0OgorICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9j
dW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgYW5kIHRoZSBkb2N1bWVudCdzIGN1cnJl
bnQgZnVsbHNjcmVlbiBlbGVtZW50IAorICAgICAgICAgICAgICAgIC8vIGlzIGFuIGVsZW1lbnQg
aW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYy13aXRoLXRhcmdldCcgcHNldWRv
Y2xhc3MgYXBwbGllcyB0byAKKyAgICAgICAgICAgICAgICAvLyB0aGUgcm9vdCBlbGVtZW50IG9m
IHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJr
aXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKCFl
LT5kb2N1bWVudCgpLT5jb250YWlucyhlLT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNj
cmVlbkVsZW1lbnQoKSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6CkluZGV4OiBXZWJDb3JlL2Nzcy9mdWxs
c2NyZWVuLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4uY3NzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI2IEBACis6LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAgcG9zaXRpb246Zml4ZWQ7
CisgICAgdG9wOjA7CisgICAgbGVmdDowOworICAgIHJpZ2h0OjA7CisgICAgYm90dG9tOjA7Cit9
Cis6LXdlYmtpdC1mdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0IHsKKyAgICBvdmVyZmxvdzpo
aWRkZW47Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAxMDAl
OworICAgIGhlaWdodDogMTAwJQorICAgIGltYWdlLWZpdDogZmlsbDsKK30KKworaW1nOi13ZWJr
aXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAg
ICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK3ZpZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOi13
ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQtbWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGJv
dHRvbTogMHB4OworfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMCw2ICsyMDAsMTAgQEAKICNp
bmNsdWRlICJIVE1MTm9TY3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNl
bmRpZgorCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5n
IG5hbWVzcGFjZSBVbmljb2RlOwpAQCAtNDA1LDYgKzQwOSwxMCBAQCBEb2N1bWVudDo6RG9jdW1l
bnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLCiAjZW5kaWYKICAgICAsIG1fd2Vha1JlZmVyZW5jZShE
b2N1bWVudFdlYWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVO
YW1lKGlkQXR0cikKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBtX2lzRnVsbFNj
cmVlbigwKQorICAgICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigwKQorI2VuZGlmCiB7
CiAgICAgbV9kb2N1bWVudCA9IHRoaXM7CiAKQEAgLTQ4Nyw2ICs0OTUsOSBAQCB2b2lkIERvY3Vt
ZW50OjpyZW1vdmVkTGFzdFJlZigpCiAgICAgICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAgICAgICAg
IG1fdGl0bGVFbGVtZW50ID0gMDsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOworI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7
CisjZW5kaWYKIAogICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3YXlz
IHVucmVnaXN0ZXIgSURzLCBkbyBpdCB1cGZyb250IHRvIGF2b2lkIGhhdmluZyBzdGFsZSByZWZl
cmVuY2VzIGluIHRoZSBtYXAuCiAgICAgICAgIG1fZWxlbWVudHNCeUlkLmNsZWFyKCk7CkBAIC0z
MTY0LDYgKzMxNzUsMTUgQEAgdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSog
bgogICAgICAgICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4pOwogICAg
ICAgICBmcmFtZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsK
ICAgICB9CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEFTU0VSVChuKTsK
KyAgICBpZiAobi0+Y29udGFpbnMobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSkpIHsKKyAgICAg
ICAgQVNTRVJUKG4gIT0gZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQt
PmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7Cisg
ICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnRleHRJbnNlcnRlZChOb2RlKiB0ZXh0
LCB1bnNpZ25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTMzMzAsNiArMzM1MCwxMCBA
QCBQYXNzUmVmUHRyPEV2ZW50PiBEb2N1bWVudDo6Y3JlYXRlRXZlbnQoCiAjZW5kaWYKICAgICAg
ICAgZXZlbnQgPSBUb3VjaEV2ZW50OjpjcmVhdGUoKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gIldlYktpdEZ1bGxTY3JlZW5D
aGFuZ2UiKQorICAgICAgICBldmVudCA9IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3Jl
YXRlKCk7CisjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKQogICAgIGVsc2Ug
aWYgKGV2ZW50VHlwZSA9PSAiRGV2aWNlT3JpZW50YXRpb25FdmVudCIpCiAgICAgICAgIGV2ZW50
ID0gRGV2aWNlT3JpZW50YXRpb25FdmVudDo6Y3JlYXRlKCk7CkBAIC0zMzgxLDYgKzM0MDUsMTAg
QEAgdm9pZCBEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQoYwogICAgICAgICAgICAg
cGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5uZWVkVG91Y2hFdmVudHModHJ1ZSk7CiAgICAgfQog
I2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PSBldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50KQorICAgICAgICBh
ZGRMaXN0ZW5lclR5cGUoRlVMTFNDUkVFTkNIQU5HRV9MSVNURU5FUik7CisjZW5kaWYKIH0KIAog
Q1NTU3R5bGVEZWNsYXJhdGlvbiogRG9jdW1lbnQ6OmdldE92ZXJyaWRlU3R5bGUoRWxlbWVudCos
IGNvbnN0IFN0cmluZyYpCkBAIC01MDk0LDUgKzUxMjIsNzkgQEAgSW5zcGVjdG9yQ29udHJvbGxl
ciogRG9jdW1lbnQ6Omluc3BlY3RvcgogICAgIHJldHVybiBwYWdlKCkgPyBwYWdlKCktPmluc3Bl
Y3RvckNvbnRyb2xsZXIoKSA6IDA7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpCit7Cisg
ICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoZG9jdW1lbnRFbGVt
ZW50KCksIGZhbHNlKTsKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW5XaXRoS2V5cygpCit7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0
aEtleXMoZG9jdW1lbnRFbGVtZW50KCksIHRydWUpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCogZWxlbWVu
dCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0
aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
IWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAKKyAg
ICBpZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVs
ZW1lbnQoZWxlbWVudCkpIHsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAg
ICAgIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4gPSBrZXlzRW5hYmxlZDsKKyAgICAgICAg
cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxl
bWVudCk7CisgICAgfQorfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVu
RW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYgKHBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVs
ZW1lbnQuZ2V0KCkpKQorICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1
bGxzY3JlZW5Gb3JFbGVtZW50KG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpOworfQorICAgIAor
dm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQocGFnZSgpICYmIHBhZ2UoKS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSk7CisKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZWxlbWVu
dCA/IGVsZW1lbnQgOiBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICBtX2lzRnVsbFNjcmVlbiA9IHRy
dWU7CisgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5
bGVDaGFuZ2UpOworICAgIGlmIChkb2N1bWVudEVsZW1lbnQoKSAhPSBtX2Z1bGxTY3JlZW5FbGVt
ZW50KQorICAgICAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxs
U3R5bGVDaGFuZ2UpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgdXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOworfQorICAgIAordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6
d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7Cisg
ICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2Ny
ZWVuID0gZmFsc2U7CisgICAgLy8gbV9mdWxsU2NyZWVuRWxlbWVudCBoYXMgYWxyZWFkeSBiZWVu
IGNsZWFyZWQ7IHJlY2FsYyB0aGUgc3R5bGUgb2YgCisgICAgLy8gdGhlIHBhc3NlZCBpbiBlbGVt
ZW50IGluc3RlYWQuCisgICAgaWYgKGVsZW1lbnQpIHsKKyAgICAgICAgZWxlbWVudC0+c2V0TmVl
ZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgICAgICBlbGVtZW50LT5kaXNwYXRj
aEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgICAgICBl
bGVtZW50ID0gMDsKKyAgICB9IGVsc2UKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPmRpc3Bh
dGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgZG9j
dW1lbnRFbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAg
ICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7Cit9CisgICAgCisjZW5kaWYKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQCBwdWJsaWM6CiAgICAg
REVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FU
VFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgRG9jdW1lbnRUeXBlKiBkb2N0eXBl
KCkgY29uc3QgeyByZXR1cm4gbV9kb2NUeXBlLmdldCgpOyB9CiAKQEAgLTY4OCw3ICs2OTEsOCBA
QCBwdWJsaWM6CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElTVEVORVIgICAgICAgICAgICAgICA9
IDB4ODAwLAogICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAw
eDEwMDAsCiAgICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgICA9IDB4
MjAwMCwKLSAgICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0
MDAwCisgICAgICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAw
MCwKKyAgICAgICAgRlVMTFNDUkVFTkNIQU5HRV9MSVNURU5FUiAgICAgICAgICAgID0gMHg4MDAw
LAogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVyVHlwZShMaXN0ZW5lclR5cGUgbGlzdGVu
ZXJUeXBlKSBjb25zdCB7IHJldHVybiAobV9saXN0ZW5lclR5cGVzICYgbGlzdGVuZXJUeXBlKTsg
fQpAQCAtMTAxNCw2ICsxMDE4LDIxIEBAIHB1YmxpYzoKICAgICBNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogICAgIGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGlkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1l
OyB9CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGJvb2wgd2Via2l0SXNG
dWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW47IH0KKyAgICBib29sIHdl
YmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxs
U2NyZWVuICYmIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47IH0KKyAgICBFbGVtZW50KiB3
ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Z1bGxTY3Jl
ZW5FbGVtZW50LmdldCgpOyB9CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOwor
ICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworICAgIHZvaWQgd2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCosIGJvb2wga2V5
c0VuYWJsZWQpOworICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIAorICAg
IHZvaWQgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAg
IHZvaWQgd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAg
dm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2
b2lkIHdlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisjZW5kaWYK
IAogICAgIGJvb2wgd3JpdGVEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd3JpdGVEaXNhYmxl
ZDsgfQogICAgIHZvaWQgc2V0V3JpdGVEaXNhYmxlZChib29sIGZsYWcpIHsgbV93cml0ZURpc2Fi
bGVkID0gZmxhZzsgfQpAQCAtMTMwMSw2ICsxMzIwLDEyIEBAIHByaXZhdGU6CiAgICAgSGFzaFNl
dDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlhQ2FuU3RhcnRMaXN0ZW5lcnM7CiAKICAg
ICBRdWFsaWZpZWROYW1lIG1faWRBdHRyaWJ1dGVOYW1lOworICAgIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBib29sIG1faXNGdWxsU2NyZWVuOworICAgIGJvb2wgbV9hcmVLZXlz
RW5hYmxlZEluRnVsbFNjcmVlbjsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9mdWxsU2NyZWVuRWxl
bWVudDsKKyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhhc0VsZW1lbnRXaXRo
SWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiA2
NDU2NSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjQ1
LDYgKzI0NSwxNSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtEb250RW51bV0gdm9pZCBpbml0
aWFsaXplV01MUGFnZVN0YXRlKCk7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
V2l0aEtleXMoKTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNG
dWxsU2NyZWVuOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1
bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQ7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVt
ZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudDsKKyAgICAgICAgdm9pZCB3ZWJraXRD
YW5jZWxGdWxsU2NyZWVuKCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVD
VElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxl
ciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3Rl
bmVyIG9uYWJvcnQ7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU4Niw1ICsxNTg2LDE3IEBAIGJvb2wg
RWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcigKICAgICByZXR1cm4gTm9kZTo6Y2hp
bGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGlsZCk7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
KCkKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRX
aXRoS2V5cyh0aGlzLCBmYWxzZSk7Cit9CisKK3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAgZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhpcywgdHJ1ZSk7Cit9CisjZW5kaWYgICAgCiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDY0NTY1KQorKysgV2ViQ29y
ZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoK
ICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmlu
ZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dl
ZCk7CiAKQEAgLTI5Miw2ICsyOTUsMTEgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAg
dmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OyAKICNl
bmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICB2b2lkIHdlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhL
ZXlzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUp
CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAKKyNp
ZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJ
CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAg
Ly8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkBAIC0yMDUsNiArMjEwLDcgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5U
UyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50
aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVu
ZXIgb250b3VjaGNhbmNlbDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgQ29uZGl0aW9u
YWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdl
OwogI2VuZGlmCiAgICAgfTsKIApJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3Jl
L2RvbS9FdmVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsMTMgQEAgYm9vbCBF
dmVudDo6aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjbwogICAgIHJldHVybiBmYWxzZTsKIH0K
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK2Jvb2wgRXZlbnQ6OmlzV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYK
KwogYm9vbCBFdmVudDo6aXNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdAogewog
ICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRXZlbnQuaAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3JlL2RvbS9F
dmVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRBbmltYXRpb25FdmVudCgpIGNvbnN0
OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjb25zdDsK
ICAgICAgICAgdmlydHVhbCBib29sIGlzQmVmb3JlTG9hZEV2ZW50KCkgY29uc3Q7CisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQoKSBjb25zdDsKKyNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAg
IHZpcnR1YWwgYm9vbCBpc1NWR1pvb21FdmVudCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2RvbS9FdmVudE5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTU5LDYgKzE1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAg
ICAgbWFjcm8obG9hZGVuZCkgXAogICAgIFwKKyAgICBtYWNybyh3ZWJraXRmdWxsc2NyZWVuY2hh
bmdlKQorICAgIFwKIC8vIGVuZCBvZiBET01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNs
YXNzIEV2ZW50TmFtZXMgOiBwdWJsaWMgTm9uY29weWFibGUgewpJbmRleDogV2ViQ29yZS9kb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KworI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAor
Ly8gRnJvbSB0aGUgTW96aWxsYSBGdWxsU2NyZWVuIHByb3Bvc2FsOiAiVGhlIFtmdWxsU2NyZWVu
Q2hhbmdlRXZlbnRdIGJ1YmJsZXMgCisvLyBhbmQgaXMgbm90IGNhbmNlbGxhYmxlLiIKKworV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKQor
OiBFdmVudChldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCB0cnVlLCBm
YWxzZSkKK3sKK30KKworV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojp+V2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50KCkKK3sKK30KKwordm9pZCBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQ6OmluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0
eXBlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxh
YmxlQXJnKQoreworICAgIGlmIChkaXNwYXRjaGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAK
KyAgICBpbml0RXZlbnQodHlwZSwgY2FuQnViYmxlQXJnLCBjYW5jZWxhYmxlQXJnKTsKK30KKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9X
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9X
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9t
L1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
Q09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorI2Rl
ZmluZSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRfaAorCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorCisjaW5jbHVkZSAiRXZlbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAg
IAorY2xhc3MgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IDogcHVibGljIEV2ZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ+
IGNyZWF0ZSgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCk7CisgICAgfSAgICAgICAgCisgICAgdmlydHVhbCB+V2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KCk7CisgICAgCisgICAgdm9pZCBpbml0V2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuQnViYmxlQXJnLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbmNlbGFibGVBcmcpOworICAgIAor
ICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50KCk7CisgICAgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0
cmluZyYgdHlwZSk7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorCisjZW5kaWYgLy8gV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1
bGUgZXZlbnRzIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVdPUktF
UlMmRlVMTFNDUkVFTl9BUEksCisgICAgICAgIE5vU3RhdGljVGFibGVzCisgICAgXSBXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQgOiBFdmVudCB7CisKKyAgICAgICAgdm9pZCBpbml0V2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGluIERPTVN0cmluZyBldmVudFR5cGVBcmcsIAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZUFyZywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gY2FuY2Vs
YWJsZUFyZyk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVO
YW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4J
KHdvcmtpbmcgY29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBvbndlYmtpdGFuaW1hdGlvbml0ZXJh
dGlvbgogb253ZWJraXRhbmltYXRpb25lbmQKIG9ud2Via2l0YmVnaW5mdWxsc2NyZWVuCiBvbndl
YmtpdGVuZGZ1bGxzY3JlZW4KK29ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZQogb253ZWJraXR0cmFu
c2l0aW9uZW5kCiBvcHRpbXVtCiBwYXR0ZXJuCkBAIC0yODIsNSArMjgzLDYgQEAgdmlld3NvdXJj
ZQogdmxpbmsKIHZzcGFjZQogd2Via2l0ZGlyZWN0b3J5Cit3ZWJraXRhbGxvd2Z1bGxzY3JlZW4K
IHdpZHRoCiB3cmFwCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NTY1KQorKysg
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcs
MTAgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+
CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBu
YW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjYyLDYgKzI2NiwxMCBAQCB2b2lkIEhUTUxFbGVtZW50
OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9udG91Y2hj
YW5jZWxBdHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLnRvdWNoY2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywg
YXR0cikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICB9IGVsc2UgaWYgKGF0dHIt
Pm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VBdHRyKSB7CisgICAgICAgIHNldEF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VF
dmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjZW5kaWYK
ICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gNjQ1NjUpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwx
MSBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYg
TEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0aXRsZURpc3BsYXlTdHJpbmc7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
V2l0aEtleXMoKTsKKyNlbmRpZgogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw5IEBAIHVzaW5nIG5hbWVzcGFj
ZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MSUZyYW1lRWxlbWVudDo6SFRNTElGcmFtZUVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAg
IDogSFRNTEZyYW1lRWxlbWVudEJhc2UodGFnTmFtZSwgZG9jdW1lbnQpCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorICAgICwgbV9hbGxvd3NGdWxsU2NyZWVuKGZhbHNlKQorI2VuZGlmCiB7
CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoaWZyYW1lVGFnKSk7CiB9CkBAIC0xMzIsNiArMTM1LDEw
IEBAIHZvaWQgSFRNTElGcmFtZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gc2FuZGJveEF0dHIpCiAgICAgICAgIHNldFNhbmRib3hGbGFncyhw
YXJzZVNhbmRib3hBdHRyaWJ1dGUoYXR0cikpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gd2Via2l0YWxsb3dmdWxsc2NyZWVuQXR0
cikKKyAgICAgICAgbV9hbGxvd3NGdWxsU2NyZWVuID0gdHJ1ZTsKKyNlbmRpZgogICAgIGVsc2UK
ICAgICAgICAgSFRNTEZyYW1lRWxlbWVudEJhc2U6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0dHIp
OwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHJldmlzaW9uIDY0NTY1KQorKysg
V2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYg
KzMxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUTUxJRnJhbWVFbGVtZW50IDog
cHVibGljIEhUTUxGcmFtZUVsZW1lbnRCYXNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxIVE1MSUZyYW1lRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIHdlYmtp
dEFsbG93RnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dzRnVsbFNjcmVlbjsgfQor
ICAgIHZvaWQgc2V0V2Via2l0QWxsb3dGdWxsU2NyZWVuKGJvb2wgdmFsdWUpIHsgbV9hbGxvd3NG
dWxsU2NyZWVuID0gdmFsdWU7IH0KKyNlbmRpZgogCiBwcml2YXRlOgogICAgIEhUTUxJRnJhbWVF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTAsNiArNTUsOSBA
QCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1VSTEF0dHJpYnV0ZShBdHRyaWJ1dGUqKSBj
b25zdDsKIAogICAgIEF0b21pY1N0cmluZyBtX25hbWU7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorICAgIGJvb2wgbV9hbGxvd3NGdWxsU2NyZWVuOworI2VuZGlmCiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHJldmlz
aW9uIDY0NTY1KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAkod29ya2lu
ZyBjb3B5KQpAQCAtMzAsNiArMzAsOSBAQCBtb2R1bGUgaHRtbCB7CiAgICAgICAgIGF0dHJpYnV0
ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIG5hbWU7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHNhbmRib3g7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5n
IHNjcm9sbGluZzsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxF
X0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gYm9vbGVhbiB3ZWJr
aXRBbGxvd0Z1bGxTY3JlZW47CisjZW5kaWYKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBE
T01TdHJpbmcgc3JjOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyB3aWR0
aDsKIApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gNjQ1NjUpCisr
KyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMx
Miw3ICszMTIsNyBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lCiB7
CiAgICAgaWYgKG1fbmV0d29ya1N0YXRlID4gTkVUV09SS19FTVBUWSkKICAgICAgICAgcGF1c2Uo
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkpOwotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAgICBp
ZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAgICAgSFRNTEVs
ZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKIH0KQEAgLTE4NTIsNyArMTg1Miw3IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6dXNlckNhbmNlbGxlZExvYWQKIAogdm9pZCBIVE1MTWVkaWFF
bGVtZW50Ojpkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpCiB7Ci0gICAgaWYgKG1faXNGdWxs
c2NyZWVuKQorICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4o
KTsKIAogICAgIG1faW5BY3RpdmVEb2N1bWVudCA9IGZhbHNlOwpAQCAtMjAxMywyNCArMjAxMyw0
NCBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNyZWF0ZU1lZGlhUGxheWVyCiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFBMVUdJTl9QUk9YWV9GT1JfVklERU8pCiAKK2Jvb2wgSFRNTE1lZGlhRWxlbWVu
dDo6aXNGdWxsc2NyZWVuKCkgY29uc3QgCit7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50KCkgPT0gdGhpcyA6IGZhbHNlOworI2Vsc2UKKyAgICByZXR1cm4gbV9pc0Z1bGxz
Y3JlZW47CisjZW5kaWYKK30KKwogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3Jl
ZW4oKQogeworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBBU1NFUlQoIWlzRnVsbHNj
cmVlbigpKTsKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZWxzZQog
ICAgIEFTU0VSVCghbV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gdHJ1ZTsK
ICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsKLSAgICAgICAgZG9j
dW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvck5v
ZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgp
LT5lbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KHRoaXMpOwogICAgICAgICBzY2hlZHVsZUV2ZW50
KGV2ZW50TmFtZXMoKS53ZWJraXRiZWdpbmZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlm
CiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4oKQogeworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBBU1NFUlQoaXNGdWxsc2NyZWVuKCkpOworICAgIGlm
IChkb2N1bWVudCgpKQorICAgICAgICBkb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KCk7CisjZWxzZQogICAgIEFTU0VSVChtX2lzRnVsbHNjcmVlbik7CiAgICAgbV9pc0Z1bGxzY3Jl
ZW4gPSBmYWxzZTsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiBkb2N1bWVudCgpLT5wYWdlKCkpIHsK
LSAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxs
c2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUo
KS0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKICAgICAgICAgc2No
ZWR1bGVFdmVudChldmVudE5hbWVzKCkud2Via2l0ZW5kZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9
CisjZW5kaWYKIH0KIAogUGxhdGZvcm1NZWRpYSBIVE1MTWVkaWFFbGVtZW50OjpwbGF0Zm9ybU1l
ZGlhKCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gNjQ1NjUp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
NTcsNyArMTU3LDcgQEAgcHVibGljOgogCiAgICAgYm9vbCBoYXNTaW5nbGVTZWN1cml0eU9yaWdp
bigpIGNvbnN0IHsgcmV0dXJuICFtX3BsYXllciB8fCBtX3BsYXllci0+aGFzU2luZ2xlU2VjdXJp
dHlPcmlnaW4oKTsgfQogICAgIAotICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Z1bGxzY3JlZW47IH0KKyAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0OwogICAg
IHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgdm9pZCBleGl0RnVsbHNjcmVlbigpOwogCklu
ZGV4OiBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNv
cmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiArNDAs
NyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZGVvLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0xMjYsMTEgKzEyNywxNiBAQCBib29sIEhUTUxWaWRlb0VsZW1lbnQ6OnN1
cHBvcnRzRnVsbHNjcmVlCiAgICAgaWYgKCFwYWdlKSAKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGlmICghcGFnZS0+c2V0dGluZ3MoKS0+
ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworI2VuZGlmCisgICAg
CiAgICAgaWYgKCFwbGF5ZXIoKSB8fCAhcGxheWVyKCktPnN1cHBvcnRzRnVsbHNjcmVlbigpIHx8
ICFwbGF5ZXIoKS0+aGFzVmlkZW8oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8g
Q2hlY2sgd2l0aCB0aGUgcGxhdGZvcm0gY2xpZW50LgotICAgIHJldHVybiBwYWdlLT5jaHJvbWUo
KS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgcmV0dXJu
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCh0
aGlzKTsKIH0KIAogdW5zaWduZWQgSFRNTFZpZGVvRWxlbWVudDo6dmlkZW9XaWR0aCgpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0Nocm9tZUNsaWVudC5oCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNvcmUvcGFnZS9D
aHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDkgKzI0Miw5IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzT3duUHRyPEdMRVMyQ29udGV4dD4gZ2V0
T2Zmc2NyZWVuR0xFUzJDb250ZXh0KCkgPSAwOwogI2VuZGlmCiAKLSAgICAgICAgdmlydHVhbCBi
b29sIHN1cHBvcnRzRnVsbHNjcmVlbkZvck5vZGUoY29uc3QgTm9kZSopIHsgcmV0dXJuIGZhbHNl
OyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7
IH0KLSAgICAgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9
CisgICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JFbGVtZW50KGNvbnN0
IEVsZW1lbnQqKSB7IHJldHVybiBmYWxzZTsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJG
dWxsc2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBl
eGl0RnVsbHNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopIHsgfQogCiAjaWYgRU5BQkxFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB2aXNpYmxlUmVjdEZvclRp
bGVkQmFja2luZ1N0b3JlKCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgpOyB9CkluZGV4OiBXZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5n
cy5jcHAJKHJldmlzaW9uIDY0NTY1KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTM3LDYgKzEzNyw5IEBAIFNldHRpbmdzOjpTZXR0aW5ncyhQYWdlKiBw
YWdlKQogICAgICwgbV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZChmYWxzZSkgLy8gV2lsbCBiZSBk
ZWxldGVkIHNvb24sIGRvIG5vdCB1c2UuCiAgICAgLCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZChmYWxzZSkKICAgICAsIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkKHRydWUpCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9mdWxsU2NyZWVuQVBJRW5hYmxlZChmYWxzZSkK
KyNlbmRpZgogICAgICwgbV9tZW1vcnlJbmZvRW5hYmxlZChmYWxzZSkKICAgICAsIG1faW50ZXJh
Y3RpdmVGb3JtVmFsaWRhdGlvbihmYWxzZSkKIHsKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5n
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCShyZXZpc2lvbiA2NDU2
NSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMTMsNiAr
MzEzLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBzZXRQYWdpbmF0ZUR1
cmluZ0xheW91dEVuYWJsZWQoYm9vbCBmbGFnKSB7IG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkID0gZmxhZzsgfQogICAgICAgICBib29sIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkOyB9CiAKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIHZvaWQgc2V0RnVsbFNjcmVlbkVuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQgPSBmbGFnOyB9CisgICAgICAgIGJv
b2wgZnVsbFNjcmVlbkVuYWJsZWQoKSBjb25zdCAgeyByZXR1cm4gbV9mdWxsU2NyZWVuQVBJRW5h
YmxlZDsgfQorI2VuZGlmCisKICAgICAgICAgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29s
IGZsYWcpIHsgbV9tZW1vcnlJbmZvRW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBtZW1v
cnlJbmZvRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fbWVtb3J5SW5mb0VuYWJsZWQ7IH0KIApA
QCAtNDA3LDYgKzQxMiw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2h0
bWw1VHJlZUJ1aWxkZXJFbmFibGVkOiAxOyAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90
IHVzZS4KICAgICAgICAgYm9vbCBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA6IDE7CiAg
ICAgICAgIGJvb2wgbV9kbnNQcmVmZXRjaGluZ0VuYWJsZWQgOiAxOworI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICAgICAgYm9vbCBtX2Z1bGxTY3JlZW5BUElFbmFibGVkIDogMTsKKyNl
bmRpZgogICAgICAgICBib29sIG1fbWVtb3J5SW5mb0VuYWJsZWQ6IDE7CiAgICAgICAgIGJvb2wg
bV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uOiAxOwogICAgIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAkocmV2aXNpb24gNjQ1NjUpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTc3Niw3ICs3NzYsMTAgQEAgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9u
RQogdm9pZCBNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50
SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnRO
YW1lcygpLmNsaWNrRXZlbnQpIHsKLSAgICAgICAgbWVkaWFFbGVtZW50KCktPmVudGVyRnVsbHNj
cmVlbigpOworICAgICAgICBpZiAobWVkaWFFbGVtZW50KCktPmlzRnVsbHNjcmVlbigpKQorICAg
ICAgICAgICAgbWVkaWFFbGVtZW50KCktPmV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKICAgICAgICAg
ZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiAgICAgfQogICAgIEhUTUxJbnB1dEVsZW1lbnQ6
OmRlZmF1bHRFdmVudEhhbmRsZXIoZXZlbnQpOwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA2NDU2NSkKKysrIFdlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJKHdvcmtpbmcgY29weSkK
QEAgLTc5LDYgKzc5LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVURVJfSE9SSVpPTlRBTF9C
QVIsIE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwgTUVURVJfSE9SSVpPTlRBTF9TVUJPUFRJTUFM
LCBNRVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19HT09ELAogICAgIE1FVEVSX1ZFUlRJQ0FMX0JB
UiwgTUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVURVJfVkVSVElDQUxfU1VCT1BUSU1BTCwgTUVU
RVJfVkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAogICAgIEFGVEVSX0xBU1RfSU5URVJOQUxfUFNF
VURPSUQsCisgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQywgRlVMTF9TQ1JFRU5fUk9P
VF9XSVRIX1RBUkdFVCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBGSVJTVF9MSU5FLAog
ICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEID0gRklMRV9VUExPQURfQlVUVE9OLAogICAgIFBV
QkxJQ19QU0VVRE9JRF9NQVNLID0gKCgxIDw8IEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEKSAtIDEp
ICYgfigoMSA8PCBGSVJTVF9QVUJMSUNfUFNFVURPSUQpIC0gMSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63397</attachid>
            <date>2010-08-03 17:48:31 -0700</date>
            <delta_ts>2010-08-04 12:06:58 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>62341</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NjA4KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU5fQVBJIG1vZGUgZm9yIHRoZSBNYWMg
KGV4Y2VwdCBpUGhvbmUpLgorCiAyMDEwLTA4LTAyICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJh
Y2xvdWdoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NDYwOCkKKysrIEphdmFTY3JpcHRDb3Jl
L3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiArNTk0LDcgQEAKICNlbmRp
ZgogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVSIDEK
KyNkZWZpbmUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMp
ICYmICFQTEFURk9STShJUEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
NjQ2MDgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0
MSBAQAorMjAxMC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlw
dCBBUEkgdG8gYWxsb3cgYSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzY4Njc3OTUKKyAgICAgICAgCisgICAgICAgIE1vemlsbGEgaGFzIHByb3Bvc2VkIGEg
bmV3IHNldCBvZiBKYXZhU2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55IGVsZW1lbnQgaW4KKyAg
ICAgICAgYSBkb2N1bWVudCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBjdXJyZW50IHJldmlzaW9u
IG9mIHRoZWlyIHByb3Bvc2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQgaGVyZToKKyAgICAgICAg
PGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9R2Vja286RnVsbFNjcmVl
bkFQSSZvbGRpZD0yMzU2MDE+CisgICAgICAgIAorICAgICAgICBUaGUgcHJvcG9zZWQgc3BlY2lm
aWNhdGlvbiBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAKKyAgICAgICAgRG9jdW1l
bnQ6CisgICAgICAgIC0gVGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1lbnQ6CisgICAgICAgICAg
ICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAgICAgICAgKyB2b2lkIGNhbmNlbEZ1bGxTY3JlZW4o
KQorICAgICAgICAtIFRocmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3VtZW50OgorICAgICAgICAg
ICAgKyByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuCisgICAgICAgICAgICAr
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRoS2V5cworICAgICAgICAg
ICAgKyAob3B0aW9uYWwpIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IGN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudAorICAgICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6CisgICAgICAgIC0gVHdv
IG5ldyBtZXRob2RzIG9uIEVsZW1lbnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxT
Y3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQor
ICAgICAgICAKKyAgICAgICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAgICAgIC0gT25lIG5ldyBj
b250ZW50IGF0dHJpYnV0ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxsU2NyZWVuCisgICAgICAg
ICAgICAKKyAgICAgICAgRXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcgZXZlbnQ6CisgICAgICAg
ICAgICArIGZ1bGxTY3JlZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAgIENTUyBQc2V1ZG8tY2xh
c3NlczoKKyAgICAgICAgLSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6CisgICAgICAgICAgICAr
IDpmdWxsLXNjcmVlbgorICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4tZG9jCisgICAgICAgICAg
ICArIDpmdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAgIAorICAgICAgICBGb3Ig
V2ViS2l0J3MgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBhYm92ZSBuZXcgQVBJcyB3
aWxsIGJlIHByZWZpeGVkIHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9yICItd2Via2l0IiB3aGVy
ZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0czoKKyAgICAgICAgTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAorICAgICAgICBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAgICAgIExheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAgICAgICAgUHJvamVjdCBm
aWxlIGNoYW5nZXM6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNj
b25maWc6IEFkZGVkIGFuIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBlbnRyeS4KKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy5tYWtlOiBBZGRlZCBydWxlcyBmb3IgZnVsbHNjcmVlbi5jc3MgYW5kIFdl
YkNvcmUuRnVsbFNjcmVlbi5leHAuCisgICAgICAgICogV2ViQ29yZS5GdWxsU2NyZWVuLmV4cDog
QWRkZWQgZXhwb3J0IHN5bWJvbHMgZm9yIERvY3VtZW50IGFuZCBFbGVtZW50IGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IE5ldyBzb3VyY2Ug
ZmlsZXMgYWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgSURMIGNoYW5nZXM6CisgICAg
ICAgICogZG9tL0RvY3VtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8g
dGhlIERvY3VtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2UuCisgICAgICAgICogZG9tL0VsZW1l
bnQuaWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUgRWxlbWVudCdzIGph
dmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRs
OiBBZGRlZCB0aGUgYWxsb3dGdWxsU2NyZWVuIGF0dHJpYnV0ZS4KKworICAgICAgICBTb3VyY2Ug
Y2hhbmdlczoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaDog
RXhwb3NlZCBEb2N1bWVudCBhbmQgRWxlbWVudCBmdWxsc2NyZWVuIGZ1bmN0aW9ucyBpbiB0aGUg
RE9NIGNsYXNzZXMuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDogQWRkZWQgbmV3IEZ1
bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMuCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6
cHNldWRvSWQpOiAKKyAgICAgICAgKFdlYkNvcmU6Om5hbWVUb1BzZXVkb1R5cGVNYXApOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKToKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3IuaDogCisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KTog
QWRkZWQgbmV3IGZ1bGwtc2NyZWVuIHBzZXVkbyBjbGFzc2VzIHRvIHRoZSBQc2V1ZG9UeXBlIGVu
dW0uCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOiAKKyAgICAgICAgKFdlYkNv
cmU6OmxvYWRGdWxsRGVmYXVsdFN0eWxlKTogUHVsbCB0aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQg
aW50byB0aGUgZGVmYXVsdFN0eWxlIGFuZCB0aGUgZGVmYXVsdFF1aXJrc1N0eWxlIHNoZWV0cy4K
KyAgICAgICAgKFdlYkNvcmU6OmxvYWRTaW1wbGVEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxs
c2NyZWVuLmNzcyBzaGVldCBpbnRvIHRoZSBkZWZhdWx0U3R5bGUgc2hlZXQuCisgICAgICAgIChX
ZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0
b3IpOiBDaGVjayBmb3IgdGhlIG5ldyBGdWxsU2NyZWVuIHBzZXVkbyBjbGFzc2VzLgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6RG9jdW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KTogU3VwcG9ydCBj
cmVhdGluZyBhICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlIiBldmVudC4KKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZCk6IFN1cHBvcnQgbGlzdGVuaW5n
IGZvciBhICJ3ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQiCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKTog
UGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZW50ZXIgZnVsbCBzY3JlZW4g
bW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxsU2NyZWVu
KTogUGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZXhpdCBmdWxsIHNjcmVl
biBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KTogU2V0cyB0aGUgRnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0
aGUgZnVsbC1zY3JlZW4gZWxlbWVudCBhbmQgaXRzIGRvY3VtZW50LgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDdXJyZW50
bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KTogQ3VycmVudGx5IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ2xlYXJzIHRo
ZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVtZW50IGFu
ZCBpdHMgZG9jdW1lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IEFkZGVkIGNvbnN0IGFj
Y2Vzc29ycyBmb3IgbmV3IGZ1bGwtc2NyZWVuIGluc3RhbmNlIHZhcmlhYmxlcy4KKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50OjopOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtp
dElzRnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNjcmVlbi4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQpOiBBY2Nl
c3NvciBmb3IgbV9pc0Z1bGxTY3JlbiBhbmQgbV9hcmVLZXlzRW5hYmxlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQpOiBBY2Nlc3Nv
ciBmb3IgbV9mdWxsU2NyZWVuRWxlbWVudC4KKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbik6IENhbGxz
IERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cy4gCisg
ICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
KTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhL
ZXlzLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6
IE92ZXJyaWRlZCBieSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuCisgICAgICAgICogZG9t
L0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50TmFtZXMuaDoKKyAgICAgICAgKiBkb20vV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAgICAgICAg
KiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCk6CisgICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGw6
IEFkZGVkLgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogUGFyc2UgdGhlIG5ldyAib253
ZWJraXRmdWxsc2NyZWVuY2hhbmdlIiBhdHRyaWJ1dGUgYW5kIHJlZ2lzdGVyIGEgbGlzdGVuZXIu
CisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTElGcmFtZUVsZW1lbnQ6OndlYmtpdEFsbG93RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBt
X2FsbG93RnVsbFNjcmVlbi4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJRnJhbWVFbGVtZW50Ojpz
ZXRXZWJraXRBbGxvd0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9hbGxvd0Z1bGxTY3JlZW4u
CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcDogUmUtaW1wbGVtZW50ZWQgdGhl
IEhUTUxNZWRpYUVsZW1lbnQgZnVsbCBzY3JlZW4gc3VwcG9ydCBpbiB0ZXJtcyBvZiB0aGUgbmV3
IChnZW5lcmljKSBmdWxsIHNjcmVlbiBzdXBwb3J0LgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6SFRNTE1lZGlhRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVk
aWFFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2lsbEJlY29tZUluYWN0aXZlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50OjplbnRlckZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTE1lZGlhRWxlbWVudDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW4pOgorICAg
ICAgICAqIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVl
bkZvckVsZW1lbnQpOiBQYXNzIHRocm91Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisg
ICAgICAgIChXZWJDb3JlOjpDaHJvbWVDbGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQp
OiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0byB0
aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6
ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3Rl
bmVyIGFuZCBwYXNzIHRocm91Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAg
ICogcGFnZS9TZXR0aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGlu
Z3MpOgorICAgICAgICAqIHBhZ2UvU2V0dGluZ3MuaDogQWRkIGEgbmV3IHNldHRpbmcgdG8gY29u
dHJvbCBydW50aW1lIHN1cHBvcnQgZm9yIGZ1bGwgc2NyZWVuIG1vZGUgKGRlZmF1bHRzIHRvIG9m
ZikKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRGdWxsU2NyZWVuRW5hYmxlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6ZnVsbFNjcmVlbkVuYWJsZWQpOgorICAgICAgICAq
IHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6
IFRoZSBmdWxsIHNjcmVlbiBidXR0b24gbm93IHRvZ2dsZXMgZnVsbCBzY3JlZW4gbW9kZSAocHJl
dmlvdXNseSwgaXQgb25seSBlbnRlcmVkKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaDoKKyAgICAgICAgKFdlYkNvcmU6Oik6CisKIDIwMTAtMDgtMDMg
IEJyaWFuIFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0
aGUgYnVpbGQgYnkgYWRkaW5nIHRoZSBuZWVkZWQgTWF0aE1MIHNvdXJjZSBmaWxlcyB0byBXZWJD
b3JlJ3MgdmNwcm9qLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjQ2MDgpCisrKyBX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw2ICs0NTgs
NyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlIFwKICAgICBX
ZWJLaXRDU1NNYXRyaXggXAogICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwKKyAgICBXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgXAogICAgIFdlYktpdFBvaW50IFwKICAgICBXZWJLaXRU
cmFuc2l0aW9uRXZlbnQgXAogICAgIFdlYlNvY2tldCBcCkBAIC02NjksNiArNjcwLDEwIEBAIGlm
ZXEgKCQoT1MpLE1BQ09TKQogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBFTkFC
TEVfRlVMTFNDUkVFTl9BUEksJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlMRV9T
SEVFVFMpICQoV2ViQ29yZSkvY3NzL2Z1bGxzY3JlZW4uY3NzCitlbmRpZgorCiBVc2VyQWdlbnRT
dHlsZVNoZWV0cy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICQoVVNFUl9BR0VOVF9T
VFlMRV9TSEVFVFMpCiAJcGVybCAkPCAkQCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3BwICQo
VVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjQ2MDgpCisr
KyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcwLDYgKzE0NzAs
MTMgQEAgX19aTjdXZWJDb3JlOUhUTUxOYW1lczhhdWRpb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1M
TmFtZXM4dmlkZW9UYWdFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK19f
Wk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBO
U183RWxlbWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdlYmtp
dFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3Jl
OERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1l
bnRFCisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiBfX1pO
N1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRxdW90YUZvck9yaWdpbkVQS05TXzE0
U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2Ux
NHNldE1heGltdW1TaXplRXgKSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURl
ZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0
dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJDb3JlL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3
NCw3IEBAIEVOQUJMRV9GSUxFX1JFQURFUl9tYWNvc3ggPSBFTkFCTEVfRklMRV8KIAogRU5BQkxF
X0ZJTEVfV1JJVEVSID0gOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOworRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJID0gRU5BQkxFX0ZVTExTQ1JFRU5fQVBJOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0gRU5B
QkxFX0dFT0xPQ0FUSU9OOwogCiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gJChFTkFCTEVfSUNPTkRB
VEFCQVNFXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMjMsNCArMTI0LDQgQEAgRU5BQkxF
X1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNMVCA9
IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENI
KSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxP
Ql9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNF
RF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVO
QUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJF
Q1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0Up
ICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxFX1dS
SVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURf
REFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJV
R0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElG
SUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJP
R1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFS
RURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJM
RV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVf
U1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0Up
ICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlO
RykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVO
QUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9M
SU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykg
JChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxF
X0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RB
VEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAk
KEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVf
RVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVO
QUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAkKEVO
QUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJMRV9J
TlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01BVEhN
TCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJMRV9P
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFCTEVf
UlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5BQkxF
X1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAkKEVO
QUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFCTEVf
U1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykgJChF
TkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkgJChF
TkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5BQkxF
X1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OTcsNiArNDk5NywxMyBAQAogCQlDNUVCREQ4NDEw
NUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4MTZG
IC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgyRTAw
MEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8qIE1v
ZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAwQjBB
NTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2Rp
ZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OworCQlDREE3OUE3MzExRTdBNEM3MDA4NzhE
OTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyogV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi87IH07CisJCUNEQTc5QTc0MTFFN0E0QzcwMDg3
OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi87IH07CisJCUNERTIwODRBMTIwMzU1
RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODQ3MTIwMzU1RTQwMEQx
MEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsgfTsKKwkJQ0RFMjA4
NEIxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODQ4MTIw
MzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gKi87IH07
CisJCUNERTIwODRDMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudEludGVybmFsLmggKi87IH07CisJCUNERTIwODUyMTIwMzU2MUUwMEQxMEE3NSAvKiBK
U1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUyMDg1MDEyMDM1NjFFMDBEMTBBNzUgLyogSlNXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovOyB9OworCQlDREUyMDg1MzEyMDM1NjFFMDBE
MTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODUxMTIwMzU2MUUwMEQxMEE3NSAv
KiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OwogCQlDRTAyRjBDNDExRTgz
QUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAvKiBT
Y3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAxMTM2
RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3Bw
ICovOyB9OwpAQCAtMTA3MTMsNiArMTA3MjAsMTUgQEAKIAkJQzVFQkREODExMDVFRERFQzAwNTY4
MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExl
dmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxp
c3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEyOTBB
MDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxs
c2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RBNzlBNzYxMUU3QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmlk
bDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDcxMjAzNTVFNDAwRDEwQTc1
IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDgxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUNERTIwODUxMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8qIFpv
b21Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2RlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAvKiBI
VE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTMxNjIsNiArMTMxNzgsOSBAQAogCQkJCTMxQzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAvKiBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkY0NzBFNENFRkREMDA3RDZG
RTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovLAogCQkJCTMxQzBGRjQ4MEU0Q0VG
REQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovLAorCQkJ
CUNERTIwODQ3MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaCAqLywKKwkJCQlDREUyMDg0ODEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50Lm1tICovLAorCQkJCUNERTIwODQ5MTIwMzU1RTQwMEQxMEE3NSAvKiBE
T01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRJbnRlcm5hbC5oICovLAogCQkJCTg1QzdGNUU1
MEFBRkJBRkIwMDQwMTRERCAvKiBET01XaGVlbEV2ZW50LmggKi8sCiAJCQkJODVDN0Y1RTYwQUFG
QkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gKi8sCiAJCQkpOwpAQCAtMTQ4MjEsNiAr
MTQ4NDAsOCBAQAogCQkJCTMxQzBGRjNBMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFuaW1h
dGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGM0IwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0
VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYzQzBFNENFRkFDMDA3RDZGRTUgLyog
SlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKKwkJCQlDREUyMDg1MDEyMDM1NjFFMDBEMTBB
NzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNERTIwODUx
MTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovLAog
CQkJCTY1REYzMUYxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuY3BwICovLAogCQkJ
CTY1REYzMUYyMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuaCAqLywKIAkJCSk7CkBA
IC0xNjcyMCw2ICsxNjc0MSw3IEBACiAJCQkJQkM5QUREMjIwQ0M0MDMyNjAwMDk4QzRDIC8qIFdl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFFNTQwRTFDNEQ0QTAwRjZBNTc5
IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJCQk0Q0RFNTRFQzBFNTU3OTc4
MDA4OUUyNkMgLyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEgLyog
ZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xNzI2Miw2ICsxNzI4NCw5IEBACiAJCQkJMzFDMEZGMUIwRTRDRUI2
RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxQzBF
NENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYx
RDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLAorCQkJCUNE
QTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAq
LywKKwkJCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZGRTUg
LyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZFMDA3
RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRDRUI2
RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0xOTk3OCw2ICsy
MDAwMywxMCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29kZVNv
cnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBYU1NB
dWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMgLyog
Wm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNERTIw
ODRBMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBp
biBIZWFkZXJzICovLAorCQkJCUNERTIwODRDMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFMjA4
NTMxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTU3ODhDMTEyMDc4NTJDMDBBMzdDNEEgLyogVmlzaXRlZExpbmtT
dHJhdGVneS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDM5RDAwNkQxMUY4RTMwODAwNjA0MUYyIC8q
IFBvcHVwTWVudU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRDM5RDAwOUQxMUY5MDdFNjAwNjA0
MUYyIC8qIFNlYXJjaFBvcHVwTWVudU1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yMjM4Niw2ICsy
MjQxNSw5IEBACiAJCQkJOTNGMTlCMDUwODI0NUU1OTAwMUU5QUJDIC8qIFhTTFRQcm9jZXNzb3JM
aWJ4c2x0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxQkU1MTJEMENGNkM1MTIwMDJFQTk1OSAv
KiBYU0xUVW5pY29kZVNvcnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTdERDREODYwRkRGNEQ2
RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RBNzlBNzQx
MUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlDREUyMDg0QjEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFMjA4NTIxMjAzNTYxRTAw
RDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUMwNDZFMUFDMTIwOEE5RkUwMEJBMkNGNyAvKiBMb2NhbGl6ZWRTdHJpbmdzLmNwcCBp
biBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oCShyZXZpc2lvbiA2NDYwOCkKKysrIFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01J
bnRlcmZhY2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsMTEgQEAgQGludGVyZmFj
ZSBET01Eb2N1bWVudCA6IERPTU5vZGUgV0VCS0lUXwogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNl
bGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3Qg
KilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZB
SUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5XaXRoS2V5cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3
ZWJraXRDYW5jZWxGdWxsU2NyZWVuIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7Cisj
ZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01Eb2N1bWVudEZyYWdtZW50IDogRE9NTm9kZSBX
RUJLSVRfVkVSU0lPTl8xXzMKQEAgLTIyNCw2ICsyMjksMTAgQEAgQGludGVyZmFjZSBET01FbGVt
ZW50IDogRE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lOihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsK
IC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJ
TEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVj
dG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05f
NF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFND
UkVFTl9BUEkKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lOX1dF
QktJVF9WRVJTSU9OXzRfMDsKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5
cyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAKIEBpbnRl
cmZhY2UgRE9NRW50aXR5IDogRE9NTm9kZSBXRUJLSVRfVkVSU0lPTl8xXzMKQEAgLTU2OSw2ICs1
NzgsOSBAQCBAaW50ZXJmYWNlIERPTUhUTUxJRnJhbWVFbGVtZW50IDogRE9NSFRNCiBAcHJvcGVy
dHkoY29weSkgTlNTdHJpbmcgKndpZHRoOwogQHByb3BlcnR5KHJlYWRvbmx5LCByZXRhaW4pIERP
TURvY3VtZW50ICpjb250ZW50RG9jdW1lbnQ7CiBAcHJvcGVydHkocmVhZG9ubHksIHJldGFpbikg
RE9NQWJzdHJhY3RWaWV3ICpjb250ZW50V2luZG93IEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lP
Tl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxM
U0NSRUVOX0FQSQorQHByb3BlcnR5KGFzc2lnbikgQk9PTCB3ZWJraXRBbGxvd0Z1bGxTY3JlZW47
CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01IVE1MSW1hZ2VFbGVtZW50IDogRE9NSFRN
TEVsZW1lbnQgV0VCS0lUX1ZFUlNJT05fMV8zCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCShyZXZpc2lv
biA2NDYwOCkKKysrIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjQ0LDYgKzI0NCwxNSBAQCBQc2V1ZG9JZCBDU1NTZWxlY3Rvcjo6cHNldWRvSWQoUHNldWRv
VHlwCiAgICAgICAgIHJldHVybiBOT1BTRVVETzsKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbjoKKyAgICAgICAgcmV0dXJuIEZV
TExfU0NSRUVOOworICAgIGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAgICAgcmV0dXJu
IEZVTExfU0NSRUVOX0RPQzsKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdl
dDoKKyAgICAgICAgcmV0dXJuIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJHRVQ7CisjZW5kaWYK
KyAgICAgICAgICAgIAogICAgIGNhc2UgUHNldWRvSW5wdXRMaXN0QnV0dG9uOgogI2lmIEVOQUJM
RShEQVRBTElTVCkKICAgICAgICAgcmV0dXJuIElOUFVUX0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYg
KzQzMSwxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsK
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgbGVmdFBhZ2UsICgibGVmdCIp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgcmlnaHRQYWdlLCAoInJp
Z2h0IikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbiwgKCItd2Via2l0LWZ1bGwtc2NyZWVuIikpOwor
ICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuRG9jLCAoIi13
ZWJraXQtZnVsbC1zY3JlZW4tZG9jIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuUm9vdFdpdGhUYXJnZXQsICgiLXdlYmtpdC1mdWxsLXNjcmVlbi1y
b290LXdpdGgtdGFyZ2V0IikpOworI2VuZGlmCiAKICAgICBzdGF0aWMgSGFzaE1hcDxBdG9taWNT
dHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlID0g
MDsKICAgICBpZiAoIW5hbWVUb1BzZXVkb1R5cGUpIHsKQEAgLTUzMyw2ICs1NDcsMTEgQEAgc3Rh
dGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbAogICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoZmlyc3RQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFn
ZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChsZWZ0UGFnZS5pbXBsKCksIENTU1Nl
bGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChy
aWdodFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvUmlnaHRQYWdlKTsKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2Ny
ZWVuLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW4pOworICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbkRvYy5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1
ZG9GdWxsU2NyZWVuRG9jKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3Jl
ZW5Sb290V2l0aFRhcmdldC5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuUm9v
dFdpdGhUYXJnZXQpOworI2VuZGlmCiAgICAgfQogICAgIHJldHVybiBuYW1lVG9Qc2V1ZG9UeXBl
OwogfQpAQCAtNjYyLDYgKzY4MSwxMSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRv
VHlwZSgpIGNvCiAgICAgY2FzZSBQc2V1ZG9TaW5nbGVCdXR0b246CiAgICAgY2FzZSBQc2V1ZG9O
b0J1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAgIGNhc2UgUHNldWRvRnVsbFNj
cmVlbkRvYzoKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyNlbmRp
ZgogICAgICAgICBicmVhazsKICAgICBjYXNlIFBzZXVkb0ZpcnN0UGFnZToKICAgICBjYXNlIFBz
ZXVkb0xlZnRQYWdlOgpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA2NDYwOCkKKysrIFdlYkNv
cmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTEgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgUHNldWRvTGVmdFBhZ2UsCiAgICAgICAg
ICAgICBQc2V1ZG9SaWdodFBhZ2UsCiAgICAgICAgICAgICBQc2V1ZG9GaXJzdFBhZ2UsCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlbiwKKyAg
ICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW5Eb2MsCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2Ny
ZWVuUm9vdFdpdGhUYXJnZXQsCisjZW5kaWYKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIE1h
cmdpbkJveFR5cGUgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0
NjA4KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTU1Myw2ICs1NTMsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1bGxEZWZhdWx0U3R5bGUoKQog
ICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0
LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1
bHRUaGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKICAgICBDU1NTdHlsZVNoZWV0KiBx
dWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NSdWxlcyk7CiAgICAgZGVmYXVsdFF1aXJr
c1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAg
ICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gRnVsbC1zY3JlZW4gcnVsZXMu
CisgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhmdWxsc2NyZWVuVXNlckFnZW50
U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRTdHlsZVNoZWV0KSkgKyBSZW5k
ZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRGVmYXVsdFN0eWxlU2hlZXQoKTsKKyAgICBD
U1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVuU2hlZXQgPSBwYXJzZVVBU2hlZXQoZnVsbHNjcmVlblJ1
bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVl
dCwgc2NyZWVuRXZhbCgpKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNlbmRpZgogfQogCiBzdGF0aWMg
dm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTI2MjksNiArMjYzNywzNyBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAgICAgICAgICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8gV2hpbGUgYSBEb2N1bWVudCBpcyBp
biB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgZnVsbHNj
cmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFuIGVsZW1lbnQgaW4gdGhlIGRv
Y3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIHRvIAorICAgICAg
ICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlmcmFtZT4sIDxvYmplY3Q+IG9y
IDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAKKyAgICAgICAgICAgICAgICAv
LyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgaGFzIHRoZSAn
ZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgaWYgKCFl
LT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCktPndl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgICAgICAgICAgICAgIC8vIFdo
aWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIHRoZSAnZnVsbC1zY3Jl
ZW4tZG9jJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIAorICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBy
b290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAgICAgICAgICAgICBpZiAoIWUtPmRv
Y3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0Z1bGxTY3JlZW5Sb290V2l0aFRhcmdldDoKKyAgICAgICAgICAgICAgICAvLyBXaGlsZSBhIERv
Y3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUgZG9jdW1lbnQncyBjdXJy
ZW50IGZ1bGxzY3JlZW4gZWxlbWVudCAKKyAgICAgICAgICAgICAgICAvLyBpcyBhbiBlbGVtZW50
IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0aC10YXJnZXQnIHBzZXVk
b2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhlIHJvb3QgZWxlbWVudCBv
ZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Vi
a2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmICgh
ZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAgICAgIGNhc2UgQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDogV2ViQ29yZS9jc3MvZnVs
bHNjcmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHBvc2l0aW9uOmZpeGVk
OworICAgIHRvcDowOworICAgIGxlZnQ6MDsKKyAgICByaWdodDowOworICAgIGJvdHRvbTowOwor
fQorOi13ZWJraXQtZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldCB7CisgICAgb3ZlcmZsb3c6
aGlkZGVuOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAw
JTsKKyAgICBoZWlnaHQ6IDEwMCUKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK2ltZzotd2Vi
a2l0LWZ1bGwtc2NyZWVuIHsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7Cisg
ICAgaW1hZ2UtZml0OiBmaWxsOworfQorCit2aWRlbzotd2Via2l0LWZ1bGwtcGFnZS1tZWRpYTot
d2Via2l0LWZ1bGwtc2NyZWVuOjotd2Via2l0LW1lZGlhLWNvbnRyb2xzLXBhbmVsIHsKKyAgICBi
b3R0b206IDBweDsKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDAsNiArMjAwLDEwIEBACiAj
aW5jbHVkZSAiSFRNTE5vU2NyaXB0RWxlbWVudC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIHVzaW5nIG5hbWVzcGFjZSBXVEY7CiB1c2lu
ZyBuYW1lc3BhY2UgVW5pY29kZTsKQEAgLTQwNSw2ICs0MDksMTAgQEAgRG9jdW1lbnQ6OkRvY3Vt
ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgSwogI2VuZGlmCiAgICAgLCBtX3dlYWtSZWZlcmVuY2Uo
RG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpjcmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRl
TmFtZShpZEF0dHIpCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxT
Y3JlZW4oMCkKKyAgICAsIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW4oMCkKKyNlbmRpZgog
ewogICAgIG1fZG9jdW1lbnQgPSB0aGlzOwogCkBAIC00ODcsNiArNDk1LDkgQEAgdm9pZCBEb2N1
bWVudDo6cmVtb3ZlZExhc3RSZWYoKQogICAgICAgICBtX2FjdGl2ZU5vZGUgPSAwOwogICAgICAg
ICBtX3RpdGxlRWxlbWVudCA9IDA7CiAgICAgICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAw
OworI2VuZGlmCiAKICAgICAgICAgLy8gcmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5
cyB1bnJlZ2lzdGVyIElEcywgZG8gaXQgdXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVm
ZXJlbmNlcyBpbiB0aGUgbWFwLgogICAgICAgICBtX2VsZW1lbnRzQnlJZC5jbGVhcigpOwpAQCAt
MzE2NCw2ICszMTc1LDE1IEBAIHZvaWQgRG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkKE5vZGUq
IG4KICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKICAg
ICAgICAgZnJhbWUtPmRyYWdDYXJldENvbnRyb2xsZXIoKS0+bm9kZVdpbGxCZVJlbW92ZWQobik7
CiAgICAgfQorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBBU1NFUlQobik7
CisgICAgaWYgKG4tPmNvbnRhaW5zKG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCkpKSB7CisgICAg
ICAgIEFTU0VSVChuICE9IGRvY3VtZW50RWxlbWVudCgpKTsKKyAgICAgICAgbV9mdWxsU2NyZWVu
RWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIERvY3VtZW50Ojp0ZXh0SW5zZXJ0ZWQoTm9kZSogdGV4
dCwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpCkBAIC0zMzMwLDYgKzMzNTAsMTAg
QEAgUGFzc1JlZlB0cjxFdmVudD4gRG9jdW1lbnQ6OmNyZWF0ZUV2ZW50KAogI2VuZGlmCiAgICAg
ICAgIGV2ZW50ID0gVG91Y2hFdmVudDo6Y3JlYXRlKCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlIikKKyAgICAgICAgZXZlbnQgPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNy
ZWF0ZSgpOworI2VuZGlmCiAjaWYgRU5BQkxFKERFVklDRV9PUklFTlRBVElPTikKICAgICBlbHNl
IGlmIChldmVudFR5cGUgPT0gIkRldmljZU9yaWVudGF0aW9uRXZlbnQiKQogICAgICAgICBldmVu
dCA9IERldmljZU9yaWVudGF0aW9uRXZlbnQ6OmNyZWF0ZSgpOwpAQCAtMzM4MSw2ICszNDA1LDEw
IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKGMKICAgICAgICAgICAg
IHBhZ2UtPmNocm9tZSgpLT5jbGllbnQoKS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0K
ICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBlbHNlIGlmIChldmVudFR5
cGUgPT0gZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCkKKyAgICAgICAg
YWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JFRU5DSEFOR0VfTElTVEVORVIpOworI2VuZGlmCiB9CiAK
IENTU1N0eWxlRGVjbGFyYXRpb24qIERvY3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQq
LCBjb25zdCBTdHJpbmcmKQpAQCAtNTA5NCw1ICs1MTIyLDc5IEBAIEluc3BlY3RvckNvbnRyb2xs
ZXIqIERvY3VtZW50OjppbnNwZWN0b3IKICAgICByZXR1cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCkgOiAwOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQordm9pZCBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKQorewor
ICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKGRvY3VtZW50RWxl
bWVudCgpLCBmYWxzZSk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuV2l0aEtleXMoKQoreworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdp
dGhLZXlzKGRvY3VtZW50RWxlbWVudCgpLCB0cnVlKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6
OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqIGVsZW1l
bnQsIGJvb2wga2V5c0VuYWJsZWQpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0
dGluZ3MoKS0+ZnVsbFNjcmVlbkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KCFlbGVtZW50KQorICAgICAgICBlbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAgCisg
ICAgaWYgKHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JF
bGVtZW50KGVsZW1lbnQpKSB7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworICAg
ICAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0ga2V5c0VuYWJsZWQ7CisgICAgICAg
IHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JFbGVtZW50KGVs
ZW1lbnQpOworICAgIH0KK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpCit7CisgICAgaWYgKCFwYWdlKCkgfHwgIXBhZ2UoKS0+c2V0dGluZ3MoKS0+ZnVsbFNjcmVl
bkVuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChwYWdlKCktPmNocm9t
ZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5F
bGVtZW50LmdldCgpKSkKKyAgICAgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRG
dWxsc2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKK30KKyAgICAK
K3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKHBhZ2UoKSAmJiBwYWdlKCktPnNldHRpbmdzKCkt
PmZ1bGxTY3JlZW5FbmFibGVkKCkpOworCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1l
bnQgPyBlbGVtZW50IDogZG9jdW1lbnRFbGVtZW50KCk7CisgICAgbV9pc0Z1bGxTY3JlZW4gPSB0
cnVlOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0
eWxlQ2hhbmdlKTsKKyAgICBpZiAoZG9jdW1lbnRFbGVtZW50KCkgIT0gbV9mdWxsU2NyZWVuRWxl
bWVudCkKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVs
bFN0eWxlQ2hhbmdlKTsKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxF
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopCit7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6
OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIG1faXNGdWxsU2NyZWVuID0gZmFsc2U7CisgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNj
cmVlbiA9IGZhbHNlOworICAgIC8vIG1fZnVsbFNjcmVlbkVsZW1lbnQgaGFzIGFscmVhZHkgYmVl
biBjbGVhcmVkOyByZWNhbGMgdGhlIHN0eWxlIG9mIAorICAgIC8vIHRoZSBwYXNzZWQgaW4gZWxl
bWVudCBpbnN0ZWFkLgorICAgIGlmIChlbGVtZW50KSB7CisgICAgICAgIGVsZW1lbnQtPnNldE5l
ZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICAgICAgZWxlbWVudC0+ZGlzcGF0
Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICAgICAg
ZWxlbWVudCA9IDA7CisgICAgfSBlbHNlCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNw
YXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworICAgIGRv
Y3VtZW50RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7Cisg
ICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworfQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDkgQEAgcHVibGljOgogICAg
IERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9B
VFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Vi
a2l0ZnVsbHNjcmVlbmNoYW5nZSk7CisjZW5kaWYKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlw
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlwZS5nZXQoKTsgfQogCkBAIC02ODgsNyArNjkxLDgg
QEAgcHVibGljOgogICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAg
PSAweDgwMCwKICAgICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0g
MHgxMDAwLAogICAgICAgICBUT1VDSF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAw
eDIwMDAsCi0gICAgICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4
NDAwMAorICAgICAgICBCRUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQw
MDAsCisgICAgICAgIEZVTExTQ1JFRU5DSEFOR0VfTElTVEVORVIgICAgICAgICAgICA9IDB4ODAw
MCwKICAgICB9OwogCiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3Rl
bmVyVHlwZSkgY29uc3QgeyByZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7
IH0KQEAgLTEwMTQsNiArMTAxOCwyMSBAQCBwdWJsaWM6CiAgICAgTWVkaWFDYW5TdGFydExpc3Rl
bmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICAgICBjb25zdCBRdWFsaWZp
ZWROYW1lJiBpZEF0dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2lkQXR0cmlidXRlTmFt
ZTsgfQorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIHdlYmtpdElz
RnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3
ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVs
bFNjcmVlbiAmJiBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOyB9CisgICAgRWxlbWVudCog
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2Ny
ZWVuRWxlbWVudC5nZXQoKTsgfQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsK
KyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAgICB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqLCBib29sIGtl
eXNFbmFibGVkKTsKKyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAKKyAg
ICB2b2lkIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAg
ICB2b2lkIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAg
IHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAg
dm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworI2VuZGlm
CiAKICAgICBib29sIHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlRGlzYWJs
ZWQ7IH0KICAgICB2b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fd3JpdGVEaXNh
YmxlZCA9IGZsYWc7IH0KQEAgLTEzMDEsNiArMTMyMCwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzOwogCiAg
ICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbjsKKyAgICBib29sIG1fYXJlS2V5
c0VuYWJsZWRJbkZ1bGxTY3JlZW47CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVs
ZW1lbnQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBib29sIERvY3VtZW50OjpoYXNFbGVtZW50V2l0
aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24g
NjQ2MDgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0
NSw2ICsyNDUsMTUgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbRG9udEVudW1dIHZvaWQgaW5p
dGlhbGl6ZVdNTFBhZ2VTdGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIHZvaWQgd2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bldpdGhLZXlzKCk7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdElz
RnVsbFNjcmVlbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNG
dWxsU2NyZWVuV2l0aEtleXNFbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxl
bWVudCB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CisgICAgICAgIHZvaWQgd2Via2l0
Q2FuY2VsRnVsbFNjcmVlbigpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpF
Q1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRs
ZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0
ZW5lciBvbmFib3J0OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNSArMTU4NiwxNyBAQCBib29s
IEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0dXJuIE5vZGU6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bigpCit7CisgICAgZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
V2l0aEtleXModGhpcywgZmFsc2UpOworfQorCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuV2l0aEtleXMoKQoreworICAgIGRvY3VtZW50KCktPndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKHRoaXMsIHRydWUpOworfQorI2VuZGlmICAgIAogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2NDYwOCkKKysrIFdlYkNv
cmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOSBAQCBwdWJsaWM6
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVG
SU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
Uih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJp
bmcmLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93
ZWQpOwogCkBAIC0yOTIsNiArMjk1LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAg
IHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsgCiAj
ZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRo
S2V5cygpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBl
KQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwJKHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbW9kdWxlIGNvcmUgewogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKICNlbmRpZgogCisj
aWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SQorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZvaWQg
d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCisKICNpZiAhZGVmaW5l
ZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAg
IC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpAQCAtMjA1LDYgKzIxMCw3IEBAIG1vZHVsZSBj
b3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVO
VFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNobW92ZTsKICAgICAgICAg
YXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVu
dGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5kOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3Rl
bmVyIG9udG91Y2hjYW5jZWw7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIENvbmRpdGlv
bmFsPUZVTExTQ1JFRU5fQVBJXSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5n
ZTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29y
ZS9kb20vRXZlbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDEzIEBAIGJvb2wg
RXZlbnQ6OmlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY28KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCitib29sIEV2ZW50Ojppc1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIGJvb2wgRXZlbnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKIHsK
ICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0V2ZW50LmgJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29yZS9kb20v
RXZlbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25z
dDsKICAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0OworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogV2Vi
Q29yZS9kb20vRXZlbnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFt
ZXMuaAkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTE1OSw2ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAog
ICAgIG1hY3JvKGxvYWRlbmQpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0ZnVsbHNjcmVlbmNo
YW5nZSkKKyAgICBcCiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBj
bGFzcyBFdmVudE5hbWVzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9t
L1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
Ky8vIEZyb20gdGhlIE1vemlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBbZnVsbFNjcmVl
bkNoYW5nZUV2ZW50XSBidWJibGVzIAorLy8gYW5kIGlzIG5vdCBjYW5jZWxsYWJsZS4iCisKK1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkK
KzogRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwg
ZmFsc2UpCit7Cit9CisKK1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCgpCit7Cit9CisKK3ZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Ojppbml0V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2Vs
YWJsZUFyZykKK3sKKyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7Cit9Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Rv
bS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKyNk
ZWZpbmUgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKworI2luY2x1ZGUgIkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK2NsYXNzIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQpOworICAgIH0gICAgICAgIAorICAgIHZpcnR1YWwgfldlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudCgpOworICAgIAorICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKTsKKyAgICAK
KyAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdCB7
IHJldHVybiB0cnVlOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCgpOworICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUpOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9k
dWxlIGV2ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JL
RVJTJkZVTExTQ1JFRU5fQVBJLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50IDogRXZlbnQgeworCisgICAgICAgIHZvaWQgaW5pdFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlQXJnLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcs
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNl
bGFibGVBcmcpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRl
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5p
bgkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcgQEAgb253ZWJraXRhbmltYXRpb25pdGVy
YXRpb24KIG9ud2Via2l0YW5pbWF0aW9uZW5kCiBvbndlYmtpdGJlZ2luZnVsbHNjcmVlbgogb253
ZWJraXRlbmRmdWxsc2NyZWVuCitvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UKIG9ud2Via2l0dHJh
bnNpdGlvbmVuZAogb3B0aW11bQogcGF0dGVybgpAQCAtMjgyLDUgKzI4Myw2IEBAIHZpZXdzb3Vy
Y2UKIHZsaW5rCiB2c3BhY2UKIHdlYmtpdGRpcmVjdG9yeQord2Via2l0YWxsb3dmdWxsc2NyZWVu
CiB3aWR0aAogd3JhcApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDYwOCkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDEwIEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5o
PgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBIVE1MRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNo
Y2FuY2VsQXR0cikgewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMs
IGF0dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgfSBlbHNlIGlmIChhdHRy
LT5uYW1lKCkgPT0gb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0cikgeworICAgICAgICBzZXRB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdl
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworI2VuZGlm
CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0NjA4KQorKysg
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQs
MTEgQEAgbW9kdWxlIGh0bWwgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYm
IExBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJp
bmcgdGl0bGVEaXNwbGF5U3RyaW5nOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxM
U0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIHZvaWQgd2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVl
bldpdGhLZXlzKCk7CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TElGcmFtZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1l
RWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjA4KQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCiBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6OkhUTUxJRnJhbWVFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAg
ICA6IEhUTUxGcmFtZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICAsIG1fYWxsb3dzRnVsbFNjcmVlbihmYWxzZSkKKyNlbmRpZgog
ewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOwogfQpAQCAtMTMyLDYgKzEzNSwx
MCBAQCB2b2lkIEhUTUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgZWxzZSBp
ZiAoYXR0ci0+bmFtZSgpID09IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3Mo
cGFyc2VTYW5kYm94QXR0cmlidXRlKGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKyAgICBpZiAoYXR0ci0+bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0
dHIpCisgICAgICAgIG1fYWxsb3dzRnVsbFNjcmVlbiA9IHRydWU7CisjZW5kaWYKICAgICBlbHNl
CiAgICAgICAgIEhUTUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiA2NDYwOCkKKysr
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2
ICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6
IHB1YmxpYyBIVE1MRnJhbWVFbGVtZW50QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8SFRNTElGcmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCB3ZWJr
aXRBbGxvd0Z1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Z1bGxTY3JlZW47IH0K
KyAgICB2b2lkIHNldFdlYmtpdEFsbG93RnVsbFNjcmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dz
RnVsbFNjcmVlbiA9IHZhbHVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1l
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTUwLDYgKzU1LDkg
QEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikg
Y29uc3Q7CiAKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOworI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICBib29sIG1fYWxsb3dzRnVsbFNjcmVlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50Lmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZp
c2lvbiA2NDYwOCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtp
bmcgY29weSkKQEAgLTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1
dGUgW1JlZmxlY3RdIERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyBzYW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmlu
ZyBzY3JvbGxpbmc7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJM
RV9GVUxMU0NSRUVOX0FQSQorICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gd2Vi
a2l0QWxsb3dGdWxsU2NyZWVuOworI2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0g
RE9NU3RyaW5nIHNyYzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lk
dGg7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjA4KQor
KysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
MTIsNyArMzEyLDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZQog
ewogICAgIGlmIChtX25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHBhdXNl
KHByb2Nlc3NpbmdVc2VyR2VzdHVyZSgpKTsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAg
aWYgKGlzRnVsbHNjcmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgIEhUTUxF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2
b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlh
RWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmIChtX2lzRnVs
bHNjcmVlbikKKyAgICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVu
KCk7CiAKICAgICBtX2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKQEAgLTIwMTMsMjQgKzIwMTMs
NDQgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcgogfQogI2VuZGlm
IC8vIEVOQUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCitib29sIEhUTUxNZWRpYUVsZW1l
bnQ6OmlzRnVsbHNjcmVlbigpIGNvbnN0IAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICByZXR1cm4gZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCgpID09IHRoaXMgOiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIG1faXNGdWxs
c2NyZWVuOworI2VuZGlmCit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2Ny
ZWVuKCkKIHsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgQVNTRVJUKCFpc0Z1bGxz
Y3JlZW4oKSk7CisgICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2Vsc2UK
ICAgICBBU1NFUlQoIW1faXNGdWxsc2NyZWVuKTsKICAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7
CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JO
b2RlKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQo
KS0+ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVu
dChldmVudE5hbWVzKCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOwogICAgIH0KKyNlbmRp
ZgogfQogCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKKyNpZiBF
TkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgQVNTRVJUKGlzRnVsbHNjcmVlbigpKTsKKyAgICBp
ZiAoZG9jdW1lbnQoKSkKKyAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVl
bigpOworI2Vsc2UKICAgICBBU1NFUlQobV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2Ny
ZWVuID0gZmFsc2U7CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7
Ci0gICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVs
bHNjcmVlbkZvck5vZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiAgICAgICAgIHNj
aGVkdWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAg
fQorI2VuZGlmCiB9CiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1N
ZWRpYSgpIGNvbnN0CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDY0NjA4
KQorKysgV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTU3LDcgKzE1Nyw3IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmln
aW4oKSBjb25zdCB7IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCk7IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsc2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdDsKICAg
ICB2b2lkIGVudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIApJ
bmRleDogV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJD
b3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDcgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJWaWRlby5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTI2LDExICsxMjcsMTYgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50Ojpz
dXBwb3J0c0Z1bGxzY3JlZQogICAgIGlmICghcGFnZSkgCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCkt
PmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAg
IAogICAgIGlmICghcGxheWVyKCkgfHwgIXBsYXllcigpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSB8
fCAhcGxheWVyKCktPmhhc1ZpZGVvKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8v
IENoZWNrIHdpdGggdGhlIHBsYXRmb3JtIGNsaWVudC4KLSAgICByZXR1cm4gcGFnZS0+Y2hyb21l
KCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOworICAgIHJldHVy
biBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQo
dGhpcyk7CiB9CiAKIHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBjb25z
dApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJDb3JlL3BhZ2Uv
Q2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw5ICsyNDIsOSBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxHTEVTMkNvbnRleHQ+IGdl
dE9mZnNjcmVlbkdMRVMyQ29udGV4dCgpID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxz
ZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikg
eyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsg
fQorICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChjb25z
dCBFbGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KIAogI2lmIEVOQUJMRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJlY3RGb3JU
aWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJbmRleDogV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuY3BwCShyZXZpc2lvbiA2NDYwOCkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSog
cGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwgYmUg
ZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVu
YWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQoZmFsc2Up
CisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVy
YWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGlu
Z3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNjQ2
MDgpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYg
KzMxMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGFnaW5hdGVE
dXJpbmdMYXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVk
KGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBi
b29sIGZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQSUVu
YWJsZWQ7IH0KKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9v
bCBmbGFnKSB7IG1fbWVtb3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgbWVt
b3J5SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAK
QEAgLTQwNyw2ICs0MTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9o
dG1sNVRyZWVCdWlsZGVyRW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRvIG5v
dCB1c2UuCiAgICAgICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOwog
ICAgICAgICBib29sIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyNpZiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCisgICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuQVBJRW5hYmxlZCA6IDE7Cisj
ZW5kaWYKICAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBib29s
IG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbjogMTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDY0NjA4KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03NzYsNyArNzc2LDEwIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRv
bkUKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVu
dEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50
TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxz
Y3JlZW4oKTsKKyAgICAgICAgaWYgKG1lZGlhRWxlbWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAg
ICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAg
IGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50
OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0
eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjQ2MDgpCisrKyBXZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC03OSw2ICs3OSw3IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FVEVSX0hPUklaT05UQUxf
QkFSLCBNRVRFUl9IT1JJWk9OVEFMX09QVElNVU0sIE1FVEVSX0hPUklaT05UQUxfU1VCT1BUSU1B
TCwgTUVURVJfSE9SSVpPTlRBTF9FVkVOX0xFU1NfR09PRCwKICAgICBNRVRFUl9WRVJUSUNBTF9C
QVIsIE1FVEVSX1ZFUlRJQ0FMX09QVElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NVQk9QVElNQUwsIE1F
VEVSX1ZFUlRJQ0FMX0VWRU5fTEVTU19HT09ELCAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BT
RVVET0lELAorICAgIEZVTExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZVTExfU0NSRUVOX1JP
T1RfV0lUSF9UQVJHRVQsCiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwK
ICAgICBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKICAgICBQ
VUJMSUNfUFNFVURPSURfTUFTSyA9ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAx
KSAmIH4oKDEgPDwgRklSU1RfUFVCTElDX1BTRVVET0lEKSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63476</attachid>
            <date>2010-08-04 12:06:58 -0700</date>
            <delta_ts>2010-08-05 13:38:17 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>62158</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NjUzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU5fQVBJIG1vZGUgZm9yIHRoZSBNYWMg
KGV4Y2VwdCBpUGhvbmUpLgorCiAyMDEwLTA4LTAzICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVu
Y2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDog
SmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENv
cmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDY0NjUzKQorKysgSmF2YVNjcmlwdENvcmUvd3Rm
L1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTU5NCw2ICs1OTQsNyBAQAogI2VuZGlmCiAj
ZGVmaW5lIEhBVkVfUkVBRExJTkUgMQogI2RlZmluZSBIQVZFX1JVTkxPT1BfVElNRVIgMQorI2Rl
ZmluZSBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgMQogI2VuZGlmIC8qIFBMQVRGT1JNKE1BQykgJiYg
IVBMQVRGT1JNKElQSE9ORSkgKi8KIAogI2lmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFdlYkNvcmUv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA2NDY1
MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQxIEBA
CisyMDEwLTA3LTI3ICBKZXIgTm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBKYXZhU2NyaXB0IEFQ
SSB0byBhbGxvdyBhIHBhZ2UgdG8gZ28gZnVsbHNjcmVlbi4KKyAgICAgICAgcmRhcjovL3Byb2Js
ZW0vNjg2Nzc5NQorICAgICAgICAKKyAgICAgICAgTW96aWxsYSBoYXMgcHJvcG9zZWQgYSBuZXcg
c2V0IG9mIEphdmFTY3JpcHQgQVBJcyB3aGljaCBhbGxvdyBhbnkgZWxlbWVudCBpbgorICAgICAg
ICBhIGRvY3VtZW50IHRvIGdvIGZ1bGwtc2NyZWVuLiAgVGhlIGN1cnJlbnQgcmV2aXNpb24gb2Yg
dGhlaXIgcHJvcG9zYWwgY2FuIGJlIAorICAgICAgICBmb3VuZCBoZXJlOgorICAgICAgICA8aHR0
cHM6Ly93aWtpLm1vemlsbGEub3JnL2luZGV4LnBocD90aXRsZT1HZWNrbzpGdWxsU2NyZWVuQVBJ
Jm9sZGlkPTIzNTYwMT4KKyAgICAgICAgCisgICAgICAgIFRoZSBwcm9wb3NlZCBzcGVjaWZpY2F0
aW9uIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmc6CisgICAgICAgIAorICAgICAgICBEb2N1bWVudDoK
KyAgICAgICAgLSBUaHJlZSBuZXcgbWV0aG9kcyBvbiBEb2N1bWVudDoKKyAgICAgICAgICAgICsg
dm9pZCByZXF1ZXN0RnVsbFNjcmVlbigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxT
Y3JlZW5XaXRoS2V5cygpCisgICAgICAgICAgICArIHZvaWQgY2FuY2VsRnVsbFNjcmVlbigpCisg
ICAgICAgIC0gVGhyZWUgbmV3IGF0dHJpYnV0ZXMgb2YgRG9jdW1lbnQ6CisgICAgICAgICAgICAr
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW4KKyAgICAgICAgICAgICsgcmVh
ZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbldpdGhLZXlzCisgICAgICAgICAgICAr
IChvcHRpb25hbCkgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgY3VycmVudEZ1bGxTY3JlZW5F
bGVtZW50CisgICAgICAgICAgICAKKyAgICAgICAgRWxlbWVudDoKKyAgICAgICAgLSBUd28gbmV3
IG1ldGhvZHMgb24gRWxlbWVudDoKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVl
bigpCisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCisgICAg
ICAgIAorICAgICAgICBIVE1MSUZyYW1lRWxlbWVudDoKKyAgICAgICAgLSBPbmUgbmV3IGNvbnRl
bnQgYXR0cmlidXRlOgorICAgICAgICAgICAgKyBhbGxvd0Z1bGxTY3JlZW4KKyAgICAgICAgICAg
IAorICAgICAgICBFdmVudHM6CisgICAgICAgIC0gT25lIG5ldyBldmVudDoKKyAgICAgICAgICAg
ICsgZnVsbFNjcmVlbkNoYW5nZQorICAgICAgICAKKyAgICAgICAgQ1NTIFBzZXVkby1jbGFzc2Vz
OgorICAgICAgICAtIFRocmVlIG5ldyBQc2V1ZG8tY2xhc3NlczoKKyAgICAgICAgICAgICsgOmZ1
bGwtc2NyZWVuCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1kb2MKKyAgICAgICAgICAgICsg
OmZ1bGwtc2NyZWVuLXJvb3Qtd2l0aC10YXJnZXQKKyAgICAgICAgCisgICAgICAgIEZvciBXZWJL
aXQncyBpbml0aWFsIGltcGxlbWVudGF0aW9uLCBhbGwgdGhlIGFib3ZlIG5ldyBBUElzIHdpbGwg
YmUgcHJlZml4ZWQgd2l0aCAKKyAgICAgICAgIndlYmtpdCIgb3IgIi13ZWJraXQiIHdoZXJlIGFw
cHJvcHJpYXRlLgorICAgICAgICAKKyAgICAgICAgTmV3IHRlc3RzOgorICAgICAgICBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sCisgICAgICAgIExheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWwKKworICAgICAgICBQcm9qZWN0IGZpbGUg
Y2hhbmdlczoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
ZzogQWRkZWQgYW4gRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIGVudHJ5LgorICAgICAgICAqIERlcml2
ZWRTb3VyY2VzLm1ha2U6IEFkZGVkIHJ1bGVzIGZvciBmdWxsc2NyZWVuLmNzcyBhbmQgV2ViQ29y
ZS5GdWxsU2NyZWVuLmV4cC4KKyAgICAgICAgKiBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwOiBBZGRl
ZCBleHBvcnQgc3ltYm9scyBmb3IgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVuY3Rpb25zLgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogTmV3IHNvdXJjZSBmaWxl
cyBhZGRlZCB0byB0aGUgcHJvamVjdC4KKworICAgICAgICBJREwgY2hhbmdlczoKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuaWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0aGUg
RG9jdW1lbnQncyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBkb20vRWxlbWVudC5p
ZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4gQVBJIHRvIHRoZSBFbGVtZW50J3MgamF2YXNj
cmlwdCBpbnRlcmZhY2UuCisgICAgICAgICogaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGw6IEFk
ZGVkIHRoZSBhbGxvd0Z1bGxTY3JlZW4gYXR0cmlidXRlLgorCisgICAgICAgIFNvdXJjZSBjaGFu
Z2VzOgorICAgICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBFeHBv
c2VkIERvY3VtZW50IGFuZCBFbGVtZW50IGZ1bGxzY3JlZW4gZnVuY3Rpb25zIGluIHRoZSBET00g
Y2xhc3Nlcy4KKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuY3BwOiBBZGRlZCBuZXcgRnVsbFNj
cmVlbiBwc2V1ZG8tY2xhc3Nlcy4KKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpwc2V1
ZG9JZCk6IAorICAgICAgICAoV2ViQ29yZTo6bmFtZVRvUHNldWRvVHlwZU1hcCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAqIGNz
cy9DU1NTZWxlY3Rvci5oOiAKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjopOiBBZGRl
ZCBuZXcgZnVsbC1zY3JlZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUgZW51bS4K
KyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6
bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRv
IHRoZSBkZWZhdWx0U3R5bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRzLgorICAg
ICAgICAoV2ViQ29yZTo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3Jl
ZW4uY3NzIHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6
IENoZWNrIGZvciB0aGUgbmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAgICAgICog
ZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpEb2N1bWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlRXZlbnQpOiBTdXBwb3J0IGNyZWF0
aW5nIGEgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2UiIGV2ZW50LgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlwZUlmTmVlZGVkKTogU3VwcG9ydCBsaXN0ZW5pbmcgZm9y
IGEgIndlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCIKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMpOiBQYXNz
ZXMgcmVxdWVzdCB0byB0aGUgY2hyb21lIGNsaWVudCB0byBlbnRlciBmdWxsIHNjcmVlbiBtb2Rl
LgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4pOiBQ
YXNzZXMgcmVxdWVzdCB0byB0aGUgY2hyb21lIGNsaWVudCB0byBleGl0IGZ1bGwgc2NyZWVuIG1v
ZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQpOiBTZXRzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBm
dWxsLXNjcmVlbiBlbGVtZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBh
IG5vLW9wLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQpOiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDbGVhcnMgdGhlIEZ1
bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMgb24gdGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0
cyBkb2N1bWVudC4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDogQWRkZWQgY29uc3QgYWNjZXNz
b3JzIGZvciBuZXcgZnVsbC1zY3JlZW4gaW5zdGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6Oik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNG
dWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1faXNGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndlYmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCk6IEFjY2Vzc29y
IGZvciBtX2lzRnVsbFNjcmVuIGFuZCBtX2FyZUtleXNFbmFibGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RG9jdW1lbnQ6OndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCk6IEFjY2Vzc29yIGZv
ciBtX2Z1bGxTY3JlZW5FbGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKTogQ2FsbHMgRG9j
dW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzLiAKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOiBD
YWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMu
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTogT3Zl
cnJpZGVkIGJ5IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC4KKyAgICAgICAgKiBkb20vRXZl
bnQuaDoKKyAgICAgICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9XZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OmluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQpOgorICAgICAgICAqIGRv
bS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50KToKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDogQWRk
ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBQYXJzZSB0aGUgbmV3ICJvbndlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2UiIGF0dHJpYnV0ZSBhbmQgcmVnaXN0ZXIgYSBsaXN0ZW5lci4KKyAg
ICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SUZyYW1lRWxlbWVudDo6d2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxs
b3dGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNldFdl
YmtpdEFsbG93RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAg
ICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOiBSZS1pbXBsZW1lbnRlZCB0aGUgSFRN
TE1lZGlhRWxlbWVudCBmdWxsIHNjcmVlbiBzdXBwb3J0IGluIHRlcm1zIG9mIHRoZSBuZXcgKGdl
bmVyaWMpIGZ1bGwgc2NyZWVuIHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFF
bGVtZW50OjpIVE1MTWVkaWFFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVs
ZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRp
YUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1l
ZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVuKToKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxNZWRpYUVsZW1lbnQ6OmVudGVyRnVsbHNjcmVlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbik6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxWaWRlb0VsZW1lbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbik6CisgICAgICAg
ICogaHRtbC9IVE1MVmlkZW9FbGVtZW50Lmg6CisgICAgICAgICogcGFnZS9DaHJvbWVDbGllbnQu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9y
RWxlbWVudCk6IFBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAg
ICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENy
ZWF0ZSBhIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBj
dXJyZW50IFVJIGRlbGVnYXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0
RnVsbHNjcmVlbkZvckVsZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIg
YW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBw
YWdlL1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6
CisgICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9s
IHJ1bnRpbWUgc3VwcG9ydCBmb3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQor
ICAgICAgICAoV2ViQ29yZTo6U2V0dGluZ3M6OnNldEZ1bGxTY3JlZW5FbmFibGVkKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpmdWxsU2NyZWVuRW5hYmxlZCk6CisgICAgICAgICogcmVu
ZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
Q29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKTogVGhl
IGZ1bGwgc2NyZWVuIGJ1dHRvbiBub3cgdG9nZ2xlcyBmdWxsIHNjcmVlbiBtb2RlIChwcmV2aW91
c2x5LCBpdCBvbmx5IGVudGVyZWQpLgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJT
dHlsZUNvbnN0YW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6KToKKwogMjAxMC0wOC0wNCAgWXVy
eSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gNjQ2NTMpCisr
KyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTQ1OCw2ICs0
NTgsNyBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlIFwKICAg
ICBXZWJLaXRDU1NNYXRyaXggXAogICAgIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlIFwKKyAgICBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgXAogICAgIFdlYktpdFBvaW50IFwKICAgICBXZWJL
aXRUcmFuc2l0aW9uRXZlbnQgXAogICAgIFdlYlNvY2tldCBcCkBAIC02NjksNiArNjcwLDEwIEBA
IGlmZXEgKCQoT1MpLE1BQ09TKQogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoZmluZHN0cmluZyBF
TkFCTEVfRlVMTFNDUkVFTl9BUEksJChGRUFUVVJFX0RFRklORVMpKSwgRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKQorICAgIFVTRVJfQUdFTlRfU1RZTEVfU0hFRVRTIDo9ICQoVVNFUl9BR0VOVF9TVFlM
RV9TSEVFVFMpICQoV2ViQ29yZSkvY3NzL2Z1bGxzY3JlZW4uY3NzCitlbmRpZgorCiBVc2VyQWdl
bnRTdHlsZVNoZWV0cy5oIDogY3NzL21ha2UtY3NzLWZpbGUtYXJyYXlzLnBsICQoVVNFUl9BR0VO
VF9TVFlMRV9TSEVFVFMpCiAJcGVybCAkPCAkQCBVc2VyQWdlbnRTdHlsZVNoZWV0c0RhdGEuY3Bw
ICQoVVNFUl9BR0VOVF9TVFlMRV9TSEVFVFMpCiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gNjQ2NTMp
CisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xNDcwLDYgKzE0
NzAsMTMgQEAgX19aTjdXZWJDb3JlOUhUTUxOYW1lczhhdWRpb1RhZ0UKIF9fWk43V2ViQ29yZTlI
VE1MTmFtZXM4dmlkZW9UYWdFCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
K19fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
RVBOU183RWxlbWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdl
YmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJD
b3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0Vs
ZW1lbnRFCisjZW5kaWYKKwogI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiBf
X1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlMTRxdW90YUZvck9yaWdpbkVQS05T
XzE0U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UxNHNldE1heGltdW1TaXplRXgKSW5kZXg6IFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVy
ZURlZmluZXMueGNjb25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL0NvbmZp
Z3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2
ICs3NCw3IEBAIEVOQUJMRV9GSUxFX1JFQURFUl9tYWNvc3ggPSBFTkFCTEVfRklMRV8KIAogRU5B
QkxFX0ZJTEVfV1JJVEVSID0gOwogRU5BQkxFX0ZJTEVfU1lTVEVNID0gOworRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJID0gRU5BQkxFX0ZVTExTQ1JFRU5fQVBJOwogRU5BQkxFX0dFT0xPQ0FUSU9OID0g
RU5BQkxFX0dFT0xPQ0FUSU9OOwogCiBFTkFCTEVfSUNPTkRBVEFCQVNFID0gJChFTkFCTEVfSUNP
TkRBVEFCQVNFXyQoUkVBTF9QTEFURk9STV9OQU1FKSk7CkBAIC0xMjMsNCArMTI0LDQgQEAgRU5B
QkxFX1hIVE1MTVAgPSA7CiBFTkFCTEVfWFBBVEggPSBFTkFCTEVfWFBBVEg7CiBFTkFCTEVfWFNM
VCA9IEVOQUJMRV9YU0xUOwogCi1GRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZF
VENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVf
QkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAk
KEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VS
Q0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAkKEVOQUJMRV9GSUxF
X1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVO
QUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVY
RURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9E
RUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05P
VElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVf
UFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9T
SEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVO
QUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFC
TEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19V
U0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJ
TUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAk
KEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJM
RV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklO
RykgJChFTkFCTEVfQkxPQl9TTElDRSkgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5B
QkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxF
X0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9O
KSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFC
TEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfUkVBREVSKSAk
KEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAkKEVOQUJMRV9HRU9MT0NBVElPTikgJChFTkFCTEVfSUNPTkRBVEFCQVNFKSAk
KEVOQUJMRV9JTUFHRV9SRVNJWkVSKSAkKEVOQUJMRV9JTkRFWEVEX0RBVEFCQVNFKSAkKEVOQUJM
RV9JTlBVVF9TUEVFQ0gpICQoRU5BQkxFX0pBVkFTQ1JJUFRfREVCVUdHRVIpICQoRU5BQkxFX01B
VEhNTCkgJChFTkFCTEVfTUVURVJfVEFHKSAkKEVOQUJMRV9OT1RJRklDQVRJT05TKSAkKEVOQUJM
RV9PRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpICQoRU5BQkxFX1BST0dSRVNTX1RBRykgJChFTkFC
TEVfUlVCWSkgJChFTkFCTEVfU0FOREJPWCkgJChFTkFCTEVfU0hBUkVEX1dPUktFUlMpICQoRU5B
QkxFX1NWRykgJChFTkFCTEVfU1ZHX0FOSU1BVElPTikgJChFTkFCTEVfU1ZHX0FTX0lNQUdFKSAk
KEVOQUJMRV9TVkdfRE9NX09CSkNfQklORElOR1MpICQoRU5BQkxFX1NWR19GT05UUykgJChFTkFC
TEVfU1ZHX0ZPUkVJR05fT0JKRUNUKSAkKEVOQUJMRV9TVkdfVVNFKSAkKEVOQUJMRV9WSURFTykg
JChFTkFCTEVfV0VCX1NPQ0tFVFMpICQoRU5BQkxFX1dFQl9USU1JTkcpICQoRU5BQkxFX1dNTCkg
JChFTkFCTEVfV09SS0VSUykgJChFTkFCTEVfWEhUTUxNUCkgJChFTkFCTEVfWFBBVEgpICQoRU5B
QkxFX1hTTFQpOwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQ5OTcsNiArNDk5NywxMyBAQAogCQlDNUVCREQ4
NDEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzVFQkREODExMDVFRERFQzAwNTY4
MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLzsgfTsKIAkJQzZENzRBRDUwOUFBMjgy
RTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRDMwOUFBMjgyRTAwMEIwQTUyIC8q
IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5oICovOyB9OwogCQlDNkQ3NEFFNDA5QUEyOTBBMDAw
QjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovOyB9OworCQlDREE3OUE3MzExRTdBNEM3MDA4
NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OUE3MTExRTdBNEM3MDA4NzhEOTUgLyog
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi87IH07CisJCUNEQTc5QTc0MTFFN0E0Qzcw
MDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi87IH07CisJCUNERTIwODRBMTIw
MzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODQ3MTIwMzU1RTQw
MEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsgfTsKKwkJQ0RF
MjA4NEIxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODQ4
MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gKi87
IH07CisJCUNERTIwODRDMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudEludGVybmFsLmggKi87IH07CisJCUNERTIwODUyMTIwMzU2MUUwMEQxMEE3NSAv
KiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUyMDg1MDEyMDM1NjFFMDBEMTBBNzUgLyogSlNX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovOyB9OworCQlDREUyMDg1MzEyMDM1NjFF
MDBEMTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENERTIwODUxMTIwMzU2MUUwMEQxMEE3
NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OwogCQlDRTAyRjBDNDEx
RTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IENFMDJGMEMzMTFFODNBREQwMEM2Njg0QSAv
KiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UxNzJFMDAx
MTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0U0QzAwRTQxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxO
b1NjcmlwdEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQu
Y3BwICovOyB9OwpAQCAtMTA3MTQsNiArMTA3MjEsMTUgQEAKIAkJQzVFQkREODExMDVFRERFQzAw
NTY4MTZGIC8qIFN0b3JhZ2VFdmVudERpc3BhdGNoZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlz
dExldmVsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlv
bkxpc3RMZXZlbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDNkQ3NEFFMzA5QUEy
OTBBMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBm
dWxsc2NyZWVuLmNzcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuY3NzOyBwYXRoID0gZnVsbHNjcmVlbi5jc3M7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAv
KiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBNzlBNzYxMUU3QTREOTAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDcxMjAzNTVFNDAwRDEw
QTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDgxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUNERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUNERTIwODUxMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTAyRjBDMzExRTgzQUREMDBDNjY4NEEgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0UxNzJFMDAxMTM2RThDRTAwNjJBNTMzIC8q
IFpvb21Nb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFpvb21Nb2RlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFNEMwMEUzMTBGNkY3QkEwMENBMzhGNSAv
KiBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEhUTUxOb1NjcmlwdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTMxNjQsNiArMTMxODAsOSBAQAogCQkJCTMxQzBGRjQ2MEU0Q0VGREQwMDdENkZFNSAv
KiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkY0NzBFNENFRkREMDA3
RDZGRTUgLyogRE9NV2ViS2l0VHJhbnNpdGlvbkV2ZW50Lm1tICovLAogCQkJCTMxQzBGRjQ4MEU0
Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0aW9uRXZlbnRJbnRlcm5hbC5oICovLAor
CQkJCUNERTIwODQ3MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuaCAqLywKKwkJCQlDREUyMDg0ODEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50Lm1tICovLAorCQkJCUNERTIwODQ5MTIwMzU1RTQwMEQxMEE3NSAv
KiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRJbnRlcm5hbC5oICovLAogCQkJCTg1QzdG
NUU1MEFBRkJBRkIwMDQwMTRERCAvKiBET01XaGVlbEV2ZW50LmggKi8sCiAJCQkJODVDN0Y1RTYw
QUFGQkFGQjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQubW0gKi8sCiAJCQkpOwpAQCAtMTQ4MjMs
NiArMTQ4NDIsOCBAQAogCQkJCTMxQzBGRjNBMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdEFu
aW1hdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGM0IwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYzQzBFNENFRkFDMDA3RDZGRTUg
LyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKKwkJCQlDREUyMDg1MDEyMDM1NjFFMDBE
MTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNERTIw
ODUxMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICov
LAogCQkJCTY1REYzMUYxMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuY3BwICovLAog
CQkJCTY1REYzMUYyMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1doZWVsRXZlbnQuaCAqLywKIAkJCSk7
CkBAIC0xNjcyMyw2ICsxNjc0NCw3IEBACiAJCQkJQkM5QUREMjIwQ0M0MDMyNjAwMDk4QzRDIC8q
IFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmggKi8sCiAJCQkJMzE2MTFFNTQwRTFDNEQ0QTAwRjZB
NTc5IC8qIFdlYktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCAqLywKIAkJCQk0Q0RFNTRFQzBFNTU3
OTc4MDA4OUUyNkMgLyogd21sLmNzcyAqLywKKwkJCQlDRDRFMEFGQTExRjdCQzI3MDA5RDM4MTEg
LyogZnVsbHNjcmVlbi5jc3MgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGNzczsKIAkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CkBAIC0xNzI2NSw2ICsxNzI4Nyw5IEBACiAJCQkJMzFDMEZGMUIwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdEFuaW1hdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYx
QzBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMw
RkYxRDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuaWRsICovLAorCQkJ
CUNEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aCAqLywKKwkJCQlDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmNwcCAqLywKKwkJCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLywKIAkJCQkzMUMwRkYxRTBFNENFQjZFMDA3RDZG
RTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQkzMUMwRkYxRjBFNENFQjZF
MDA3RDZGRTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmggKi8sCiAJCQkJMzFDMEZGMjAwRTRD
RUI2RTAwN0Q2RkU1IC8qIFdlYktpdFRyYW5zaXRpb25FdmVudC5pZGwgKi8sCkBAIC0xOTk4Niw2
ICsyMDAxMSwxMCBAQAogCQkJCUUxQkU1MTJFMENGNkM1MTIwMDJFQTk1OSAvKiBYU0xUVW5pY29k
ZVNvcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTk3REQ0RDg3MEZERjRENkUwMEVDRjlBNCAvKiBY
U1NBdWRpdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTE3MkUwMTExMzZFOENFMDA2MkE1MzMg
LyogWm9vbU1vZGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5
NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCUNE
RTIwODRBMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aCBpbiBIZWFkZXJzICovLAorCQkJCUNERTIwODRDMTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RF
MjA4NTMxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKQEAgLTIyMzkwLDYgKzIyNDE5LDkgQEAKIAkJCQk5M0YxOUIwNTA4MjQ1
RTU5MDAxRTlBQkMgLyogWFNMVFByb2Nlc3NvckxpYnhzbHQuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTFCRTUxMkQwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5N0RENEQ4NjBGREY0RDZFMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlDREE3OUE3NDExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNERTIwODRCMTIwMzU1
RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gaW4gU291cmNl
cyAqLywKKwkJCQlDREUyMDg1MjEyMDM1NjFFMDBEMTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL29i
amMvUHVibGljRE9NSW50ZXJmYWNlcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3Mv
b2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2
LDYgKzE1NiwxMSBAQCBAaW50ZXJmYWNlIERPTURvY3VtZW50IDogRE9NTm9kZSBXRUJLSVRfCiAt
IChET01Ob2RlTGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopdGFnbmFt
ZSBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5
U2VsZWN0b3I6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lP
Tl80XzA7CiAtIChET01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2Vs
ZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorLSAodm9pZCl3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAo
dm9pZCl3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRf
VkVSU0lPTl80XzA7CistICh2b2lkKXdlYmtpdENhbmNlbEZ1bGxTY3JlZW4gQVZBSUxBQkxFX0lO
X1dFQktJVF9WRVJTSU9OXzRfMDsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTURvY3Vt
ZW50RnJhZ21lbnQgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpAQCAtMjI0LDYgKzIyOSwx
MCBAQCBAaW50ZXJmYWNlIERPTUVsZW1lbnQgOiBET01Ob2RlIFdFQktJVF9WCiAtIChET01Ob2Rl
TGlzdCAqKWdldEVsZW1lbnRzQnlDbGFzc05hbWU6KE5TU3RyaW5nICopbmFtZSBBVkFJTEFCTEVf
SU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NRWxlbWVudCAqKXF1ZXJ5U2VsZWN0b3I6KE5T
U3RyaW5nICopc2VsZWN0b3JzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CiAtIChE
T01Ob2RlTGlzdCAqKXF1ZXJ5U2VsZWN0b3JBbGw6KE5TU3RyaW5nICopc2VsZWN0b3JzIEFWQUlM
QUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVF
Tl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorLSAodm9pZCl3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworLSAodm9pZCl3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7
CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlIFdFQktJVF9W
RVJTSU9OXzFfMwpAQCAtNTY5LDYgKzU3OCw5IEBAIEBpbnRlcmZhY2UgRE9NSFRNTElGcmFtZUVs
ZW1lbnQgOiBET01IVE0KIEBwcm9wZXJ0eShjb3B5KSBOU1N0cmluZyAqd2lkdGg7CiBAcHJvcGVy
dHkocmVhZG9ubHksIHJldGFpbikgRE9NRG9jdW1lbnQgKmNvbnRlbnREb2N1bWVudDsKIEBwcm9w
ZXJ0eShyZWFkb25seSwgcmV0YWluKSBET01BYnN0cmFjdFZpZXcgKmNvbnRlbnRXaW5kb3cgQVZB
SUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NS
RUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCitAcHJvcGVydHkoYXNzaWduKSBCT09M
IHdlYmtpdEFsbG93RnVsbFNjcmVlbjsKKyNlbmRpZgogQGVuZAogCiBAaW50ZXJmYWNlIERPTUhU
TUxJbWFnZUVsZW1lbnQgOiBET01IVE1MRWxlbWVudCBXRUJLSVRfVkVSU0lPTl8xXzMKSW5kZXg6
IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0
b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDE1IEBAIFBzZXVkb0lkIENTU1Nl
bGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXAKICAgICAgICAgcmV0dXJuIE5PUFNFVURPOwogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgY2FzZSBQc2V1ZG9GdWxsU2Ny
ZWVuOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU47CisgICAgY2FzZSBQc2V1ZG9GdWxsU2Ny
ZWVuRG9jOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fRE9DOworICAgIGNhc2UgUHNldWRv
RnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQ6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTl9ST09U
X1dJVEhfVEFSR0VUOworI2VuZGlmCisgICAgICAgICAgICAKICAgICBjYXNlIFBzZXVkb0lucHV0
TGlzdEJ1dHRvbjoKICNpZiBFTkFCTEUoREFUQUxJU1QpCiAgICAgICAgIHJldHVybiBJTlBVVF9M
SVNUX0JVVFRPTjsKQEAgLTQyMiw2ICs0MzEsMTEgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3Ry
aW5nSW1wbCosIENTU1NlbAogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBm
aXJzdFBhZ2UsICgiZmlyc3QiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGxlZnRQYWdlLCAoImxlZnQiKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNT
dHJpbmcsIHJpZ2h0UGFnZSwgKCJyaWdodCIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW4sICgiLXdl
YmtpdC1mdWxsLXNjcmVlbiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmlu
ZywgZnVsbFNjcmVlbkRvYywgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWRvYyIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQsICgi
LXdlYmtpdC1mdWxsLXNjcmVlbi1kb2Mtd2l0aC10YXJnZXQiKSk7CisjZW5kaWYKIAogICAgIHN0
YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZT4q
IG5hbWVUb1BzZXVkb1R5cGUgPSAwOwogICAgIGlmICghbmFtZVRvUHNldWRvVHlwZSkgewpAQCAt
NTMzLDYgKzU0NywxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2Vs
CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmaXJzdFBhZ2UuaW1wbCgpLCBDU1NTZWxl
Y3Rvcjo6UHNldWRvRmlyc3RQYWdlKTsKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGxl
ZnRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlKTsKICAgICAgICAgbmFt
ZVRvUHNldWRvVHlwZS0+c2V0KHJpZ2h0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9S
aWdodFBhZ2UpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgbmFtZVRvUHNl
dWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW4uaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNj
cmVlbik7CisgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuRG9jLmltcGwo
KSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2MpOworICAgICAgICBuYW1lVG9Qc2V1
ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6
UHNldWRvRnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQpOworI2VuZGlmCiAgICAgfQogICAgIHJldHVy
biBuYW1lVG9Qc2V1ZG9UeXBlOwogfQpAQCAtNjYyLDYgKzY4MSwxMSBAQCB2b2lkIENTU1NlbGVj
dG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvCiAgICAgY2FzZSBQc2V1ZG9TaW5nbGVCdXR0b246
CiAgICAgY2FzZSBQc2V1ZG9Ob0J1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vdFBhcnNlZDoKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuOgorICAg
IGNhc2UgUHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW5Eb2NX
aXRoVGFyZ2V0OgorI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUHNldWRvRmlyc3RQ
YWdlOgogICAgIGNhc2UgUHNldWRvTGVmdFBhZ2U6CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTZWxl
Y3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHJldmlzaW9u
IDY0NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
MjE3LDYgKzIxNywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBQc2V1ZG9M
ZWZ0UGFnZSwKICAgICAgICAgICAgIFBzZXVkb1JpZ2h0UGFnZSwKICAgICAgICAgICAgIFBzZXVk
b0ZpcnN0UGFnZSwKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgICAgICBQc2V1
ZG9GdWxsU2NyZWVuLAorICAgICAgICAgICAgUHNldWRvRnVsbFNjcmVlbkRvYywKKyAgICAgICAg
ICAgIFBzZXVkb0Z1bGxTY3JlZW5Eb2NXaXRoVGFyZ2V0LAorI2VuZGlmCiAgICAgICAgIH07CiAK
ICAgICAgICAgZW51bSBNYXJnaW5Cb3hUeXBlIHsKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01NTMsNiArNTUzLDE0IEBAIHN0YXRpYyB2b2lkIGxvYWRGdWxs
RGVmYXVsdFN0eWxlKCkKICAgICBTdHJpbmcgcXVpcmtzUnVsZXMgPSBTdHJpbmcocXVpcmtzVXNl
ckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpKSArIFJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+ZXh0cmFRdWlya3NTdHlsZVNoZWV0KCk7CiAgICAg
Q1NTU3R5bGVTaGVldCogcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzUnVsZXMpOwog
ICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsIHNj
cmVlbkV2YWwoKSk7CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIC8vIEZ1
bGwtc2NyZWVuIHJ1bGVzLgorICAgIFN0cmluZyBmdWxsc2NyZWVuUnVsZXMgPSBTdHJpbmcoZnVs
bHNjcmVlblVzZXJBZ2VudFN0eWxlU2hlZXQsIHNpemVvZihmdWxsc2NyZWVuVXNlckFnZW50U3R5
bGVTaGVldCkpICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYURlZmF1bHRTdHls
ZVNoZWV0KCk7CisgICAgQ1NTU3R5bGVTaGVldCogZnVsbHNjcmVlblNoZWV0ID0gcGFyc2VVQVNo
ZWV0KGZ1bGxzY3JlZW5SdWxlcyk7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVl
dChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChmdWxsc2NyZWVuU2hlZXQsIHNjcmVlbkV2YWwoKSk7CisjZW5k
aWYKIH0KIAogc3RhdGljIHZvaWQgbG9hZFNpbXBsZURlZmF1bHRTdHlsZSgpCkBAIC0yNjI5LDYg
KzI2MzcsMzcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OgogICAg
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgIH0KKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuOgorICAgICAgICAgICAgICAgIC8vIFdoaWxl
IGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUsIGFuZCB0aGUgZG9jdW1lbnQn
cyBjdXJyZW50IGZ1bGxzY3JlZW4gCisgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBpcyBhbiBl
bGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbicgcHNldWRvY2xhc3MgYXBw
bGllcyB0byAKKyAgICAgICAgICAgICAgICAvLyB0aGF0IGVsZW1lbnQuIEFsc28sIGFuIDxpZnJh
bWU+LCA8b2JqZWN0PiBvciA8ZW1iZWQ+IGVsZW1lbnQgd2hvc2UgY2hpbGQgYnJvd3NpbmcgCisg
ICAgICAgICAgICAgICAgLy8gY29udGV4dCdzIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVu
IHN0YXRlIGhhcyB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBhcHBsaWVkLgorICAgICAg
ICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBl
LT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYzoKKyAgICAg
ICAgICAgICAgICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRl
LCB0aGUgJ2Z1bGwtc2NyZWVuLWRvYycgcHNldWRvY2xhc3MgYXBwbGllcyAKKyAgICAgICAgICAg
ICAgICAvLyB0byB0aGUgcm9vdCBlbGVtZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAg
ICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jV2l0aFRhcmdldDoKKyAgICAgICAgICAgICAg
ICAvLyBXaGlsZSBhIERvY3VtZW50IGlzIGluIHRoZSBmdWxsc2NyZWVuIHN0YXRlIGFuZCB0aGUg
ZG9jdW1lbnQncyBjdXJyZW50IGZ1bGxzY3JlZW4gZWxlbWVudCAKKyAgICAgICAgICAgICAgICAv
LyBpcyBhbiBlbGVtZW50IGluIHRoZSBkb2N1bWVudCwgdGhlICdmdWxsLXNjcmVlbi1kb2Mtd2l0
aC10YXJnZXQnIHBzZXVkb2NsYXNzIGFwcGxpZXMgdG8gCisgICAgICAgICAgICAgICAgLy8gdGhl
IHJvb3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50LgorICAgICAgICAgICAgICAgIGlmICghZS0+
ZG9jdW1lbnQoKS0+d2Via2l0SXNGdWxsU2NyZWVuKCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBlLT5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+Y29udGFpbnMoZS0+ZG9jdW1lbnQoKS0+d2Vi
a2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0OgpJbmRleDog
V2ViQ29yZS9jc3MvZnVsbHNjcmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvZnVs
bHNjcmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNyBAQAorOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAg
IHBvc2l0aW9uOmZpeGVkOworICAgIHRvcDowOworICAgIGxlZnQ6MDsKKyAgICByaWdodDowOwor
ICAgIGJvdHRvbTowOworfQorCis6LXdlYmtpdC1mdWxsLXNjcmVlbi1kb2Mtd2l0aC10YXJnZXQg
eworICAgIG92ZXJmbG93OmhpZGRlbjsKK30KKwordmlkZW86LXdlYmtpdC1mdWxsLXNjcmVlbiB7
CisgICAgd2lkdGg6IDEwMCU7CisgICAgaGVpZ2h0OiAxMDAlCisgICAgaW1hZ2UtZml0OiBmaWxs
OworfQorCitpbWc6LXdlYmtpdC1mdWxsLXNjcmVlbiB7CisgICAgd2lkdGg6IDEwMCU7CisgICAg
aGVpZ2h0OiAxMDAlOworICAgIGltYWdlLWZpdDogZmlsbDsKK30KKwordmlkZW86LXdlYmtpdC1m
dWxsLXBhZ2UtbWVkaWE6LXdlYmtpdC1mdWxsLXNjcmVlbjo6LXdlYmtpdC1tZWRpYS1jb250cm9s
cy1wYW5lbCB7CisgICAgYm90dG9tOiAwcHg7Cit9CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2
NDY1MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAw
LDYgKzIwMCwxMCBAQAogI2luY2x1ZGUgIkhUTUxOb1NjcmlwdEVsZW1lbnQuaCIKICNlbmRpZgog
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1l
c3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNvZGU7CkBAIC00MDUsNiArNDA5LDEwIEBA
IERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IEsKICNlbmRpZgogICAgICwg
bV93ZWFrUmVmZXJlbmNlKERvY3VtZW50V2Vha1JlZmVyZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAg
ICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRBdHRyKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICAsIG1faXNGdWxsU2NyZWVuKDApCisgICAgLCBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2Ny
ZWVuKDApCisjZW5kaWYKIHsKICAgICBtX2RvY3VtZW50ID0gdGhpczsKIApAQCAtNDg3LDYgKzQ5
NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0UmVmKCkKICAgICAgICAgbV9hY3RpdmVO
b2RlID0gMDsKICAgICAgICAgbV90aXRsZUVsZW1lbnQgPSAwOwogICAgICAgICBtX2RvY3VtZW50
RWxlbWVudCA9IDA7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICBtX2Z1bGxT
Y3JlZW5FbGVtZW50ID0gMDsKKyNlbmRpZgogCiAgICAgICAgIC8vIHJlbW92ZUFsbENoaWxkcmVu
KCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMsIGRvIGl0IHVwZnJvbnQgdG8gYXZvaWQg
aGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMgaW4gdGhlIG1hcC4KICAgICAgICAgbV9lbGVtZW50c0J5
SWQuY2xlYXIoKTsKQEAgLTMxNjQsNiArMzE3NSwxNSBAQCB2b2lkIERvY3VtZW50Ojpub2RlV2ls
bEJlUmVtb3ZlZChOb2RlKiBuCiAgICAgICAgIGZyYW1lLT5zZWxlY3Rpb24oKS0+bm9kZVdpbGxC
ZVJlbW92ZWQobik7CiAgICAgICAgIGZyYW1lLT5kcmFnQ2FyZXRDb250cm9sbGVyKCktPm5vZGVX
aWxsQmVSZW1vdmVkKG4pOwogICAgIH0KKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgQVNTRVJUKG4pOworICAgIGlmIChuLT5jb250YWlucyhtX2Z1bGxTY3JlZW5FbGVtZW50
LmdldCgpKSkgeworICAgICAgICBBU1NFUlQobiAhPSBkb2N1bWVudEVsZW1lbnQoKSk7CisgICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgbV9m
dWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQ6OmNyZWF0ZSgpKTsKKyAgICB9CisjZW5kaWYKIH0KIAogdm9pZCBEb2N1bWVudDo6dGV4dElu
c2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAt
MzMzMCw2ICszMzUwLDEwIEBAIFBhc3NSZWZQdHI8RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVu
dCgKICNlbmRpZgogICAgICAgICBldmVudCA9IFRvdWNoRXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlm
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAi
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAgICAgIGV2ZW50ID0gV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRpZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5U
QVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09ICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50
IikKICAgICAgICAgZXZlbnQgPSBEZXZpY2VPcmllbnRhdGlvbkV2ZW50OjpjcmVhdGUoKTsKQEAg
LTMzODEsNiArMzQwNSwxMCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZChjCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50
cyh0cnVlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdl
RXZlbnQpCisgICAgICAgIGFkZExpc3RlbmVyVHlwZShGVUxMU0NSRUVOQ0hBTkdFX0xJU1RFTkVS
KTsKKyNlbmRpZgogfQogCiBDU1NTdHlsZURlY2xhcmF0aW9uKiBEb2N1bWVudDo6Z2V0T3ZlcnJp
ZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikKQEAgLTUwOTQsNSArNTEyMiw4NSBAQCBJ
bnNwZWN0b3JDb250cm9sbGVyKiBEb2N1bWVudDo6aW5zcGVjdG9yCiAgICAgcmV0dXJuIHBhZ2Uo
KSA/IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKIH0KICNlbmRpZgorICAgIAor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuKCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRo
S2V5cyhkb2N1bWVudEVsZW1lbnQoKSwgZmFsc2UpOworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1bWVudEVsZW1lbnQoKSwgdHJ1ZSk7Cit9CisgICAg
Cit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5
cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGtleXNFbmFibGVkKQoreworICAgIGlmICghcGFnZSgp
IHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgZWxlbWVudCA9IGRvY3VtZW50RWxl
bWVudCgpOworICAgIAorICAgIGlmIChwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9y
dHNGdWxsc2NyZWVuRm9yRWxlbWVudChlbGVtZW50KSkgeworICAgICAgICBtX2Z1bGxTY3JlZW5F
bGVtZW50ID0gMDsKKyAgICAgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbiA9IGtleXNF
bmFibGVkOworICAgICAgICBwYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2Ny
ZWVuRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICB9Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtp
dENhbmNlbEZ1bGxTY3JlZW4oKQoreworICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRp
bmdzKCktPmZ1bGxTY3JlZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBp
ZiAocGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1l
bnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSkpCisgICAgICAgIHBhZ2UoKS0+Y2hyb21lKCkt
PmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5n
ZXQoKSk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVu
Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChwYWdlKCkgJiYgcGFn
ZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIG1fZnVsbFNjcmVl
bkVsZW1lbnQgPSBlbGVtZW50OworICAgIG1faXNGdWxsU2NyZWVuID0gdHJ1ZTsKKyAgICBkb2N1
bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAg
IGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5z
ZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOworICAgIAorICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1
bGxTY3JlZW5FbGVtZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dDo6Y3JlYXRlKCkpOworICAgIGVsc2UgCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNw
YXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworfQorICAg
IAordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChFbGVtZW50KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1
bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9pc0Z1bGxTY3Jl
ZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0gZmFsc2U7Cisg
ICAgLy8gbV9mdWxsU2NyZWVuRWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQ7IHJlY2Fs
YyB0aGUgc3R5bGUgb2YgCisgICAgLy8gdGhlIHBhc3NlZCBpbiBlbGVtZW50IGluc3RlYWQuCisg
ICAgCisgICAgaWYgKGVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNh
bGMoRnVsbFN0eWxlQ2hhbmdlKTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHls
ZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAg
ICAKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGRv
Y3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dDo6Y3JlYXRlKCkpOworfQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNzUsNiArMjc1LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRS
SUJVVEVfRVZFTlRfTElTVEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIodG91Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVl
bmNoYW5nZSk7CisjZW5kaWYKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsg
cmV0dXJuIG1fZG9jVHlwZS5nZXQoKTsgfQogCkBAIC02ODgsNyArNjkxLDggQEAgcHVibGljOgog
ICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDgwMCwKICAg
ICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgxMDAwLAogICAg
ICAgICBUT1VDSF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAsCi0gICAg
ICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMAorICAgICAg
ICBCRUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAsCisgICAgICAg
IEZVTExTQ1JFRU5DSEFOR0VfTElTVEVORVIgICAgICAgICAgICA9IDB4ODAwMCwKICAgICB9Owog
CiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29u
c3QgeyByZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KQEAgLTEwMTQs
NiArMTAxOCwyMSBAQCBwdWJsaWM6CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55
TWVkaWFDYW5TdGFydExpc3RlbmVyKCk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZEF0
dHJpYnV0ZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX2lkQXR0cmlidXRlTmFtZTsgfQorICAgIAor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbigp
IGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3ZWJraXRJc0Z1bGxT
Y3JlZW5XaXRoS2V5c0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbiAmJiBt
X2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOyB9CisgICAgRWxlbWVudCogd2Via2l0Q3VycmVu
dEZ1bGxTY3JlZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudC5n
ZXQoKTsgfQorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB2b2lkIHdl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RG
dWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqLCBib29sIGtleXNFbmFibGVkKTsK
KyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAKKyAgICB2b2lkIHdlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIHdlYmtp
dERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgd2Via2l0
V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAgdm9pZCB3ZWJraXRE
aWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworI2VuZGlmCiAKICAgICBib29s
IHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRlRGlzYWJsZWQ7IH0KICAgICB2
b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fd3JpdGVEaXNhYmxlZCA9IGZsYWc7
IH0KQEAgLTEzMDEsNiArMTMyMCwxMiBAQCBwcml2YXRlOgogICAgIEhhc2hTZXQ8TWVkaWFDYW5T
dGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJzOwogCiAgICAgUXVhbGlmaWVk
TmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbjsKKyAgICBib29sIG1fYXJlS2V5c0VuYWJsZWRJbkZ1
bGxTY3JlZW47CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZnVsbFNjcmVlbkVsZW1lbnQ7CisjZW5k
aWYKIH07CiAKIGlubGluZSBib29sIERvY3VtZW50OjpoYXNFbGVtZW50V2l0aElkKEF0b21pY1N0
cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gNjQ2NTMpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI0NSw2ICsyNDUsMTUg
QEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbRG9udEVudW1dIHZvaWQgaW5pdGlhbGl6ZVdNTFBh
Z2VTdGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbjsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gd2Via2l0SXNGdWxsU2NyZWVuV2l0
aEtleXNFbmFibGVkOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCB3ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQ7CisgICAgICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNj
cmVlbigpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwg
IUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJp
YnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0
OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODYsNSArMTU4NiwxNyBAQCBib29sIEVsZW1lbnQ6OmNo
aWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0dXJuIE5vZGU6OmNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpCit7CisgICAg
ZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhp
cywgZmFsc2UpOworfQorCit2b2lkIEVsZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0
aEtleXMoKQoreworICAgIGRvY3VtZW50KCktPndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudFdpdGhLZXlzKHRoaXMsIHRydWUpOworfQorI2VuZGlmICAgIAogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvZG9tL0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVU
RV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxs
c2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBGcmFnbWVu
dFNjcmlwdGluZ1Blcm1pc3Npb24gPSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCkBAIC0y
OTIsNiArMjk1LDExIEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9v
bCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsgCiAjZW5kaWYKKyAgICAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbigpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2Vu
ZGlmCiAKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpJbmRleDogV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5p
ZGwJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKICNlbmRpZgogCisjaWYgZGVmaW5lZChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICB2
b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9P
QkpFQ1RJVkVfQykgfHwgIUxBTkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhh
bmRsZXIgRE9NIGF0dHJpYnV0ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRM
aXN0ZW5lciBvbmFib3J0OwpAQCAtMjA1LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAg
ICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0
UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNobW92ZTsKICAgICAgICAgYXR0cmlidXRlIFtE
b250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRM
aXN0ZW5lciBvbnRvdWNoZW5kOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlv
bmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hj
YW5jZWw7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZVTExTQ1JF
RU5fQVBJXSBFdmVudExpc3RlbmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKICNlbmRpZgog
ICAgIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FdmVudC5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRXZlbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNiArMTYyLDEzIEBAIGJvb2wgRXZlbnQ6OmlzV2Vi
S2l0VHJhbnNpdGlvbkV2ZW50KCkgY28KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCitib29sIEV2ZW50Ojppc1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZl
bnQ6OmlzWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
ZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0V2ZW50LmgJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRXZlbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBib29sIGlzV2ViS2l0QW5pbWF0aW9uRXZlbnQoKSBjb25zdDsKICAgICAgICAg
dmlydHVhbCBib29sIGlzV2ViS2l0VHJhbnNpdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAgICAgIHZp
cnR1YWwgYm9vbCBpc0JlZm9yZUxvYWRFdmVudCgpIGNvbnN0OworI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKyAgICAgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50KCkgY29uc3Q7CisjZW5kaWYKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNTVkdab29tRXZlbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRXZl
bnROYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkocmV2aXNp
b24gNjQ2NTMpCisrKyBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1OSw2ICsxNTksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgXAogICAgIG1hY3JvKGxv
YWRlbmQpIFwKICAgICBcCisgICAgbWFjcm8od2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKKyAgICBc
CiAvLyBlbmQgb2YgRE9NX0VWRU5UX05BTUVTX0ZPUl9FQUNICiAKICAgICBjbGFzcyBFdmVudE5h
bWVzIDogcHVibGljIE5vbmNvcHlhYmxlIHsKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKKyNpbmNsdWRl
ICJFdmVudE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIEZyb20gdGhl
IE1vemlsbGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBbZnVsbFNjcmVlbkNoYW5nZUV2ZW50
XSBidWJibGVzIAorLy8gYW5kIGlzIG5vdCBjYW5jZWxsYWJsZS4iCisKK1dlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKKzogRXZlbnQoZXZl
bnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpCit7Cit9
CisKK1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudCgpCit7Cit9CisKK3ZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0V2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZykKK3sK
KyAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaW5pdEV2
ZW50KHR5cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7Cit9CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKwor
I2luY2x1ZGUgIkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50PiBjcmVhdGUoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQpOworICAgIH0gICAgICAgIAorICAgIHZpcnR1YWwgfldlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCgpOworICAgIAorICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKTsKKyAgICAKKyAgICB2aXJ0dWFs
IGJvb2wgaXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVl
OyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpOwor
ICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUp
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKworI2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9o
CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRs
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGV2ZW50cyB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTJkZVTExTQ1JF
RU5fQVBJLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50IDogRXZlbnQgeworCisgICAgICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlQXJnLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcpOwor
ICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24g
NjQ2NTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC0yMjMsNiArMjIzLDcgQEAgb253ZWJraXRhbmltYXRpb25pdGVyYXRpb24KIG9ud2Vi
a2l0YW5pbWF0aW9uZW5kCiBvbndlYmtpdGJlZ2luZnVsbHNjcmVlbgogb253ZWJraXRlbmRmdWxs
c2NyZWVuCitvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UKIG9ud2Via2l0dHJhbnNpdGlvbmVuZAog
b3B0aW11bQogcGF0dGVybgpAQCAtMjgyLDUgKzI4Myw2IEBAIHZpZXdzb3VyY2UKIHZsaW5rCiB2
c3BhY2UKIHdlYmtpdGRpcmVjdG9yeQord2Via2l0YWxsb3dmdWxsc2NyZWVuCiB3aWR0aAogd3Jh
cApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDEwIEBACiAjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorI2luY2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKQEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBIVE1MRWxlbWVudDo6cGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnRvdWNoY2FuY2VsQXR0cikg
ewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGNh
bmNlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
b253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOworI2VuZGlmCiAgICAgfQogfQog
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtNjQsNiArNjQsMTEgQEAgbW9kdWxl
IGh0bWwgewogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpICYmIExBTkdVQUdFX09C
SkVDVElWRV9DCiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdGl0bGVEaXNw
bGF5U3RyaW5nOwogI2VuZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkg
JiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4oKTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7
CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6OkhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyAgICAsIG1fYWxsb3dzRnVsbFNjcmVlbihmYWxzZSkKKyNlbmRpZgogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOwogfQpAQCAtMTMyLDYgKzEzNSwxMCBAQCB2b2lkIEhU
TUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94
QXR0cmlidXRlKGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpCisgICAgICAg
IG1fYWxsb3dzRnVsbFNjcmVlbiA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1M
RnJhbWVFbGVtZW50QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElG
cmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAg
ICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCB3ZWJraXRBbGxvd0Z1bGxT
Y3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Z1bGxTY3JlZW47IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEFsbG93RnVsbFNjcmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dzRnVsbFNjcmVlbiA9
IHZhbHVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTUwLDYgKzU1LDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKICAg
ICBBdG9taWNTdHJpbmcgbV9uYW1lOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBi
b29sIG1fYWxsb3dzRnVsbFNjcmVlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1lbnQuaWRsCShyZXZpc2lvbiA2NDY1MykK
KysrIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDkgQEAgbW9kdWxlIGh0bWwgewogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3Rd
IERPTVN0cmluZyBuYW1lOwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBz
YW5kYm94OwogICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzY3JvbGxpbmc7
CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVO
X0FQSQorICAgICAgICBhdHRyaWJ1dGUgW1JlZmxlY3RdIGJvb2xlYW4gd2Via2l0QWxsb3dGdWxs
U2NyZWVuOworI2VuZGlmCiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVjdF0gRE9NU3RyaW5nIHNy
YzsKICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgd2lkdGg7CiAKSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsNyArMzEyLDcg
QEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZQogewogICAgIGlmICht
X25ldHdvcmtTdGF0ZSA+IE5FVFdPUktfRU1QVFkpCiAgICAgICAgIHBhdXNlKHByb2Nlc3NpbmdV
c2VyR2VzdHVyZSgpKTsKLSAgICBpZiAobV9pc0Z1bGxzY3JlZW4pCisgICAgaWYgKGlzRnVsbHNj
cmVlbigpKQogICAgICAgICBleGl0RnVsbHNjcmVlbigpOwogICAgIEhUTUxFbGVtZW50OjpyZW1v
dmVkRnJvbURvY3VtZW50KCk7CiB9CkBAIC0xODUyLDcgKzE4NTIsNyBAQCB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2FkCiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9j
dW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKQogewotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyAg
ICBpZiAoaXNGdWxsc2NyZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CiAKICAgICBt
X2luQWN0aXZlRG9jdW1lbnQgPSBmYWxzZTsKQEAgLTIwMTMsMjQgKzIwMTMsNDQgQEAgdm9pZCBI
VE1MTWVkaWFFbGVtZW50OjpjcmVhdGVNZWRpYVBsYXllcgogfQogI2VuZGlmIC8vIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogCitib29sIEhUTUxNZWRpYUVsZW1lbnQ6OmlzRnVsbHNj
cmVlbigpIGNvbnN0IAoreworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICByZXR1cm4g
ZG9jdW1lbnQoKSA/IGRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgp
ID09IHRoaXMgOiBmYWxzZTsKKyNlbHNlCisgICAgcmV0dXJuIG1faXNGdWxsc2NyZWVuOworI2Vu
ZGlmCit9CisKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZW50ZXJGdWxsc2NyZWVuKCkKIHsKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgQVNTRVJUKCFpc0Z1bGxzY3JlZW4oKSk7Cisg
ICAgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworI2Vsc2UKICAgICBBU1NFUlQo
IW1faXNGdWxsc2NyZWVuKTsKICAgICBtX2lzRnVsbHNjcmVlbiA9IHRydWU7CiAgICAgaWYgKGRv
Y3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGRvY3VtZW50KCktPnBh
Z2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOwor
ICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxs
c2NyZWVuRm9yRWxlbWVudCh0aGlzKTsKICAgICAgICAgc2NoZWR1bGVFdmVudChldmVudE5hbWVz
KCkud2Via2l0YmVnaW5mdWxsc2NyZWVuRXZlbnQpOwogICAgIH0KKyNlbmRpZgogfQogCiB2b2lk
IEhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKCkKIHsKKyNpZiBFTkFCTEUoRlVMTFND
UkVFTl9BUEkpCisgICAgQVNTRVJUKGlzRnVsbHNjcmVlbigpKTsKKyAgICBpZiAoZG9jdW1lbnQo
KSkKKyAgICAgICAgZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworI2Vsc2UK
ICAgICBBU1NFUlQobV9pc0Z1bGxzY3JlZW4pOwogICAgIG1faXNGdWxsc2NyZWVuID0gZmFsc2U7
CiAgICAgaWYgKGRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS0+cGFnZSgpKSB7Ci0gICAgICAgIGRv
Y3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0RnVsbHNjcmVlbkZvck5v
ZGUodGhpcyk7CisgICAgICAgIGRvY3VtZW50KCktPnBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgp
LT5leGl0RnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiAgICAgICAgIHNjaGVkdWxlRXZlbnQo
ZXZlbnROYW1lcygpLndlYmtpdGVuZGZ1bGxzY3JlZW5FdmVudCk7CiAgICAgfQorI2VuZGlmCiB9
CiAKIFBsYXRmb3JtTWVkaWEgSFRNTE1lZGlhRWxlbWVudDo6cGxhdGZvcm1NZWRpYSgpIGNvbnN0
CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3
IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgaGFzU2luZ2xlU2VjdXJpdHlPcmlnaW4oKSBjb25zdCB7
IHJldHVybiAhbV9wbGF5ZXIgfHwgbV9wbGF5ZXItPmhhc1NpbmdsZVNlY3VyaXR5T3JpZ2luKCk7
IH0KICAgICAKLSAgICBib29sIGlzRnVsbHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxs
c2NyZWVuOyB9CisgICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25zdDsKICAgICB2b2lkIGVudGVy
RnVsbHNjcmVlbigpOwogICAgIHZvaWQgZXhpdEZ1bGxzY3JlZW4oKTsKIApJbmRleDogV2ViQ29y
ZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MVmlkZW9FbGVtZW50LmNwcAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL2h0bWwvSFRN
TFZpZGVvRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNs
dWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJSZW5kZXJW
aWRlby5oIgorI2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMTI2LDExICsxMjcsMTYgQEAgYm9vbCBIVE1MVmlkZW9FbGVtZW50OjpzdXBwb3J0c0Z1bGxz
Y3JlZQogICAgIGlmICghcGFnZSkgCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyAgICBpZiAoIXBhZ2UtPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5F
bmFibGVkKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbmRpZgorICAgIAogICAgIGlmICgh
cGxheWVyKCkgfHwgIXBsYXllcigpLT5zdXBwb3J0c0Z1bGxzY3JlZW4oKSB8fCAhcGxheWVyKCkt
Pmhhc1ZpZGVvKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIC8vIENoZWNrIHdpdGgg
dGhlIHBsYXRmb3JtIGNsaWVudC4KLSAgICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgp
LT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOworICAgIHJldHVybiBwYWdlLT5jaHJv
bWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiB9CiAK
IHVuc2lnbmVkIEhUTUxWaWRlb0VsZW1lbnQ6OnZpZGVvV2lkdGgoKSBjb25zdApJbmRleDogV2Vi
Q29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJv
bWVDbGllbnQuaAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw5ICsyNDIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxHTEVTMkNvbnRleHQ+IGdldE9mZnNjcmVlbkdM
RVMyQ29udGV4dCgpID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0
c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBmYWxzZTsgfQotICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9Ci0gICAgICAg
IHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQorICAgICAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50Kikg
eyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZv
ckVsZW1lbnQoRWxlbWVudCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxzY3Jl
ZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KIAogI2lmIEVOQUJMRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJlY3RGb3JUaWxlZEJhY2tpbmdT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJbmRleDogV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZp
c2lvbiA2NDY1MykKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEzNyw2ICsxMzcsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAs
IG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwgYmUgZGVsZXRlZCBzb29u
LCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKyAgICAsIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAg
ICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZh
bGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEzLDYgKzMxMywxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRF
bmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA9IGZsYWc7
IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykg
eyBtX2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIGZ1bGxTY3Jl
ZW5FbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyNl
bmRpZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1f
bWVtb3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAKQEAgLTQwNyw2ICs0
MTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9odG1sNVRyZWVCdWls
ZGVyRW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRvIG5vdCB1c2UuCiAgICAg
ICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOwogICAgICAgICBib29s
IG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuQVBJRW5hYmxlZCA6IDE7CisjZW5kaWYKICAgICAg
ICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBib29sIG1faW50ZXJhY3Rp
dmVGb3JtVmFsaWRhdGlvbjogMTsKICAgICAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlh
Q29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRp
YUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9yZW5kZXJp
bmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNyArNzc2
LDEwIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKIHZvaWQgTWVk
aWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50KSB7Ci0gICAgICAgIG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAg
ICAgICAgaWYgKG1lZGlhRWxlbWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1l
ZGlhRWxlbWVudCgpLT5leGl0RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXRE
ZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKGV2ZW50KTsKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0
eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3
OSw3IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FVEVSX0hPUklaT05UQUxfQkFSLCBNRVRFUl9I
T1JJWk9OVEFMX09QVElNVU0sIE1FVEVSX0hPUklaT05UQUxfU1VCT1BUSU1BTCwgTUVURVJfSE9S
SVpPTlRBTF9FVkVOX0xFU1NfR09PRCwKICAgICBNRVRFUl9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZF
UlRJQ0FMX09QVElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NVQk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FM
X0VWRU5fTEVTU19HT09ELCAKICAgICBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lELAorICAg
IEZVTExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZVTExfU0NSRUVOX1JPT1RfV0lUSF9UQVJH
RVQsCiAgICAgRklSU1RfUFVCTElDX1BTRVVET0lEID0gRklSU1RfTElORSwKICAgICBGSVJTVF9J
TlRFUk5BTF9QU0VVRE9JRCA9IEZJTEVfVVBMT0FEX0JVVFRPTiwKICAgICBQVUJMSUNfUFNFVURP
SURfTUFTSyA9ICgoMSA8PCBGSVJTVF9JTlRFUk5BTF9QU0VVRE9JRCkgLSAxKSAmIH4oKDEgPDwg
RklSU1RfUFVCTElDX1BTRVVET0lEKSAtIDEpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63477</attachid>
            <date>2010-08-04 12:07:41 -0700</date>
            <delta_ts>2010-08-10 03:16:33 -0700</delta_ts>
            <desc>FullScreen-LayoutTests</desc>
            <filename>FullScreen-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>20122</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY0NjUzKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDkgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2Ny
ZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAgVGVzdHMgdGhl
IG5ldyBmdWxsIHNjcmVlbiBBUEk6CisgICAgICAgIAorICAgICAgICBmdWxsLXNjcmVlbi1hcGku
aHRtbDogdGVzdHMgZm9yIHRoZSBwcmVzZW5jZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGFwaXMu
CisgICAgICAgIGZ1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbDogdGVzdHMgdGhhdCBjbGllbnRzIGNh
biByZXF1ZXN0IHRoZSBicm93c2VyIGVudGVyIGZ1bGwgc2NyZWVuIG1vZGUgc3VjY2Vzc2Z1bGx5
LgorICAgICAgICBmdWxsLXNjcmVlbi1jc3MuaHRtbDogdGVzdHMgdGhhdCB0aGUgbmV3IGZ1bGwg
c2NyZWVuIHBzZXVkbyBjbGFzc2VzIGFyZSBhcHBsaWVkIG9uY2UgZnVsbCBzY3JlZW4gbW9kZSBp
cyBlbnRlcmVkLgorCisgICAgICAgICogZnVsbHNjcmVlbjogQWRkZWQuCisgICAgICAgICogZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanM6IEFkZGVkLgorICAgICAgICAoZGlzYWJsZUZ1bGxUZXN0
RGV0YWlsc1ByaW50aW5nKToKKyAgICAgICAgKGxvZ0NvbnNvbGUpOgorICAgICAgICAodGVzdEFu
ZEVuZCk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKHRlc3RFeHBlY3RlZCk6CisgICAgICAg
IChyZXBvcnRFeHBlY3RlZCk6CisgICAgICAgIChydW5TaWxlbnRseSk6CisgICAgICAgIChydW4p
OgorICAgICAgICAod2FpdEZvckV2ZW50QW5kRW5kKToKKyAgICAgICAgKHdhaXRGb3JFdmVudC5f
ZXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3YWl0Rm9yRXZlbnQpOgorICAgICAgICAod2FpdEZv
ckV2ZW50VGVzdEFuZEVuZCk6CisgICAgICAgICh3YWl0Rm9yRXZlbnRBbmRGYWlsKToKKyAgICAg
ICAgKHdhaXRGb3JFdmVudEFuZFRlc3QuX2V2ZW50Q2FsbGJhY2spOgorICAgICAgICAod2FpdEZv
ckV2ZW50QW5kVGVzdCk6CisgICAgICAgICh0ZXN0RXhjZXB0aW9uKToKKyAgICAgICAgKGVuZFRl
c3QpOgorICAgICAgICAoZW5kVGVzdExhdGVyKToKKyAgICAgICAgKGZhaWxUZXN0SW4pOgorICAg
ICAgICAoZmFpbFRlc3QpOgorICAgICAgICAobG9nUmVzdWx0KToKKyAgICAgICAgKGNvbnNvbGVX
cml0ZSk6CisgICAgICAgIChyZWxhdGl2ZVVSTCk6CisgICAgICAgIChpc0luVGltZVJhbmdlcyk6
CisKIDIwMTAtMDgtMDQgIEFiaGlzaGVrIEFyeWEgIDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBVbnJldmlld2VkLiBRVCBleHBlY3RhdGlvbiBmaXguCkluZGV4OiBMYXlvdXRUZXN0
cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitFWFBFQ1RFRCAoZG9jdW1lbnQu
d2Via2l0SXNGdWxsU2NyZWVuID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Vi
a2l0UmVxdWVzdEZ1bGxTY3JlZW4gIT0gJ3VuZGVmaW5lZCcpIE9LCitFWFBFQ1RFRCAoZG9jdW1l
bnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyAhPSAndW5kZWZpbmVkJykgT0sKK0VY
UEVDVEVEIChkb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuICE9ICd1bmRlZmluZWQnKSBP
SworRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAn
bnVsbCcpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQub253ZWJraXRmdWxsc2NyZWVuY2hhbmdlID09
ICdudWxsJykgT0sKK0VYUEVDVEVEIChzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuICE9ICd1
bmRlZmluZWQnKSBPSworRVhQRUNURUQgKHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRo
S2V5cyAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEIChzcGFuLm9ud2Via2l0ZnVsbHNjcmVl
bmNoYW5nZSAhPSAnbnVsbCcpIE9LCitFWFBFQ1RFRCAoaWZyYW1lLndlYmtpdEFsbG93RnVsbFNj
cmVlbiA9PSAndHJ1ZScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ1dlYktp
dEZ1bGxTY3JlZW5DaGFuZ2UnKTsgIT0gJ251bGwnKSBPSworRU5EIE9GIFRFU1QKKyAKSW5kZXg6
IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjIgQEAKKzxib2R5PgorPHNjcmlwdCBzcmM9ZnVsbC1zY3JlZW4t
dGVzdC5qcz48L3NjcmlwdD4KKzxzcGFuIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZT0iY29uc29s
ZS53cml0ZSgncmVhY2hlZCcpOyI+PC9zcGFuPgorPGlmcmFtZSB3ZWJraXRBbGxvd0Z1bGxTY3Jl
ZW49InRydWUiPjwvaWZyYW1lPgorPHNjcmlwdD4KKyAgICBzcGFuID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtp
dElzRnVsbFNjcmVlbiIsIGZhbHNlKTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdFJl
cXVlc3RGdWxsU2NyZWVuIiwgdW5kZWZpbmVkLCAiIT0iKTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3Vt
ZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMiLCB1bmRlZmluZWQsICIhPSIpOwor
CXRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q2FuY2VsRnVsbFNjcmVlbiIsIHVuZGVmaW5l
ZCwgIiE9Iik7CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVl
bkVsZW1lbnQiLCBudWxsKTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50Lm9ud2Via2l0ZnVsbHNj
cmVlbmNoYW5nZSIsIG51bGwpCisJdGVzdEV4cGVjdGVkKCJzcGFuLndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuIiwgdW5kZWZpbmVkLCAiIT0iKTsKKwl0ZXN0RXhwZWN0ZWQoInNwYW4ud2Via2l0UmVx
dWVzdEZ1bGxTY3JlZW5XaXRoS2V5cyIsIHVuZGVmaW5lZCwgIiE9Iik7CisJdGVzdEV4cGVjdGVk
KCJzcGFuLm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIsIG51bGwsICIhPSIpCisJCisJaWZyYW1l
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdOworCXRlc3RFeHBl
Y3RlZCgiaWZyYW1lLndlYmtpdEFsbG93RnVsbFNjcmVlbiIsdHJ1ZSk7CisJCisJdGVzdEV4cGVj
dGVkKCJkb2N1bWVudC5jcmVhdGVFdmVudCgnV2ViS2l0RnVsbFNjcmVlbkNoYW5nZScpOyIsIG51
bGwsICIhPSIpCisJZW5kVGVzdCgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNr
Z3JvdW5kLWNvbG9yJykgIT0gJ3JnYigwLCAyNTUsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwg
bnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpICE9ICdyZ2IoMjU1LCAw
LCAwKScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHls
ZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9y
JykgIT0gJ3JnYigwLCAwLCAyNTUpJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Up
CitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBu
dWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gJ3JnYigwLCAyNTUs
IDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dy
b3VuZC1jb2xvcicpID09ICdyZ2IoMjU1LCAwLCAwKScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykgPT0gJ3JnYigwLCAwLCAyNTUpJykgT0sKK0VW
RU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3Jv
dW5kLWNvbG9yJykgPT0gJ3JnYigwLCAyNTUsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpICE9ICdyZ2IoMjU1LCAwLCAw
KScpLCBPQlNFUlZFRCAncmdiKDI1NSwgMCwgMCknIEZBSUwKK0VYUEVDVEVEIChkb2N1bWVudC5k
ZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVs
bCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSA9PSAncmdiKDAsIDAsIDI1NSknKSBPSworRU5E
IE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3Mu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNz
cy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1jc3MuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBAQAorPGJvZHk+Cis8c2NyaXB0
IHNyYz1mdWxsLXNjcmVlbi10ZXN0LmpzPjwvc2NyaXB0PgorPHN0eWxlPgorICAgIDotd2Via2l0
LWZ1bGwtc2NyZWVuIHsgYmFja2dyb3VuZDogbGltZTsgfQorICAgIDotd2Via2l0LWZ1bGwtc2Ny
ZWVuLWRvYyB7IGNvbG9yOiBibHVlOyB9CisgICAgOi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jLXdp
dGgtdGFyZ2V0IHsgYmFja2dyb3VuZDogcmVkOyB9Cis8L3N0eWxlPgorPHNwYW4+PC9zcGFuPgor
PHNjcmlwdD4KKyAgICB2YXIgY2FsbGJhY2s7CisgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0g
ZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAg
ICBjYWxsYmFjayhldmVudCkKKyAgICB9OworICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dl
YmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKKyAgICB2YXIgc3Bh
biA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzcGFuJylbMF07CisgICAgCisgICAg
dGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4s
IG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSIsICJyZ2IoMCwgMjU1
LCAwKSIsICIhPSIpOworICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0
Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSIsICJyZ2IoMjU1LCAwLCAwKSIsICIhPSIpOworICAg
IHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAi
cmdiKDAsIDAsIDI1NSkiLCAiIT0iKTsKKyAgICAKKyAgICB2YXIgc3BhbklzRnVsbFNjcmVlbiA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVs
dFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNr
Z3JvdW5kLWNvbG9yJykiLCAicmdiKDAsIDI1NSwgMCkiKTsKKyAgICAgICAgdGVzdEV4cGVjdGVk
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgInJn
YigyNTUsIDAsIDApIik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZp
ZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAicmdiKDAsIDAsIDI1NSkiKTsKKyAgICAgICAgCisgICAg
ICAgIGNhbGxiYWNrID0gZG9jdW1lbnRJc0Z1bGxTY3JlZW47CisgICAgICAgIGRvY3VtZW50Lndl
YmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgfTsKKyAgICAKKyAgICB2YXIgZG9jdW1lbnRJ
c0Z1bGxTY3JlZW4gPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICB0ZXN0RXhwZWN0ZWQoImRv
Y3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3BhbiwgbnVsbCkuZ2V0UHJvcGVy
dHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgInJnYigwLCAyNTUsIDApIik7CisgICAgICAg
IHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKSIsICJyZ2IoMjU1LCAwLCAwKSIsICIhPSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgInJnYigwLCAwLCAyNTUp
Iik7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9OworICAgIAorICAgIGNhbGxiYWNrID0gc3Bh
bklzRnVsbFNjcmVlbjsKKyAgICBzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7Cis8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFu
Y2VzdG9yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorRVZFTlQod2Via2l0ZnVsbHNj
cmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEVsZW1lbnRdJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3Jl
ZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50ID09ICdbb2JqZWN0IEhUTUxIdG1sRWxlbWVudF0nKSBPSworRU5EIE9GIFRFU1QKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3IuYWN0
dWFsLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlbW92ZS1hbmNlc3Rvci5hY3R1YWwudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3IuYWN0dWFsLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQ
RUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVj
dCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVD
VEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3Qg
SFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92
ZS1hbmNlc3Rvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMwIEBACis8Ym9keT4KKzxz
Y3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+Cis8ZGl2PjxzcGFuPjwvc3Bh
bj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgdmFyIGNhbGxiYWNrOworICAgIHZhciBmdWxsc2NyZWVu
Q2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrKQor
ICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQpCisgICAgfTsKKyAgICB3YWl0Rm9yRXZlbnQoZG9j
dW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworCisg
ICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdOwor
ICAgIHZhciBkaXYgPSBzcGFuLnBhcmVudE5vZGU7CisKKyAgICB2YXIgc3BhbklzRnVsbFNjcmVl
biA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGNhbGxiYWNrID0gZG9jdW1lbnRJc0Z1bGxT
Y3JlZW47CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50Iiwgc3Bhbik7CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo
ZGl2KTsKKyAgICB9OworCisgICAgdmFyIGRvY3VtZW50SXNGdWxsU2NyZWVuID0gZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICAgICAgY2FsbGJhY2sgPSBudWxsOworICAgICAgICB0ZXN0RXhwZWN0ZWQo
ImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCk7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9OworCisgICAgY2FsbGJhY2sg
PSBzcGFuSXNGdWxsU2NyZWVuOworICAgIHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsK
Kzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1v
dmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2IEBACitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQg
KGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1M
RWxlbWVudF0nKSBPSworRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChk
b2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0
bWxFbGVtZW50XScpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDI5IEBACis8Ym9keT4KKzxzY3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9z
Y3JpcHQ+Cis8ZGl2PjxzcGFuPjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+CisgICAgdmFyIGNhbGxi
YWNrOworICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQpCisgICAg
fTsKKyAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywg
ZnVsbHNjcmVlbkNoYW5nZWQpOworICAgIAorICAgIHZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICAKKyAgICB2YXIgc3BhbklzRnVsbFNjcmVl
biA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGNhbGxiYWNrID0gZG9jdW1lbnRJc0Z1bGxT
Y3JlZW47CisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50Iiwgc3Bhbik7CisgICAgICAgIHNwYW4ucGFyZW50Tm9kZS5yZW1vdmVDaGls
ZChzcGFuKTsKKyAgICB9OworICAgIAorICAgIHZhciBkb2N1bWVudElzRnVsbFNjcmVlbiA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfTsKKyAgICAKKyAg
ICBjYWxsYmFjayA9IHNwYW5Jc0Z1bGxTY3JlZW47CisgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbigpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLXJlcXVlc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UpIFRFU1QoZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuPT10cnVlKSBPSworRU5EIE9GIFRF
U1QKKwpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1
ZXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXJlcXVlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACis8Ym9keT4KKzxz
Y3JpcHQgc3JjPWZ1bGwtc2NyZWVuLXRlc3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIHdh
aXRGb3JFdmVudFRlc3RBbmRFbmQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywg
ImRvY3VtZW50LndlYmtpdElzRnVsbFNjcmVlbj09dHJ1ZSIpOworICAgIGlmIChkb2N1bWVudC53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpCisgICAgICAgIGVuZFRlc3QoKTsK
KyAgICBkb2N1bWVudC53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworPC9zY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDIyMCBAQAorCit2YXIgY29uc29sZSA9IG51bGw7Cit2YXIgcHJpbnRG
dWxsVGVzdERldGFpbHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlvbmFseSBzd2l0Y2hlZCBvZiBi
eSB0ZXN0IHdob3NlIHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4gKHNlZSBkaXNhYmxlRnVsbFRl
c3REZXRhaWxzUHJpbnRpbmcoKSkKK3ZhciBGYWlsZWQgPSBmYWxzZTsKKworbG9nQ29uc29sZSgp
OworCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRp
bERvbmUoKTsKK30KKworZnVuY3Rpb24gZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5nKCkK
K3sKKyAgICBwcmludEZ1bGxUZXN0RGV0YWlscyA9IGZhbHNlOworfQorCitmdW5jdGlvbiBsb2dD
b25zb2xlKCkKK3sKKyAgICBpZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQuYm9keSkgeworICAgICAg
ICBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xl
OworfQorCitmdW5jdGlvbiB0ZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHRlc3Qo
dGVzdEZ1bmNTdHJpbmcsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0KHRlc3RGdW5jU3RyaW5n
LCBlbmRpdCkKK3sKKyAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJURVNUKCIg
KyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAgaWYgKGVuZGl0KQorICAgICAgICBlbmRUZXN0
KCk7ICAKK30KKworZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleHBlY3Rl
ZCwgY29tcGFyaXNvbikKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBldmFs
KHRlc3RGdW5jU3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBjb25zb2xlV3Jp
dGUoZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChjb21wYXJpc29u
ID09PSB1bmRlZmluZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAgdmFyIHN1
Y2Nlc3MgPSBmYWxzZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAgICAgICBj
YXNlICc8JzogICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAg
ICBjYXNlICc8PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAg
ICAgIGNhc2UgJz4nOiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7Cisg
ICAgICAgIGNhc2UgJz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsK
KyAgICAgICAgY2FzZSAnIT0nOiAgc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVh
azsKKyAgICAgICAgY2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJy
ZWFrOworICAgIH0KKyAgICAKKyAgICByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0
cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVkKQorfQorCit2YXIgdGVzdE51bWJl
ciA9IDA7CisKK2Z1bmN0aW9uIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5n
LCBjb21wYXJpc29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit7CisgICAgdGVzdE51bWJlcisrOwor
CisgICAgdmFyIG1zZyA9ICJUZXN0ICIgKyB0ZXN0TnVtYmVyOworCisgICAgaWYgKHByaW50RnVs
bFRlc3REZXRhaWxzIHx8ICFzdWNjZXNzKQorICAgICAgICBtc2cgPSAiRVhQRUNURUQgKDxlbT4i
ICsgdGVzdEZ1bmNTdHJpbmcgKyAiIDwvZW0+IiArIGNvbXBhcmlzb24gKyAiICc8ZW0+IiArIGV4
cGVjdGVkICsgIjwvZW0+JykiOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBtc2cgKz0g
ICIsIE9CU0VSVkVEICc8ZW0+IiArIG9ic2VydmVkICsgIjwvZW0+JyI7CisKKyAgICBsb2dSZXN1
bHQoc3VjY2VzcywgbXNnKTsKK30KKworZnVuY3Rpb24gcnVuU2lsZW50bHkodGVzdEZ1bmNTdHJp
bmcpCit7CisgICAgaWYgKHByaW50RnVsbFRlc3REZXRhaWxzKQorICAgICAgICBjb25zb2xlV3Jp
dGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAgIGV2
YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGlmICghcHJp
bnRGdWxsVGVzdERldGFpbHMpIHsKKyAgICAgICAgICAgIC8vIE5vIGRldGFpbHMgd2VyZSBwcmlu
dGVkIHByZXZpb3VzLCBnaXZlIHNvbWUgbm93LgorICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJl
IGhlbHBmdWwgaW4gY2FzZSBvZiBlcnJvci4KKyAgICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQs
ICJFcnJvciBpbiBSVU4oIiArIHRlc3RGdW5jU3RyaW5nICsgIik6Iik7CisgICAgICAgIH0KKyAg
ICAgICAgbG9nUmVzdWx0KEZhaWxlZCwgIjxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPiIrZXgrIjwv
c3Bhbj4iKTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bih0ZXN0RnVuY1N0cmluZykKK3sKKyAg
ICBjb25zb2xlV3JpdGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7
CisgICAgICAgIGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAg
ICAgIGNvbnNvbGVXcml0ZShleCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRB
bmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVu
dChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdh
aXRGb3JFdmVudChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIGZ1bmN0
aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJF
VkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAg
ICAgIGZ1bmMoZXZlbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAg
ICAgZW5kVGVzdCgpOyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudFRl
c3RBbmRFbmQoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK3sKKyAgICB3YWl0
Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUp
OworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGVsZW1lbnQsIGV2ZW50TmFtZSkK
K3sKKyAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgImZhbHNlIiwg
dHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnRO
YW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJh
Y2soZXZlbnQpCisgICAgeworICAgICAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyks
ICJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIp
OworICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0K
KyAgICAKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxs
YmFjayk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9u
U3RyaW5nKQoreworICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdFN0cmluZyk7CisgICAgfSBj
YXRjaCAoZXgpIHsgCisgICAgICAgIGxvZ1Jlc3VsdChleC5jb2RlID09IGV2YWwoZXhjZXB0aW9u
U3RyaW5nKSwgIlRFU1QoIiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJp
bmcrIikiKTsKKyAgICB9Cit9CisKK3ZhciB0ZXN0RW5kZWQgPSBmYWxzZTsKKworZnVuY3Rpb24g
ZW5kVGVzdCgpCit7CisgICAgY29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOworICAgIHRlc3RF
bmRlZCA9IHRydWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCit9CisKK2Z1bmN0aW9u
IGVuZFRlc3RMYXRlcigpCit7CisgICAgc2V0VGltZW91dChlbmRUZXN0LCAyNTApOworfQorCitm
dW5jdGlvbiBmYWlsVGVzdEluKG1zKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewor
ICAgICAgICBjb25zb2xlV3JpdGUoIkZBSUw6IGRpZCBub3QgZW5kIGZhc3QgZW5vdWdoIik7Cisg
ICAgICAgIGVuZFRlc3QoKTsKKyAgICB9LCBtcyk7Cit9CisKK2Z1bmN0aW9uIGZhaWxUZXN0KHRl
eHQpCit7CisgICAgbG9nUmVzdWx0KEZhaWxlZCwgdGV4dCk7CisgICAgZW5kVGVzdCgpOworfQor
CisKK2Z1bmN0aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQoreworICAgIGlmIChzdWNjZXNz
KQorICAgICAgICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVu
Jz5PSzwvc3Bhbj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0ICsgIiA8
c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQorCitmdW5jdGlvbiBjb25z
b2xlV3JpdGUodGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAgICByZXR1cm47Cisg
ICAgbG9nQ29uc29sZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworfQorCitmdW5jdGlv
biByZWxhdGl2ZVVSTCh1cmwpCit7CisgICAgcmV0dXJuIHVybC5zdWJzdHIodXJsLmluZGV4T2Yo
Jy9tZWRpYS8nKSs3KTsKK30KKworCitmdW5jdGlvbiBpc0luVGltZVJhbmdlcyhyYW5nZXMsIHRp
bWUpCit7CisgICAgdmFyIGkgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCByYW5nZXMubGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgaWYgKHRpbWUgPj0gcmFuZ2VzLnN0YXJ0KGkpICYmIHRpbWUgPD0g
cmFuZ2VzLmVuZChpKSkgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAg
fQorICAgIHJldHVybiBmYWxzZTsKK30KSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tdHdpY2UtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tdHdpY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkK
K0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tv
YmplY3QgSFRNTEVsZW1lbnRdJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitF
WFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2Jq
ZWN0IEhUTUxIdG1sRWxlbWVudF0nKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdHdpY2UuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdHdpY2UuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyOSBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz1mdWxsLXNjcmVlbi10ZXN0
LmpzPjwvc2NyaXB0PgorPHNwYW4+PC9zcGFuPgorPHNjcmlwdD4KKyAgICB2YXIgY2FsbGJhY2s7
CisgICAgdmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgeworICAg
ICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICB9Owor
ICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxs
c2NyZWVuQ2hhbmdlZCk7CisgICAgCisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnc3BhbicpWzBdOworCisgICAgdmFyIHNwYW5Jc0Z1bGxTY3JlZW4gPSBmdW5j
dGlvbigpIHsKKyAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQiLCBzcGFuKTsKKyAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudElzRnVs
bFNjcmVlbjsKKyAgICAgICAgZG9jdW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAg
ICB9OworICAgIAorICAgIHZhciBkb2N1bWVudElzRnVsbFNjcmVlbiA9IGZ1bmN0aW9uKCkgewor
ICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCIsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgIGNhbGxiYWNrID0gbnVs
bDsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH07CisKKyAgICBjYWxsYmFjayA9IHNwYW5Jc0Z1
bGxTY3JlZW47CisgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbigpOworPC9zY3JpcHQ+
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63623</attachid>
            <date>2010-08-05 13:38:17 -0700</date>
            <delta_ts>2010-08-09 15:27:57 -0700</delta_ts>
            <desc>FullScreen-WebCore-ChangeLogs</desc>
            <filename>FullScreen-WebCore-ChangeLogs.patch</filename>
            <type>text/plain</type>
            <size>8565</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY0NjUzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU5fQVBJIG1vZGUgZm9yIHRoZSBNYWMg
KGV4Y2VwdCBpUGhvbmUpLgorCiAyMDEwLTA4LTAzICBOYXRoYW4gTGF3cmVuY2UgIDxubGF3cmVu
Y2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDog
V2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDY0NjUzKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxMjUgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIEphdmFT
Y3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2NyZWVuLgorICAgICAgICByZGFy
Oi8vcHJvYmxlbS82ODY3Nzk1CisgICAgICAgIAorICAgICAgICBNb3ppbGxhIGhhcyBwcm9wb3Nl
ZCBhIG5ldyBzZXQgb2YgSmF2YVNjcmlwdCBBUElzIHdoaWNoIGFsbG93IGFueSBlbGVtZW50IGlu
CisgICAgICAgIGEgZG9jdW1lbnQgdG8gZ28gZnVsbC1zY3JlZW4uICBUaGUgY3VycmVudCByZXZp
c2lvbiBvZiB0aGVpciBwcm9wb3NhbCBjYW4gYmUgCisgICAgICAgIGZvdW5kIGhlcmU6CisgICAg
ICAgIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcvaW5kZXgucGhwP3RpdGxlPUdlY2tvOkZ1bGxT
Y3JlZW5BUEkmb2xkaWQ9MjM1NjAxPgorICAgICAgICAKKyAgICAgICAgVGhlIHByb3Bvc2VkIHNw
ZWNpZmljYXRpb24gaW5jbHVkZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIERv
Y3VtZW50OgorICAgICAgICAtIFRocmVlIG5ldyBtZXRob2RzIG9uIERvY3VtZW50OgorICAgICAg
ICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuKCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1
ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKKyAgICAgICAgICAgICsgdm9pZCBjYW5jZWxGdWxsU2Ny
ZWVuKCkKKyAgICAgICAgLSBUaHJlZSBuZXcgYXR0cmlidXRlcyBvZiBEb2N1bWVudDoKKyAgICAg
ICAgICAgICsgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbgorICAgICAgICAg
ICAgKyByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuV2l0aEtleXMKKyAgICAg
ICAgICAgICsgKG9wdGlvbmFsKSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBjdXJyZW50RnVs
bFNjcmVlbkVsZW1lbnQKKyAgICAgICAgICAgIAorICAgICAgICBFbGVtZW50OgorICAgICAgICAt
IFR3byBuZXcgbWV0aG9kcyBvbiBFbGVtZW50OgorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RG
dWxsU2NyZWVuKCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlz
KCkKKyAgICAgICAgCisgICAgICAgIEhUTUxJRnJhbWVFbGVtZW50OgorICAgICAgICAtIE9uZSBu
ZXcgY29udGVudCBhdHRyaWJ1dGU6CisgICAgICAgICAgICArIGFsbG93RnVsbFNjcmVlbgorICAg
ICAgICAgICAgCisgICAgICAgIEV2ZW50czoKKyAgICAgICAgLSBPbmUgbmV3IGV2ZW50OgorICAg
ICAgICAgICAgKyBmdWxsU2NyZWVuQ2hhbmdlCisgICAgICAgIAorICAgICAgICBDU1MgUHNldWRv
LWNsYXNzZXM6CisgICAgICAgIC0gVGhyZWUgbmV3IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAg
ICAgKyA6ZnVsbC1zY3JlZW4KKyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLWRvYworICAgICAg
ICAgICAgKyA6ZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldAorICAgICAgICAKKyAgICAgICAg
Rm9yIFdlYktpdCdzIGluaXRpYWwgaW1wbGVtZW50YXRpb24sIGFsbCB0aGUgYWJvdmUgbmV3IEFQ
SXMgd2lsbCBiZSBwcmVmaXhlZCB3aXRoIAorICAgICAgICAid2Via2l0IiBvciAiLXdlYmtpdCIg
d2hlcmUgYXBwcm9wcmlhdGUuCisgICAgICAgIAorICAgICAgICBOZXcgdGVzdHM6CisgICAgICAg
IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwKKyAgICAgICAgTGF5
b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MuaHRtbAorICAgICAgICBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAorCisgICAgICAgIFByb2pl
Y3QgZmlsZSBjaGFuZ2VzOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnOiBBZGRlZCBhbiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgZW50cnkuCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3NzIGFu
ZCBXZWJDb3JlLkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVlbi5l
eHA6IEFkZGVkIGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5jdGlv
bnMuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgc291
cmNlIGZpbGVzIGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2VzOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4gQVBJ
IHRvIHRoZSBEb2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRvbS9F
bGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1lbnQn
cyBqYXZhc2NyaXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50
LmlkbDogQWRkZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAgU291
cmNlIGNoYW5nZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2Vz
Lmg6IEV4cG9zZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMgaW4g
dGhlIERPTSBjbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVkIG5l
dyBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5o
OiBBZGRlZCBuZXcgZnVsbC1zY3JlZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUg
ZW51bS4KKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2Vi
Q29yZTo6bG9hZEZ1bGxEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVl
dCBpbnRvIHRoZSBkZWZhdWx0U3R5bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRz
LgorICAgICAgICAoV2ViQ29yZTo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1
bGxzY3JlZW4uY3NzIHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxl
Y3Rvcik6IENoZWNrIGZvciB0aGUgbmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVh
dGVFdmVudCk6IFN1cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZl
bnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQp
OiBTdXBwb3J0IGxpc3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Igor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxl
bWVudFdpdGhLZXlzKTogUGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8gZW50
ZXIgZnVsbCBzY3JlZW4gbW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRD
YW5jZWxGdWxsU2NyZWVuKTogUGFzc2VzIHJlcXVlc3QgdG8gdGhlIGNocm9tZSBjbGllbnQgdG8g
ZXhpdCBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtp
dFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogU2V0cyB0aGUgRnVsbFNjcmVlbiBwc2V1
ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxlbWVudCBhbmQgaXRzIGRvY3VtZW50Lgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVs
ZW1lbnQpOiBDdXJyZW50bHkgYSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3
ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ3VycmVudGx5IGEgbm8tb3AuCisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KTogQ2xlYXJzIHRoZSBGdWxsU2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNj
cmVlbiBlbGVtZW50IGFuZCBpdHMgZG9jdW1lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6
IEFkZGVkIGNvbnN0IGFjY2Vzc29ycyBmb3IgbmV3IGZ1bGwtc2NyZWVuIGluc3RhbmNlIHZhcmlh
Ymxlcy4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjopOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OndlYmtpdElzRnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNjcmVl
bi4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRJc0Z1bGxTY3JlZW5XaXRoS2V5
c0VuYWJsZWQpOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlbiBhbmQgbV9hcmVLZXlzRW5hYmxl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQpOiBBY2Nlc3NvciBmb3IgbV9mdWxsU2NyZWVuRWxlbWVudC4KKyAgICAgICAgKiBkb20v
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbik6IENhbGxzIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1l
bnRXaXRoS2V5cy4gCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbldpdGhLZXlzKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
Rm9yRWxlbWVudFdpdGhLZXlzLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICog
ZG9tL0V2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojppc1dlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudCk6IE5ldyBtZXRob2Qgb3ZlcnJpZGRlbiBieSBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuCisgICAgICAgICogZG9tL0V2ZW50Lmg6CisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDog
QWRkZWQuCisgICAgICAgICogZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOiBBZGRl
ZC4KKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbDogQWRkZWQu
CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBQYXJzZSB0aGUgbmV3ICJvbndlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UiIGF0dHJpYnV0ZSBhbmQgcmVnaXN0ZXIgYSBsaXN0ZW5lci4KKyAgICAg
ICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSUZy
YW1lRWxlbWVudDo6d2Via2l0QWxsb3dGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1fYWxsb3dG
dWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6SFRNTElGcmFtZUVsZW1lbnQ6OnNldFdlYmtp
dEFsbG93RnVsbFNjcmVlbik6IEFjY2Vzc29yIGZvciBtX2FsbG93RnVsbFNjcmVlbi4KKyAgICAg
ICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOiBSZS1pbXBsZW1lbnRlZCB0aGUgSFRNTE1l
ZGlhRWxlbWVudCBmdWxsIHNjcmVlbiBzdXBwb3J0IGluIHRlcm1zIG9mIHRoZSBuZXcgKGdlbmVy
aWMpIGZ1bGwgc2NyZWVuIHN1cHBvcnQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVt
ZW50OjpIVE1MTWVkaWFFbGVtZW50KTogV2hlbiBpbiBGVUxMU0NSRUVOX0FQSSwgZG8gbm90IHN0
b3JlIHRoZSBmdWxsLXNjcmVlbiBzdGF0dXMgaW4gYW4gaXZhci4KKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxNZWRpYUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQpOiBXaGVuIGluIEZVTExTQ1JF
RU5fQVBJLCBkbyBub3QgY2FsbCBleGl0RnVsbHNjcmVlbigpIHdoZW4gdGhlIGVsZW1lbnQgaXMg
cmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmRvY3VtZW50V2ls
bEJlY29tZUluYWN0aXZlKTogV2hlbiBpbiBGVUxMU0NSRUVOX0FQSSwgZG8gbm90IGNhbGwgZXhp
dEZ1bGxzY3JlZW4oKSB3aGVuIHRoZSBkb2N1bWVudCBpcyBtYWRlIGluYWN0aXZlLgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6aXNGdWxsc2NyZWVuKTogV2hlbiBpbiBGVUxM
U0NSRUVOX0FQSSwgY2hlY2sgdGhlIGRvY3VtZW50J3MgY3VycmVudEZ1bGxTY3JlZW5FbGVtZW50
IGluc3RlYWQgb2YgdGhlIGl2YXIuCisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50
OjplbnRlckZ1bGxzY3JlZW4pOiBXaGVuIGluIEZVTExTQ1JFRU5fQVBJLCBqdXN0IGNhbGwgdGhl
IG5ldyB3ZWJraXRSZXF1ZXN0RW50ZXJGdWxsU2NyZWVuRm9yS2V5cygpIEFQSS4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmV4aXRGdWxsc2NyZWVuKTogV2hlbiBpbiBGVUxM
U0NSRUVOX0FQSSwganVzdCBjYWxsIHRoZSBuZXcgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpIEFQ
SS4KKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxWaWRlb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFZpZGVvRWxlbWVudDo6
c3VwcG9ydHNGdWxsc2NyZWVuKTogV2hlbiBpbiBGVUxMU0NSRUVOX0FQSSwgY2hlY2sgdGhlIG5l
dyBmdWxsU2NyZWVuRW5hYmxlZCBzZXR0aW5nLgorICAgICAgICAqIGh0bWwvSFRNTFZpZGVvRWxl
bWVudC5oOgorICAgICAgICAqIHBhZ2UvQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpDaHJvbWVDbGllbnQ6OnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBQYXNzIHRocm91
Z2ggdG8gdGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgIChXZWJDb3JlOjpDaHJvbWVD
bGllbnQ6OmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2Ny
ZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4K
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50
KTogQ3JlYXRlIGEgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGFuZCBwYXNzIHRocm91Z2ggdG8g
dGhlIGN1cnJlbnQgVUkgZGVsZWdhdGUuCisgICAgICAgICogcGFnZS9TZXR0aW5ncy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTZXR0aW5nczo6U2V0dGluZ3MpOgorICAgICAgICAqIHBhZ2UvU2V0
dGluZ3MuaDogQWRkIGEgbmV3IHNldHRpbmcgdG8gY29udHJvbCBydW50aW1lIHN1cHBvcnQgZm9y
IGZ1bGwgc2NyZWVuIG1vZGUgKGRlZmF1bHRzIHRvIG9mZikKKyAgICAgICAgKiByZW5kZXJpbmcv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
RnVsbHNjcmVlbkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIpOiBUaGUgZnVsbCBz
Y3JlZW4gYnV0dG9uIG5vdyB0b2dnbGVzIGZ1bGwgc2NyZWVuIG1vZGUgKHByZXZpb3VzbHksIGl0
IG9ubHkgZW50ZXJlZCkuCisgICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29u
c3RhbnRzLmg6IEFkZGVkIG5ldyBzdHlsZSBjb25zdGFudHMuCisKIDIwMTAtMDgtMDQgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
UGF2ZWwgRmVsZG1hbi4K
</data>
<flag name="review"
          id="52028"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63624</attachid>
            <date>2010-08-05 13:38:49 -0700</date>
            <delta_ts>2010-08-09 15:27:57 -0700</delta_ts>
            <desc>FullScreen-WebCore-Config</desc>
            <filename>FullScreen-WebCore-Config.patch</filename>
            <type>text/plain</type>
            <size>13458</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NDY1MykKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTQsNiArNTk0LDcgQEAKICNl
bmRpZgogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVS
IDEKKyNkZWZpbmUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDEKICNlbmRpZiAvKiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJUEhPTkUpICovCiAKICNpZiBQTEFURk9STShNQUMpCkluZGV4OiBX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDU4LDYgKzQ1OCw3IEBAIERPTV9DTEFTU0VTID0gXAog
ICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUgXAogICAgIFdlYktpdENTU01hdHJpeCBcCiAgICAg
V2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCBcCiAgICAgV2ViS2l0UG9pbnQgXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCBcCiAgICAg
V2ViU29ja2V0IFwKQEAgLTY2OSw2ICs2NzAsMTAgQEAgaWZlcSAoJChPUyksTUFDT1MpCiBlbmRp
ZgogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSwkKEZF
QVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkpCisgICAgVVNFUl9BR0VOVF9T
VFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3Mv
ZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFr
ZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8
ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVU
UykKIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAu
aW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NzAsNiArMTQ3MCwxMyBAQCBfX1pON1dlYkNvcmU5SFRN
TE5hbWVzOGF1ZGlvVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKICNlbmRp
ZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorX19aTjdXZWJDb3JlOERvY3VtZW50MzN3
ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJD
b3JlOERvY3VtZW50MzR3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxl
bWVudEUKK19fWk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudEVQTlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxF
bnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKKyNlbmRpZgorCiAjaWYgRU5B
QkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25D
YWNoZVN0b3JhZ2UxNHF1b3RhRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVSeAogX19a
TjdXZWJDb3JlMjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0c2V0TWF4aW11bVNpemVFeApJbmRl
eDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShy
ZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMu
eGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDcgQEAgRU5BQkxFX0ZJTEVfUkVB
REVSX21hY29zeCA9IEVOQUJMRV9GSUxFXwogCiBFTkFCTEVfRklMRV9XUklURVIgPSA7CiBFTkFC
TEVfRklMRV9TWVNURU0gPSA7CitFTkFCTEVfRlVMTFNDUkVFTl9BUEkgPSBFTkFCTEVfRlVMTFND
UkVFTl9BUEk7CiBFTkFCTEVfR0VPTE9DQVRJT04gPSBFTkFCTEVfR0VPTE9DQVRJT047CiAKIEVO
QUJMRV9JQ09OREFUQUJBU0UgPSAkKEVOQUJMRV9JQ09OREFUQUJBU0VfJChSRUFMX1BMQVRGT1JN
X05BTUUpKTsKQEAgLTEyMyw0ICsxMjQsNCBAQCBFTkFCTEVfWEhUTUxNUCA9IDsKIEVOQUJMRV9Y
UEFUSCA9IEVOQUJMRV9YUEFUSDsKIEVOQUJMRV9YU0xUID0gRU5BQkxFX1hTTFQ7CiAKLUZFQVRV
UkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxFXzNEX0NBTlZBUykg
JChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAkKEVOQUJMRV9DSEFO
TkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKSAkKEVOQUJM
RV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFMSVNUKSAkKEVOQUJM
RV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExPQUQpICQoRU5BQkxF
X0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVfRklMVEVSUykgJChF
TkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZ
U1RFTSkgJChFTkFCTEVfR0VPTE9DQVRJT04pICQoRU5BQkxFX0lDT05EQVRBQkFTRSkgJChFTkFC
TEVfSU1BR0VfUkVTSVpFUikgJChFTkFCTEVfSU5ERVhFRF9EQVRBQkFTRSkgJChFTkFCTEVfSU5Q
VVRfU1BFRUNIKSAkKEVOQUJMRV9KQVZBU0NSSVBUX0RFQlVHR0VSKSAkKEVOQUJMRV9NQVRITUwp
ICQoRU5BQkxFX01FVEVSX1RBRykgJChFTkFCTEVfTk9USUZJQ0FUSU9OUykgJChFTkFCTEVfT0ZG
TElORV9XRUJfQVBQTElDQVRJT05TKSAkKEVOQUJMRV9QUk9HUkVTU19UQUcpICQoRU5BQkxFX1JV
QlkpICQoRU5BQkxFX1NBTkRCT1gpICQoRU5BQkxFX1NIQVJFRF9XT1JLRVJTKSAkKEVOQUJMRV9T
VkcpICQoRU5BQkxFX1NWR19BTklNQVRJT04pICQoRU5BQkxFX1NWR19BU19JTUFHRSkgJChFTkFC
TEVfU1ZHX0RPTV9PQkpDX0JJTkRJTkdTKSAkKEVOQUJMRV9TVkdfRk9OVFMpICQoRU5BQkxFX1NW
R19GT1JFSUdOX09CSkVDVCkgJChFTkFCTEVfU1ZHX1VTRSkgJChFTkFCTEVfVklERU8pICQoRU5B
QkxFX1dFQl9TT0NLRVRTKSAkKEVOQUJMRV9XRUJfVElNSU5HKSAkKEVOQUJMRV9XTUwpICQoRU5B
QkxFX1dPUktFUlMpICQoRU5BQkxFX1hIVE1MTVApICQoRU5BQkxFX1hQQVRIKSAkKEVOQUJMRV9Y
U0xUKTsKK0ZFQVRVUkVfREVGSU5FUyA9ICQoRU5BQkxFX0xJTktfUFJFRkVUQ0gpICQoRU5BQkxF
XzNEX0NBTlZBUykgJChFTkFCTEVfM0RfUkVOREVSSU5HKSAkKEVOQUJMRV9CTE9CX1NMSUNFKSAk
KEVOQUJMRV9DSEFOTkVMX01FU1NBR0lORykgJChFTkFCTEVfQ0xJRU5UX0JBU0VEX0dFT0xPQ0FU
SU9OKSAkKEVOQUJMRV9EQVRBQkFTRSkgJChFTkFCTEVfREFUQUdSSUQpICQoRU5BQkxFX0RBVEFM
SVNUKSAkKEVOQUJMRV9ERVZJQ0VfT1JJRU5UQVRJT04pICQoRU5BQkxFX0RJUkVDVE9SWV9VUExP
QUQpICQoRU5BQkxFX0RPTV9TVE9SQUdFKSAkKEVOQUJMRV9FVkVOVFNPVVJDRSkgJChFTkFCTEVf
RklMVEVSUykgJChFTkFCTEVfRklMRV9SRUFERVIpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVO
QUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xP
Q0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQo
RU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVf
SkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcp
ICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9O
UykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9Y
KSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5J
TUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5E
SU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQo
RU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChF
TkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJM
RV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjQ2NjIpCisrKyBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpA
QCAtNDk5Nyw2ICs0OTk3LDEzIEBACiAJCUM1RUJERDg0MTA1RURERUMwMDU2ODE2RiAvKiBTdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlzcGF0
Y2hlci5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0
aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
LmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25M
aXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVjdGlvbkxpc3RMZXZlbC5j
cHAgKi87IH07CisJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IENEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZl
bnQuaCAqLzsgfTsKKwkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmNwcCAqLzsgfTsKKwkJQ0RFMjA4NEExMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQ0RFMjA4NDcxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlDREUyMDg0QjEyMDM1NUU0MDBEMTBBNzUgLyog
RE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NDgxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSAqLzsgfTsKKwkJQ0RFMjA4NEMxMjAzNTVFNDAw
RDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREUyMDg0OTEyMDM1NUU0
MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50SW50ZXJuYWwuaCAqLzsg
fTsKKwkJQ0RFMjA4NTIxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IENERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5jcHAgKi87IH07CisJCUNERTIwODUzMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQ0RFMjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmggKi87IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRD
b250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQ0UxNzJF
MDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1v
ZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
RTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTRDMDBFMzEwRjZGN0JB
MDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87IH07CkBAIC0xMDcxNCw2ICsx
MDcyMSwxNSBAQAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50RGlz
cGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZlbnRE
aXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUQzMDlBQTI4
MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlTZWxl
Y3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
TW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzIxMUU3
QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3NjExRTdBNEQ5MDA4NzhE
OTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBh
dGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREUyMDg0NzEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
REUyMDg0ODEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREUy
MDg0OTEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50SW50
ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
Q0RFMjA4NTAxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4
NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJGMEMzMTFFODNBREQwMEM2
Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1NjcmlwdEVsZW1lbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTE5vU2NyaXB0RWxlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzE2NCw2ICsxMzE4MCw5IEBA
CiAJCQkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVu
dC5oICovLAogCQkJCTMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBET01XZWJLaXRUcmFuc2l0
aW9uRXZlbnQubW0gKi8sCiAJCQkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8sCisJCQkJQ0RFMjA4NDcxMjAzNTVFNDAwRDEw
QTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovLAorCQkJCUNERTIwODQ4
MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQubW0gKi8s
CisJCQkJQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudEludGVybmFsLmggKi8sCiAJCQkJODVDN0Y1RTUwQUFGQkFGQjAwNDAxNEREIC8qIERP
TVdoZWVsRXZlbnQuaCAqLywKIAkJCQk4NUM3RjVFNjBBQUZCQUZCMDA0MDE0REQgLyogRE9NV2hl
ZWxFdmVudC5tbSAqLywKIAkJCSk7CkBAIC0xNDgyMyw2ICsxNDg0Miw4IEBACiAJCQkJMzFDMEZG
M0EwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZlbnQuaCAqLywKIAkJCQkz
MUMwRkYzQjBFNENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRUcmFuc2l0aW9uRXZlbnQuY3BwICov
LAogCQkJCTMxQzBGRjNDMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktpdFRyYW5zaXRpb25FdmVu
dC5oICovLAorCQkJCUNERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RFMjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpT
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8sCiAJCQkJNjVERjMxRjEwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJNjVERjMxRjIwOUQxQ0M2MDAwMEJF
MzI1IC8qIEpTV2hlZWxFdmVudC5oICovLAogCQkJKTsKQEAgLTE2NzIzLDYgKzE2NzQ0LDcgQEAK
IAkJCQlCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUu
aCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3Jt
VmFsdWUuaWRsICovLAogCQkJCTRDREU1NEVDMEU1NTc5NzgwMDg5RTI2QyAvKiB3bWwuY3NzICov
LAorCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJ
CSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTE3MjY1
LDYgKzE3Mjg3LDkgQEAKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0QW5p
bWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJL
aXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VCNkUwMDdENkZFNSAvKiBX
ZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCisJCQkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1
IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovLAorCQkJCUNEQTc5QTcyMTFFN0E0
QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwICovLAorCQkJCUNE
QTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRs
ICovLAogCQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZl
bnQuY3BwICovLAogCQkJCTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0
aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZGRTUgLyogV2ViS2l0VHJh
bnNpdGlvbkV2ZW50LmlkbCAqLywKQEAgLTE5OTg2LDYgKzIwMDExLDEwIEBACiAJCQkJRTFCRTUx
MkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3IuaCBpbiBIZWFkZXJzICov
LAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9kZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFMjA4NEExMjAzNTVFNDAwRDEwQTc1IC8q
IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RF
MjA4NEMxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREUyMDg1MzEyMDM1NjFFMDBEMTBBNzUgLyog
SlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjIzOTAs
NiArMjI0MTksOSBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFCQyAvKiBYU0xUUHJvY2Vz
c29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAyRUE5
NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3REQ0RDg2MEZE
RjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUNEQTc5
QTc0MTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJQ0RFMjA4NEIxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJCUNERTIwODUyMTIwMzU2
MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsK
</data>
<flag name="review"
          id="52019"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63626</attachid>
            <date>2010-08-05 13:39:26 -0700</date>
            <delta_ts>2010-08-09 15:27:57 -0700</delta_ts>
            <desc>FullScreen-WebCore-IDL</desc>
            <filename>FullScreen-WebCore-IDL.patch</filename>
            <type>text/plain</type>
            <size>5038</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUsNiArMjQ1LDE1IEBAIG1vZHVsZSBjb3JlIHsKICAg
ICAgICAgW0RvbnRFbnVtXSB2b2lkIGluaXRpYWxpemVXTUxQYWdlU3RhdGUoKTsKICNlbmRpZgog
CisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVO
X0FQSQorICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIHZv
aWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOworICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRJc0Z1bGxTY3JlZW47CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIHdlYmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZDsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVt
ZW50OworICAgICAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyNlbmRpZgorCiAj
aWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVf
QwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKSW5kZXg6IFdlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZp
c2lvbiA2NDY1MykKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBA
IC0xMzMsNiArMTMzLDExIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIERPTVN0cmluZyBpbm5lclRleHQ7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZV
TExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgdm9pZCB3ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuV2l0aEtleXMoKTsKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZF
X0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERP
TSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIg
b25hYm9ydDsKQEAgLTIwNSw2ICsyMTAsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVd
IEV2ZW50TGlzdGVuZXIgb250b3VjaG1vdmU7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0s
Q29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIg
b250b3VjaGVuZDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VD
SF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOwor
ICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0g
RXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAjZW5kaWYKICAgICB9Owog
CkluZGV4OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRs
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGV2ZW50cyB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1XT1JLRVJTJkZVTExTQ1JF
RU5fQVBJLAorICAgICAgICBOb1N0YXRpY1RhYmxlcworICAgIF0gV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50IDogRXZlbnQgeworCisgICAgICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudChpbiBET01TdHJpbmcgZXZlbnRUeXBlQXJnLCAKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5CdWJibGVBcmcsIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGVBcmcpOwor
ICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gNjQ2NTMpCisrKyBX
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC02NCw2ICs2NCwx
MSBAQCBtb2R1bGUgaHRtbCB7CiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgJiYg
TEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmlu
ZyB0aXRsZURpc3BsYXlTdHJpbmc7CiAjZW5kaWYKKworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExT
Q1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgdm9pZCB3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVu
V2l0aEtleXMoKTsKKyNlbmRpZgogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1M
SUZyYW1lRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVF
bGVtZW50LmlkbAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVs
ZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw5IEBAIG1vZHVsZSBodG1sIHsK
ICAgICAgICAgYXR0cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgbmFtZTsKICAgICAgICAgYXR0
cmlidXRlIFtSZWZsZWN0XSBET01TdHJpbmcgc2FuZGJveDsKICAgICAgICAgYXR0cmlidXRlIFtS
ZWZsZWN0XSBET01TdHJpbmcgc2Nyb2xsaW5nOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgYXR0cmlidXRlIFtSZWZs
ZWN0XSBib29sZWFuIHdlYmtpdEFsbG93RnVsbFNjcmVlbjsKKyNlbmRpZgogICAgICAgICBhdHRy
aWJ1dGUgW1JlZmxlY3RdIERPTVN0cmluZyBzcmM7CiAgICAgICAgIGF0dHJpYnV0ZSBbUmVmbGVj
dF0gRE9NU3RyaW5nIHdpZHRoOwogCg==
</data>
<flag name="review"
          id="52021"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63627</attachid>
            <date>2010-08-05 13:39:59 -0700</date>
            <delta_ts>2010-08-09 15:27:57 -0700</delta_ts>
            <desc>FullScreen-WebCore-MediaElements</desc>
            <filename>FullScreen-WebCore-MediaElements.patch</filename>
            <type>text/plain</type>
            <size>4560</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2Vi
Q29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMTIsOCAr
MzEyLDEyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWUKIHsKICAg
ICBpZiAobV9uZXR3b3JrU3RhdGUgPiBORVRXT1JLX0VNUFRZKQogICAgICAgICBwYXVzZShwcm9j
ZXNzaW5nVXNlckdlc3R1cmUoKSk7Ci0gICAgaWYgKG1faXNGdWxsc2NyZWVuKQorI2lmICFFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8gT25seSBtYW51YWxseSBleGl0IGZ1bGwtc2NyZWVu
IG1vZGUgaWYKKyAgICAvLyB3ZSBhcmUgbm90IHVzaW5nIHRoZSBuZXcgZnVsbC1zY3JlZW4gQVBJ
LgorICAgIGlmIChpc0Z1bGxzY3JlZW4oKSkKICAgICAgICAgZXhpdEZ1bGxzY3JlZW4oKTsKKyNl
bmRpZgogICAgIEhUTUxFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KCk7CiB9CiAKQEAgLTE4
NTIsOCArMTg1NiwxMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnVzZXJDYW5jZWxsZWRMb2Fk
CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6ZG9jdW1lbnRXaWxsQmVjb21lSW5hY3RpdmUoKQog
ewotICAgIGlmIChtX2lzRnVsbHNjcmVlbikKKyNpZiAhRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIC8vIE9ubHkgbWFudWFsbHkgZXhpdCBmdWxsLXNjcmVlbiBtb2RlIGlmCisgICAgLy8gd2Ug
YXJlIG5vdCB1c2luZyB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSS4KKyAgICBpZiAoaXNGdWxsc2Ny
ZWVuKCkpCiAgICAgICAgIGV4aXRGdWxsc2NyZWVuKCk7CisjZW5kaWYKIAogICAgIG1faW5BY3Rp
dmVEb2N1bWVudCA9IGZhbHNlOwogICAgIHVzZXJDYW5jZWxsZWRMb2FkKCk7CkBAIC0yMDEzLDI0
ICsyMDIxLDQ0IEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6Y3JlYXRlTWVkaWFQbGF5ZXIKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURFTykKIAorYm9vbCBIVE1MTWVk
aWFFbGVtZW50Ojppc0Z1bGxzY3JlZW4oKSBjb25zdCAKK3sKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisgICAgcmV0dXJuIGRvY3VtZW50KCkgPyBkb2N1bWVudCgpLT53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQoKSA9PSB0aGlzIDogZmFsc2U7CisjZWxzZQorICAgIHJldHVybiBt
X2lzRnVsbHNjcmVlbjsKKyNlbmRpZgorfQorCiB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmVudGVy
RnVsbHNjcmVlbigpCiB7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEFTU0VSVCgh
aXNGdWxsc2NyZWVuKCkpOworICAgIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKTsK
KyNlbHNlCiAgICAgQVNTRVJUKCFtX2lzRnVsbHNjcmVlbik7CiAgICAgbV9pc0Z1bGxzY3JlZW4g
PSB0cnVlOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBhZ2UoKSkgewotICAg
ICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+ZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZSh0aGlzKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+cGFnZSgpLT5jaHJvbWUoKS0+
Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQodGhpcyk7CiAgICAgICAgIHNjaGVk
dWxlRXZlbnQoZXZlbnROYW1lcygpLndlYmtpdGJlZ2luZnVsbHNjcmVlbkV2ZW50KTsKICAgICB9
CisjZW5kaWYKIH0KIAogdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpleGl0RnVsbHNjcmVlbigpCiB7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEFTU0VSVChpc0Z1bGxzY3JlZW4oKSk7
CisgICAgaWYgKGRvY3VtZW50KCkpCisgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1
bGxTY3JlZW4oKTsKKyNlbHNlCiAgICAgQVNTRVJUKG1faXNGdWxsc2NyZWVuKTsKICAgICBtX2lz
RnVsbHNjcmVlbiA9IGZhbHNlOwogICAgIGlmIChkb2N1bWVudCgpICYmIGRvY3VtZW50KCktPnBh
Z2UoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCktPmNocm9tZSgpLT5jbGllbnQoKS0+
ZXhpdEZ1bGxzY3JlZW5Gb3JOb2RlKHRoaXMpOworICAgICAgICBkb2N1bWVudCgpLT5wYWdlKCkt
PmNocm9tZSgpLT5jbGllbnQoKS0+ZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KHRoaXMpOwogICAg
ICAgICBzY2hlZHVsZUV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRlbmRmdWxsc2NyZWVuRXZlbnQp
OwogICAgIH0KKyNlbmRpZgogfQogCiBQbGF0Zm9ybU1lZGlhIEhUTUxNZWRpYUVsZW1lbnQ6OnBs
YXRmb3JtTWVkaWEoKSBjb25zdApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lv
biA2NDY1MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Nyw3ICsxNTcsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGhhc1NpbmdsZVNlY3Vy
aXR5T3JpZ2luKCkgY29uc3QgeyByZXR1cm4gIW1fcGxheWVyIHx8IG1fcGxheWVyLT5oYXNTaW5n
bGVTZWN1cml0eU9yaWdpbigpOyB9CiAgICAgCi0gICAgYm9vbCBpc0Z1bGxzY3JlZW4oKSBjb25z
dCB7IHJldHVybiBtX2lzRnVsbHNjcmVlbjsgfQorICAgIGJvb2wgaXNGdWxsc2NyZWVuKCkgY29u
c3Q7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW4oKTsKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVu
KCk7CiAKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MVmlkZW9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTFZpZGVvRWxlbWVudC5jcHAJKHJldmlzaW9uIDY0NjUzKQor
KysgV2ViQ29yZS9odG1sL0hUTUxWaWRlb0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJlbmRlckltYWdlLmgi
CiAjaW5jbHVkZSAiUmVuZGVyVmlkZW8uaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNiwxMSArMTI3LDE2IEBAIGJvb2wgSFRNTFZpZGVvRWxl
bWVudDo6c3VwcG9ydHNGdWxsc2NyZWUKICAgICBpZiAoIXBhZ2UpIAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgaWYgKCFwYWdlLT5zZXR0
aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisjZW5k
aWYKKyAgICAKICAgICBpZiAoIXBsYXllcigpIHx8ICFwbGF5ZXIoKS0+c3VwcG9ydHNGdWxsc2Ny
ZWVuKCkgfHwgIXBsYXllcigpLT5oYXNWaWRlbygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICAvLyBDaGVjayB3aXRoIHRoZSBwbGF0Zm9ybSBjbGllbnQuCi0gICAgcmV0dXJuIHBhZ2Ut
PmNocm9tZSgpLT5jbGllbnQoKS0+c3VwcG9ydHNGdWxsc2NyZWVuRm9yTm9kZSh0aGlzKTsKKyAg
ICByZXR1cm4gcGFnZS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxzY3JlZW5Gb3JF
bGVtZW50KHRoaXMpOwogfQogCiB1bnNpZ25lZCBIVE1MVmlkZW9FbGVtZW50Ojp2aWRlb1dpZHRo
KCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5j
cHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NzYsNyArNzc2LDEwIEBAIFBhc3NSZWZQdHI8
TWVkaWFDb250cm9sRnVsbHNjcmVlbkJ1dHRvbkUKIHZvaWQgTWVkaWFDb250cm9sRnVsbHNjcmVl
bkJ1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAg
IGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAg
IG1lZGlhRWxlbWVudCgpLT5lbnRlckZ1bGxzY3JlZW4oKTsKKyAgICAgICAgaWYgKG1lZGlhRWxl
bWVudCgpLT5pc0Z1bGxzY3JlZW4oKSkKKyAgICAgICAgICAgIG1lZGlhRWxlbWVudCgpLT5leGl0
RnVsbHNjcmVlbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+
ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKGV2ZW50KTsK
</data>
<flag name="review"
          id="52022"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63628</attachid>
            <date>2010-08-05 13:40:33 -0700</date>
            <delta_ts>2010-08-10 03:16:40 -0700</delta_ts>
            <desc>FullScreen-WebCore</desc>
            <filename>FullScreen-WebCore.patch</filename>
            <type>text/plain</type>
            <size>27297</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDE1IEBAIFBzZXVkb0lk
IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXAKICAgICAgICAgcmV0dXJuIE5PUFNFVURP
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU47CisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuRG9jOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU5fRE9DOworICAgIGNhc2Ug
UHNldWRvRnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQ6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVF
Tl9ET0NfV0lUSF9UQVJHRVQ7CisjZW5kaWYKKyAgICAgICAgICAgIAogICAgIGNhc2UgUHNldWRv
SW5wdXRMaXN0QnV0dG9uOgogI2lmIEVOQUJMRShEQVRBTElTVCkKICAgICAgICAgcmV0dXJuIElO
UFVUX0xJU1RfQlVUVE9OOwpAQCAtNDIyLDYgKzQzMSwxMSBAQCBzdGF0aWMgSGFzaE1hcDxBdG9t
aWNTdHJpbmdJbXBsKiwgQ1NTU2VsCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJp
bmcsIGZpcnN0UGFnZSwgKCJmaXJzdCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21p
Y1N0cmluZywgbGVmdFBhZ2UsICgibGVmdCIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0
b21pY1N0cmluZywgcmlnaHRQYWdlLCAoInJpZ2h0IikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZnVsbFNjcmVlbiwg
KCItd2Via2l0LWZ1bGwtc2NyZWVuIikpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWlj
U3RyaW5nLCBmdWxsU2NyZWVuRG9jLCAoIi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jIikpOworICAg
IERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuRG9jV2l0aFRhcmdl
dCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWRvYy13aXRoLXRhcmdldCIpKTsKKyNlbmRpZgogCiAg
ICAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1NlbGVjdG9yOjpQc2V1ZG9U
eXBlPiogbmFtZVRvUHNldWRvVHlwZSA9IDA7CiAgICAgaWYgKCFuYW1lVG9Qc2V1ZG9UeXBlKSB7
CkBAIC01MzMsNiArNTQ3LDExIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBD
U1NTZWwKICAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZpcnN0UGFnZS5pbXBsKCksIENT
U1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2UpOwogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5z
ZXQobGVmdFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvTGVmdFBhZ2UpOwogICAgICAg
ICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQocmlnaHRQYWdlLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBz
ZXVkb1JpZ2h0UGFnZSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICBuYW1l
VG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbi5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9G
dWxsU2NyZWVuKTsKKyAgICAgICAgbmFtZVRvUHNldWRvVHlwZS0+c2V0KGZ1bGxTY3JlZW5Eb2Mu
aW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvYyk7CisgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuRG9jV2l0aFRhcmdldC5pbXBsKCksIENTU1NlbGVj
dG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jV2l0aFRhcmdldCk7CisjZW5kaWYKICAgICB9CiAgICAg
cmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7CiB9CkBAIC02NjIsNiArNjgxLDExIEBAIHZvaWQgQ1NT
U2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBjYXNlIFBzZXVkb1NpbmdsZUJ1
dHRvbjoKICAgICBjYXNlIFBzZXVkb05vQnV0dG9uOgogICAgIGNhc2UgUHNldWRvTm90UGFyc2Vk
OgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBjYXNlIFBzZXVkb0Z1bGxTY3JlZW46
CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jOgorICAgIGNhc2UgUHNldWRvRnVsbFNjcmVl
bkRvY1dpdGhUYXJnZXQ6CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9G
aXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKSW5kZXg6IFdlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2
aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTcsNiArMjE3LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBz
ZXVkb0xlZnRQYWdlLAogICAgICAgICAgICAgUHNldWRvUmlnaHRQYWdlLAogICAgICAgICAgICAg
UHNldWRvRmlyc3RQYWdlLAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgICAg
IFBzZXVkb0Z1bGxTY3JlZW4sCisgICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuRG9jLAorICAg
ICAgICAgICAgUHNldWRvRnVsbFNjcmVlbkRvY1dpdGhUYXJnZXQsCisjZW5kaWYKICAgICAgICAg
fTsKIAogICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMTQgQEAgc3RhdGljIHZvaWQgbG9h
ZEZ1bGxEZWZhdWx0U3R5bGUoKQogICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWly
a3NVc2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkp
ICsgUmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsK
ICAgICBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NSdWxl
cyk7CiAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVl
dCwgc2NyZWVuRXZhbCgpKTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAg
Ly8gRnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmlu
ZyhmdWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdl
bnRTdHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRGVmYXVs
dFN0eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVuU2hlZXQgPSBwYXJz
ZVVBU2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICBkZWZhdWx0UXVpcmtz
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsK
KyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTI2
MjksNiArMjYzNywzNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICAgICAgfQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8g
V2hpbGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1
bWVudCdzIGN1cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlz
IGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFz
cyBhcHBsaWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4g
PGlmcmFtZT4sIDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2lu
ZyAKKyAgICAgICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxz
Y3JlZW4gc3RhdGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisg
ICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChl
ICE9IGUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GdWxsU2NyZWVuRG9jOgor
ICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4g
c3RhdGUsIHRoZSAnZnVsbC1zY3JlZW4tZG9jJyBwc2V1ZG9jbGFzcyBhcHBsaWVzIAorICAgICAg
ICAgICAgICAgIC8vIHRvIHRoZSByb290IGVsZW1lbnQgb2YgdGhhdCBEb2N1bWVudC4KKyAgICAg
ICAgICAgICAgICBpZiAoIWUtPmRvY3VtZW50KCktPndlYmtpdElzRnVsbFNjcmVlbigpKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUgIT0g
ZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2NXaXRoVGFyZ2V0OgorICAgICAgICAg
ICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4gc3RhdGUgYW5k
IHRoZSBkb2N1bWVudCdzIGN1cnJlbnQgZnVsbHNjcmVlbiBlbGVtZW50IAorICAgICAgICAgICAg
ICAgIC8vIGlzIGFuIGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuLWRv
Yy13aXRoLXRhcmdldCcgcHNldWRvY2xhc3MgYXBwbGllcyB0byAKKyAgICAgICAgICAgICAgICAv
LyB0aGUgcm9vdCBlbGVtZW50IG9mIHRoYXQgRG9jdW1lbnQuCisgICAgICAgICAgICAgICAgaWYg
KCFlLT5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChlICE9IGUtPmRvY3VtZW50KCkt
PmRvY3VtZW50RWxlbWVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT5jb250YWlucyhlLT5kb2N1bWVudCgp
LT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6Cklu
ZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAwLDYgKzIwMCwxMCBAQAogI2luY2x1ZGUgIkhUTUxOb1Nj
cmlwdEVsZW1lbnQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2lu
Y2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIHVzaW5nIG5h
bWVzcGFjZSBzdGQ7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwogdXNpbmcgbmFtZXNwYWNlIFVuaWNv
ZGU7CkBAIC00MDUsNiArNDA5LDEwIEBAIERvY3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUs
IGNvbnN0IEsKICNlbmRpZgogICAgICwgbV93ZWFrUmVmZXJlbmNlKERvY3VtZW50V2Vha1JlZmVy
ZW5jZTo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9pZEF0dHJpYnV0ZU5hbWUoaWRBdHRyKQorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIG1faXNGdWxsU2NyZWVuKDApCisgICAgLCBt
X2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuKDApCisjZW5kaWYKIHsKICAgICBtX2RvY3VtZW50
ID0gdGhpczsKIApAQCAtNDg3LDYgKzQ5NSw5IEBAIHZvaWQgRG9jdW1lbnQ6OnJlbW92ZWRMYXN0
UmVmKCkKICAgICAgICAgbV9hY3RpdmVOb2RlID0gMDsKICAgICAgICAgbV90aXRsZUVsZW1lbnQg
PSAwOwogICAgICAgICBtX2RvY3VtZW50RWxlbWVudCA9IDA7CisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyNlbmRpZgogCiAgICAg
ICAgIC8vIHJlbW92ZUFsbENoaWxkcmVuKCkgZG9lc24ndCBhbHdheXMgdW5yZWdpc3RlciBJRHMs
IGRvIGl0IHVwZnJvbnQgdG8gYXZvaWQgaGF2aW5nIHN0YWxlIHJlZmVyZW5jZXMgaW4gdGhlIG1h
cC4KICAgICAgICAgbV9lbGVtZW50c0J5SWQuY2xlYXIoKTsKQEAgLTMxNjQsNiArMzE3NSwxNSBA
QCB2b2lkIERvY3VtZW50Ojpub2RlV2lsbEJlUmVtb3ZlZChOb2RlKiBuCiAgICAgICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS0+bm9kZVdpbGxCZVJlbW92ZWQobik7CiAgICAgICAgIGZyYW1lLT5kcmFn
Q2FyZXRDb250cm9sbGVyKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4pOwogICAgIH0KKyAgICAKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgQVNTRVJUKG4pOworICAgIGlmIChuLT5jb250
YWlucyhtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKSkgeworICAgICAgICBBU1NFUlQobiAhPSBk
b2N1bWVudEVsZW1lbnQoKSk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBkb2N1bWVu
dEVsZW1lbnQoKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICB9CisjZW5kaWYKIH0K
IAogdm9pZCBEb2N1bWVudDo6dGV4dEluc2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9mZnNl
dCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzMzMCw2ICszMzUwLDEwIEBAIFBhc3NSZWZQdHI8RXZl
bnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudCgKICNlbmRpZgogICAgICAgICBldmVudCA9IFRvdWNo
RXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
IGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAgICAg
IGV2ZW50ID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRpZgog
I2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09
ICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50IikKICAgICAgICAgZXZlbnQgPSBEZXZpY2VPcmllbnRh
dGlvbkV2ZW50OjpjcmVhdGUoKTsKQEAgLTMzODEsNiArMzQwNSwxMCBAQCB2b2lkIERvY3VtZW50
OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRlZChjCiAgICAgICAgICAgICBwYWdlLT5jaHJvbWUoKS0+
Y2xpZW50KCktPm5lZWRUb3VjaEV2ZW50cyh0cnVlKTsKICAgICB9CiAjZW5kaWYKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQpCisgICAgICAgIGFkZExpc3RlbmVyVHlwZShG
VUxMU0NSRUVOQ0hBTkdFX0xJU1RFTkVSKTsKKyNlbmRpZgogfQogCiBDU1NTdHlsZURlY2xhcmF0
aW9uKiBEb2N1bWVudDo6Z2V0T3ZlcnJpZGVTdHlsZShFbGVtZW50KiwgY29uc3QgU3RyaW5nJikK
QEAgLTUwOTQsNSArNTEyMiw4NSBAQCBJbnNwZWN0b3JDb250cm9sbGVyKiBEb2N1bWVudDo6aW5z
cGVjdG9yCiAgICAgcmV0dXJuIHBhZ2UoKSA/IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigp
IDogMDsKIH0KICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK3ZvaWQg
RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAgICB3ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1bWVudEVsZW1lbnQoKSwgZmFsc2UpOwor
fQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKK3sK
KyAgICB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhkb2N1bWVudEVs
ZW1lbnQoKSwgdHJ1ZSk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyhFbGVtZW50KiBlbGVtZW50LCBib29sIGtleXNFbmFi
bGVkKQoreworICAgIGlmICghcGFnZSgpIHx8ICFwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3Jl
ZW5FbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmICghZWxlbWVudCkKKyAgICAg
ICAgZWxlbWVudCA9IGRvY3VtZW50RWxlbWVudCgpOworICAgIAorICAgIGlmICghcGFnZSgpLT5j
aHJvbWUoKS0+Y2xpZW50KCktPnN1cHBvcnRzRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCkp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gMDsKKyAg
ICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0ga2V5c0VuYWJsZWQ7CisgICAgcGFnZSgp
LT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoZWxlbWVudCk7
Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKQoreworICAgIGlm
ICghcGFnZSgpIHx8ICFtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICByZXR1cm47CisgICAg
CisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVu
dChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKK30KKyAgICAKK3ZvaWQgRG9jdW1lbnQ6Ondl
YmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7Cisg
ICAgQVNTRVJUKHBhZ2UoKSAmJiBwYWdlKCktPnNldHRpbmdzKCktPmZ1bGxTY3JlZW5FbmFibGVk
KCkpOworCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IGVsZW1lbnQ7CisgICAgbV9pc0Z1bGxT
Y3JlZW4gPSB0cnVlOworICAgIGRvY3VtZW50RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxj
KEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgaWYgKG1fZnVsbFNjcmVlbkVsZW1lbnQpCisgICAgICAg
IG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hhbmdl
KTsKKyAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgCisgICAgaWYgKG1fZnVsbFNjcmVl
bkVsZW1lbnQpCisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPmRpc3BhdGNoRXZlbnQoV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7CisgICAgZWxzZSAKKyAgICAgICAg
ZG9jdW1lbnRFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50OjpjcmVhdGUoKSk7Cit9CisgICAgCit2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQoreworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJr
aXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQoreworfQorCit2b2lkIERv
Y3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICBtX2lzRnVsbFNjcmVlbiA9IGZhbHNlOworICAgIG1fYXJlS2V5c0VuYWJsZWRJ
bkZ1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICAvLyBtX2Z1bGxTY3JlZW5FbGVtZW50IGhhcyBhbHJl
YWR5IGJlZW4gY2xlYXJlZDsgcmVjYWxjIHRoZSBzdHlsZSBvZiAKKyAgICAvLyB0aGUgcGFzc2Vk
IGluIGVsZW1lbnQgaW5zdGVhZC4KKyAgICAKKyAgICBpZiAoZWxlbWVudCkKKyAgICAgICAgZWxl
bWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGRvY3VtZW50
RWxlbWVudCgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBk
YXRlU3R5bGVJZk5lZWRlZCgpOworICAgIAorICAgIGlmIChlbGVtZW50KQorICAgICAgICBlbGVt
ZW50LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkp
OworICAgIGVsc2UKKyAgICAgICAgZG9jdW1lbnRFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKSk7Cit9CisgICAgCisjZW5kaWYKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2NDY1MykKKysrIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3NSw2ICsyNzUsOSBAQCBw
dWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7CiAg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9M
SVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgRG9jdW1lbnRU
eXBlKiBkb2N0eXBlKCkgY29uc3QgeyByZXR1cm4gbV9kb2NUeXBlLmdldCgpOyB9CiAKQEAgLTY4
OCw3ICs2OTEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElTVEVORVIgICAg
ICAgICAgICAgICA9IDB4ODAwLAogICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVSICAgICAgICAg
ICAgICAgICAgPSAweDEwMDAsCiAgICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAgICAgICAgICAg
ICAgICAgICA9IDB4MjAwMCwKLSAgICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAg
ICAgICAgID0gMHg0MDAwCisgICAgICAgIEJFRk9SRVBST0NFU1NfTElTVEVORVIgICAgICAgICAg
ICAgICA9IDB4NDAwMCwKKyAgICAgICAgRlVMTFNDUkVFTkNIQU5HRV9MSVNURU5FUiAgICAgICAg
ICAgID0gMHg4MDAwLAogICAgIH07CiAKICAgICBib29sIGhhc0xpc3RlbmVyVHlwZShMaXN0ZW5l
clR5cGUgbGlzdGVuZXJUeXBlKSBjb25zdCB7IHJldHVybiAobV9saXN0ZW5lclR5cGVzICYgbGlz
dGVuZXJUeXBlKTsgfQpAQCAtMTAxNCw2ICsxMDE4LDIxIEBAIHB1YmxpYzoKICAgICBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIqIHRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKTsKIAogICAgIGNv
bnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0cmlidXRlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRB
dHRyaWJ1dGVOYW1lOyB9CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGJv
b2wgd2Via2l0SXNGdWxsU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW47IH0K
KyAgICBib29sIHdlYmtpdElzRnVsbFNjcmVlbldpdGhLZXlzRW5hYmxlZCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsU2NyZWVuICYmIG1fYXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47IH0KKyAg
ICBFbGVtZW50KiB3ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpOyB9CisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbigpOworICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpOwor
ICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVu
dCosIGJvb2wga2V5c0VuYWJsZWQpOworICAgIHZvaWQgd2Via2l0Q2FuY2VsRnVsbFNjcmVlbigp
OworICAgIAorICAgIHZvaWQgd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxl
bWVudCopOworICAgIHZvaWQgd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50Kik7CisgICAgdm9pZCB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1l
bnQqKTsKKyAgICB2b2lkIHdlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
Kik7CisjZW5kaWYKIAogICAgIGJvb2wgd3JpdGVEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
d3JpdGVEaXNhYmxlZDsgfQogICAgIHZvaWQgc2V0V3JpdGVEaXNhYmxlZChib29sIGZsYWcpIHsg
bV93cml0ZURpc2FibGVkID0gZmxhZzsgfQpAQCAtMTMwMSw2ICsxMzIwLDEyIEBAIHByaXZhdGU6
CiAgICAgSGFzaFNldDxNZWRpYUNhblN0YXJ0TGlzdGVuZXIqPiBtX21lZGlhQ2FuU3RhcnRMaXN0
ZW5lcnM7CiAKICAgICBRdWFsaWZpZWROYW1lIG1faWRBdHRyaWJ1dGVOYW1lOworICAgIAorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBib29sIG1faXNGdWxsU2NyZWVuOworICAgIGJv
b2wgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbjsKKyAgICBSZWZQdHI8RWxlbWVudD4gbV9m
dWxsU2NyZWVuRWxlbWVudDsKKyNlbmRpZgogfTsKIAogaW5saW5lIGJvb2wgRG9jdW1lbnQ6Omhh
c0VsZW1lbnRXaXRoSWQoQXRvbWljU3RyaW5nSW1wbCogaWQpIGNvbnN0CkluZGV4OiBXZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
cmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTU4Niw1ICsxNTg2LDE3IEBAIGJvb2wgRWxlbWVudDo6Y2hpbGRTaG91bGRDcmVhdGVS
ZW5kZXJlcigKICAgICByZXR1cm4gTm9kZTo6Y2hpbGRTaG91bGRDcmVhdGVSZW5kZXJlcihjaGls
ZCk7CiB9CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCit2b2lkIEVs
ZW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCkKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0aGlzLCBmYWxzZSk7Cit9CisK
K3ZvaWQgRWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5XaXRoS2V5cygpCit7CisgICAg
ZG9jdW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXModGhp
cywgdHJ1ZSk7Cit9CisjZW5kaWYgICAgCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50
LmgJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5U
X0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVS
KHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpOwor
I2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3JlYXRl
Q29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlz
c2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKQEAgLTI5Miw2ICsyOTUsMTEgQEAg
cHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgdmlydHVhbCBib29sIGNoaWxkU2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OyAKICNlbmRpZgorICAgIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgdm9p
ZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVk
OgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA2NDY1MykK
KysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miwx
MyBAQCBib29sIEV2ZW50Ojppc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorYm9vbCBFdmVudDo6aXNX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsK
K30KKyNlbmRpZgorCiBib29sIEV2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2NDY1MykKKysrIFdl
YkNvcmUvZG9tL0V2ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlvbkV2
ZW50KCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25FdmVu
dCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBjb25z
dDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpIGNvbnN0OworI2VuZGlmCiAjaWYgRU5BQkxFKFNW
RykKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIFwKICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UpCisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFD
SAogCiAgICAgY2xhc3MgRXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBX
ZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCisvLyBGcm9tIHRoZSBNb3ppbGxhIEZ1bGxTY3JlZW4gcHJvcG9zYWw6ICJUaGUg
W2Z1bGxTY3JlZW5DaGFuZ2VFdmVudF0gYnViYmxlcyAKKy8vIGFuZCBpcyBub3QgY2FuY2VsbGFi
bGUuIgorCitXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OldlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCgpCis6IEV2ZW50KGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZl
bnQsIHRydWUsIGZhbHNlKQoreworfQorCitXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6On5X
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKQoreworfQorCit2b2lkIFdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudDo6aW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGNhbmNlbGFibGVBcmcpCit7CisgICAgaWYgKGRpc3BhdGNoZWQoKSkKKyAgICAgICAgcmV0
dXJuOworICAgIAorICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGVBcmcsIGNhbmNlbGFibGVB
cmcpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKSW5kZXg6IFdl
YkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VF
dmVudF9oCisjZGVmaW5lIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9oCisKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisKKyNpbmNsdWRlICJFdmVudC5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCitjbGFzcyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQgOiBwdWJsaWMg
RXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcg
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTsKKyAgICB9ICAgICAgICAKKyAgICB2aXJ0dWFs
IH5XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICAKKyAgICB2b2lkIGluaXRXZWJL
aXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCAKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjYW5CdWJibGVBcmcsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFy
Zyk7CisgICAgCisgICAgdmlydHVhbCBib29sIGlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQoKTsKKyAgICBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoY29u
c3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKKyNlbmRpZiAvLyBXZWJLaXRG
dWxsU2NyZWVuQ2hhbmdlRXZlbnRfaApJbmRleDogV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiA2
NDY1MykKKysrIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQ3LDYgKzQ3LDEwIEBACiAjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL1N0ZExp
YkV4dHJhcy5oPgogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorI2luY2x1ZGUgIldlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKQEAgLTI2Miw2ICsyNjYsMTAgQEAgdm9pZCBI
VE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQQogICAgICAgICBzZXRBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS50b3VjaGVuZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9
PSBvbnRvdWNoY2FuY2VsQXR0cikgewogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS50b3VjaGNhbmNlbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgfSBlbHNl
IGlmIChhdHRyLT5uYW1lKCkgPT0gb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlQXR0cikgeworICAg
ICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS53ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikp
OworI2VuZGlmCiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTElGcmFtZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDY0NjUzKQorKysgV2ViQ29yZS9odG1sL0hUTUxJRnJhbWVFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsOSBAQCB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCiBpbmxpbmUgSFRNTElGcmFtZUVsZW1lbnQ6OkhUTUxJRnJhbWVFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IEhUTUxGcmFt
ZUVsZW1lbnRCYXNlKHRhZ05hbWUsIGRvY3VtZW50KQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyAgICAsIG1fYWxsb3dzRnVsbFNjcmVlbihmYWxzZSkKKyNlbmRpZgogewogICAgIEFTU0VS
VChoYXNUYWdOYW1lKGlmcmFtZVRhZykpOwogfQpAQCAtMTMyLDYgKzEzNSwxMCBAQCB2b2lkIEhU
TUxJRnJhbWVFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IHNhbmRib3hBdHRyKQogICAgICAgICBzZXRTYW5kYm94RmxhZ3MocGFyc2VTYW5kYm94
QXR0cmlidXRlKGF0dHIpKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAg
ICBpZiAoYXR0ci0+bmFtZSgpID09IHdlYmtpdGFsbG93ZnVsbHNjcmVlbkF0dHIpCisgICAgICAg
IG1fYWxsb3dzRnVsbFNjcmVlbiA9IHRydWU7CisjZW5kaWYKICAgICBlbHNlCiAgICAgICAgIEhU
TUxGcmFtZUVsZW1lbnRCYXNlOjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6
IFdlYkNvcmUvaHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
aHRtbC9IVE1MSUZyYW1lRWxlbWVudC5oCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvaHRt
bC9IVE1MSUZyYW1lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSwxMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MSUZyYW1lRWxlbWVudCA6IHB1YmxpYyBIVE1M
RnJhbWVFbGVtZW50QmFzZSB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8SFRNTElG
cmFtZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAg
ICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCB3ZWJraXRBbGxvd0Z1bGxT
Y3JlZW4oKSBjb25zdCB7IHJldHVybiBtX2FsbG93c0Z1bGxTY3JlZW47IH0KKyAgICB2b2lkIHNl
dFdlYmtpdEFsbG93RnVsbFNjcmVlbihib29sIHZhbHVlKSB7IG1fYWxsb3dzRnVsbFNjcmVlbiA9
IHZhbHVlOyB9CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBIVE1MSUZyYW1lRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKQEAgLTUwLDYgKzU1LDkgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CiAKICAg
ICBBdG9taWNTdHJpbmcgbV9uYW1lOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBi
b29sIG1fYWxsb3dzRnVsbFNjcmVlbjsKKyNlbmRpZgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjQ2NTMpCisrKyBXZWJDb3JlL3Bh
Z2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0Miw5ICsyNDIsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgUGFzc093blB0cjxHTEVTMkNvbnRleHQ+
IGdldE9mZnNjcmVlbkdMRVMyQ29udGV4dCgpID0gMDsKICNlbmRpZgogCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JOb2RlKGNvbnN0IE5vZGUqKSB7IHJldHVybiBm
YWxzZTsgfQotICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2Rl
KikgeyB9Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSop
IHsgfQorICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudChj
b25zdCBFbGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVu
dGVyRnVsbHNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZv
aWQgZXhpdEZ1bGxzY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KIAogI2lmIEVOQUJMRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQogICAgICAgICB2aXJ0dWFsIEludFJlY3QgdmlzaWJsZVJlY3RG
b3JUaWxlZEJhY2tpbmdTdG9yZSgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoKTsgfQpJbmRleDog
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuY3BwCShyZXZpc2lvbiA2NDY1MykKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEzNyw2ICsxMzcsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFn
ZSogcGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwg
YmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQoZmFs
c2UpCisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2lu
dGVyYWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0
dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24g
NjQ2NTMpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzEz
LDYgKzMxMywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGFnaW5h
dGVEdXJpbmdMYXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0
RW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJs
ZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFi
bGVkKGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQorICAgICAg
ICBib29sIGZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQ
SUVuYWJsZWQ7IH0KKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQo
Ym9vbCBmbGFnKSB7IG1fbWVtb3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wg
bWVtb3J5SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9
CiAKQEAgLTQwNyw2ICs0MTIsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
bV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRv
IG5vdCB1c2UuCiAgICAgICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAx
OwogICAgICAgICBib29sIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuQVBJRW5hYmxlZCA6IDE7
CisjZW5kaWYKICAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBi
b29sIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbjogMTsKICAgICAKSW5kZXg6IFdlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAkocmV2aXNpb24gNjQ2
NTMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OSw2ICs3OSw3IEBAIGVudW0gUHNldWRvSWQgewogICAgIE1FVEVS
X0hPUklaT05UQUxfQkFSLCBNRVRFUl9IT1JJWk9OVEFMX09QVElNVU0sIE1FVEVSX0hPUklaT05U
QUxfU1VCT1BUSU1BTCwgTUVURVJfSE9SSVpPTlRBTF9FVkVOX0xFU1NfR09PRCwKICAgICBNRVRF
Ul9WRVJUSUNBTF9CQVIsIE1FVEVSX1ZFUlRJQ0FMX09QVElNVU0sIE1FVEVSX1ZFUlRJQ0FMX1NV
Qk9QVElNQUwsIE1FVEVSX1ZFUlRJQ0FMX0VWRU5fTEVTU19HT09ELCAKICAgICBBRlRFUl9MQVNU
X0lOVEVSTkFMX1BTRVVET0lELAorICAgIEZVTExfU0NSRUVOLCBGVUxMX1NDUkVFTl9ET0MsIEZV
TExfU0NSRUVOX0RPQ19XSVRIX1RBUkdFVCwKICAgICBGSVJTVF9QVUJMSUNfUFNFVURPSUQgPSBG
SVJTVF9MSU5FLAogICAgIEZJUlNUX0lOVEVSTkFMX1BTRVVET0lEID0gRklMRV9VUExPQURfQlVU
VE9OLAogICAgIFBVQkxJQ19QU0VVRE9JRF9NQVNLID0gKCgxIDw8IEZJUlNUX0lOVEVSTkFMX1BT
RVVET0lEKSAtIDEpICYgfigoMSA8PCBGSVJTVF9QVUJMSUNfUFNFVURPSUQpIC0gMSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63936</attachid>
            <date>2010-08-09 15:27:57 -0700</date>
            <delta_ts>2010-08-16 18:25:10 -0700</delta_ts>
            <desc>Part 1: FullScreen-ChangeLogs</desc>
            <filename>FullScreen-WebCore-ChangeLogs.patch</filename>
            <type>text/plain</type>
            <size>7138</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1MDA1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAg
KiB3dGYvUGxhdGZvcm0uaDogRW5hYmxlIEZVTExTQ1JFRU5fQVBJIG1vZGUgZm9yIHRoZSBNYWMg
KGV4Y2VwdCBpUGhvbmUpLgorCiAyMDEwLTA4LTA3ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZp
ZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByNjQ5
MzguCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5n
ZUxvZwkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDExMSBAQAorMjAxMC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGQgSmF2YVNjcmlwdCBBUEkgdG8gYWxsb3cgYSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisg
ICAgICAgIHJkYXI6Ly9wcm9ibGVtLzY4Njc3OTUKKyAgICAgICAgCisgICAgICAgIE1vemlsbGEg
aGFzIHByb3Bvc2VkIGEgbmV3IHNldCBvZiBKYXZhU2NyaXB0IEFQSXMgd2hpY2ggYWxsb3cgYW55
IGVsZW1lbnQgaW4KKyAgICAgICAgYSBkb2N1bWVudCB0byBnbyBmdWxsLXNjcmVlbi4gIFRoZSBj
dXJyZW50IHJldmlzaW9uIG9mIHRoZWlyIHByb3Bvc2FsIGNhbiBiZSAKKyAgICAgICAgZm91bmQg
aGVyZToKKyAgICAgICAgPGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9pbmRleC5waHA/dGl0bGU9
R2Vja286RnVsbFNjcmVlbkFQSSZvbGRpZD0yMzU2MDE+CisgICAgICAgIAorICAgICAgICBUaGUg
cHJvcG9zZWQgc3BlY2lmaWNhdGlvbiBpbmNsdWRlcyB0aGUgZm9sbG93aW5nOgorICAgICAgICAK
KyAgICAgICAgRG9jdW1lbnQ6CisgICAgICAgIC0gVGhyZWUgbmV3IG1ldGhvZHMgb24gRG9jdW1l
bnQ6CisgICAgICAgICAgICArIHZvaWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAg
KyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMoKQorICAgICAgICAgICAgKyB2b2lkIGNh
bmNlbEZ1bGxTY3JlZW4oKQorICAgICAgICAtIFRocmVlIG5ldyBhdHRyaWJ1dGVzIG9mIERvY3Vt
ZW50OgorICAgICAgICAgICAgKyByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVu
CisgICAgICAgICAgICArIHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIGZ1bGxTY3JlZW5XaXRo
S2V5cworICAgICAgICAgICAgKyAob3B0aW9uYWwpIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50
IGN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudAorICAgICAgICAgICAgCisgICAgICAgIEVsZW1lbnQ6
CisgICAgICAgIC0gVHdvIG5ldyBtZXRob2RzIG9uIEVsZW1lbnQ6CisgICAgICAgICAgICArIHZv
aWQgcmVxdWVzdEZ1bGxTY3JlZW4oKQorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2Ny
ZWVuV2l0aEtleXMoKQorICAgICAgICAKKyAgICAgICAgSFRNTElGcmFtZUVsZW1lbnQ6CisgICAg
ICAgIC0gT25lIG5ldyBjb250ZW50IGF0dHJpYnV0ZToKKyAgICAgICAgICAgICsgYWxsb3dGdWxs
U2NyZWVuCisgICAgICAgICAgICAKKyAgICAgICAgRXZlbnRzOgorICAgICAgICAtIE9uZSBuZXcg
ZXZlbnQ6CisgICAgICAgICAgICArIGZ1bGxTY3JlZW5DaGFuZ2UKKyAgICAgICAgCisgICAgICAg
IENTUyBQc2V1ZG8tY2xhc3NlczoKKyAgICAgICAgLSBUaHJlZSBuZXcgUHNldWRvLWNsYXNzZXM6
CisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbgorICAgICAgICAgICAgKyA6ZnVsbC1zY3JlZW4t
ZG9jCisgICAgICAgICAgICArIDpmdWxsLXNjcmVlbi1yb290LXdpdGgtdGFyZ2V0CisgICAgICAg
IAorICAgICAgICBGb3IgV2ViS2l0J3MgaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgYWxsIHRoZSBh
Ym92ZSBuZXcgQVBJcyB3aWxsIGJlIHByZWZpeGVkIHdpdGggCisgICAgICAgICJ3ZWJraXQiIG9y
ICItd2Via2l0IiB3aGVyZSBhcHByb3ByaWF0ZS4KKyAgICAgICAgCisgICAgICAgIE5ldyB0ZXN0
czoKKyAgICAgICAgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkuaHRtbAor
ICAgICAgICBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1sCisgICAg
ICAgIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sCisKKyAg
ICAgICAgUHJvamVjdCBmaWxlIGNoYW5nZXM6CisgICAgICAgICogQ29uZmlndXJhdGlvbnMvRmVh
dHVyZURlZmluZXMueGNjb25maWc6IEFkZGVkIGFuIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSBlbnRy
eS4KKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOiBBZGRlZCBydWxlcyBmb3IgZnVsbHNj
cmVlbi5jc3MgYW5kIFdlYkNvcmUuRnVsbFNjcmVlbi5leHAuCisgICAgICAgICogV2ViQ29yZS5G
dWxsU2NyZWVuLmV4cDogQWRkZWQgZXhwb3J0IHN5bWJvbHMgZm9yIERvY3VtZW50IGFuZCBFbGVt
ZW50IGZ1bmN0aW9ucy4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IE5ldyBzb3VyY2UgZmlsZXMgYWRkZWQgdG8gdGhlIHByb2plY3QuCisKKyAgICAgICAgSURM
IGNoYW5nZXM6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdWxs
LXNjcmVlbiBBUEkgdG8gdGhlIERvY3VtZW50J3MgamF2YXNjcmlwdCBpbnRlcmZhY2UuCisgICAg
ICAgICogZG9tL0VsZW1lbnQuaWRsOiBBZGRlZCB0aGUgbmV3IGZ1bGwtc2NyZWVuIEFQSSB0byB0
aGUgRWxlbWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGh0bWwvSFRNTElG
cmFtZUVsZW1lbnQuaWRsOiBBZGRlZCB0aGUgYWxsb3dGdWxsU2NyZWVuIGF0dHJpYnV0ZS4KKwor
ICAgICAgICBTb3VyY2UgY2hhbmdlczoKKyAgICAgICAgKiBiaW5kaW5ncy9vYmpjL1B1YmxpY0RP
TUludGVyZmFjZXMuaDogRXhwb3NlZCBEb2N1bWVudCBhbmQgRWxlbWVudCBmdWxsc2NyZWVuIGZ1
bmN0aW9ucyBpbiB0aGUgRE9NIGNsYXNzZXMuCisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmNw
cDogQWRkZWQgbmV3IEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMuCisgICAgICAgICogY3NzL0NT
U1NlbGVjdG9yLmg6IEFkZGVkIG5ldyBmdWxsLXNjcmVlbiBwc2V1ZG8gY2xhc3NlcyB0byB0aGUg
UHNldWRvVHlwZSBlbnVtLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDogCisg
ICAgICAgIChXZWJDb3JlOjpsb2FkRnVsbERlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3Jl
ZW4uY3NzIHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBhbmQgdGhlIGRlZmF1bHRRdWlya3NT
dHlsZSBzaGVldHMuCisgICAgICAgIChXZWJDb3JlOjpsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKTog
UHVsbCB0aGUgZnVsbHNjcmVlbi5jc3Mgc2hlZXQgaW50byB0aGUgZGVmYXVsdFN0eWxlIHNoZWV0
LgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpj
aGVja09uZVNlbGVjdG9yKTogQ2hlY2sgZm9yIHRoZSBuZXcgRnVsbFNjcmVlbiBwc2V1ZG8gY2xh
c3Nlcy4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OmNyZWF0ZUV2ZW50KTogU3VwcG9ydCBjcmVhdGluZyBhICJXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlIiBldmVudC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphZGRMaXN0ZW5lclR5
cGVJZk5lZWRlZCk6IFN1cHBvcnQgbGlzdGVuaW5nIGZvciBhICJ3ZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQiCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50V2l0aEtleXMpOiBQYXNzZXMgcmVxdWVzdCB0byB0aGUgY2hyb21lIGNs
aWVudCB0byBlbnRlciBmdWxsIHNjcmVlbiBtb2RlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OndlYmtpdENhbmNlbEZ1bGxTY3JlZW4pOiBQYXNzZXMgcmVxdWVzdCB0byB0aGUgY2hyb21l
IGNsaWVudCB0byBleGl0IGZ1bGwgc2NyZWVuIG1vZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1
bWVudDo6d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQpOiBTZXRzIHRoZSBGdWxs
U2NyZWVuIHBzZXVkby1jbGFzc2VzIG9uIHRoZSBmdWxsLXNjcmVlbiBlbGVtZW50IGFuZCBpdHMg
ZG9jdW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0RGlkRW50ZXJGdWxs
U2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQpOiBDdXJyZW50bHkg
YSBuby1vcC4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQpOiBDbGVhcnMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMgb24g
dGhlIGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDogQWRkZWQgY29uc3QgYWNjZXNzb3JzIGZvciBuZXcgZnVsbC1zY3JlZW4gaW5z
dGFuY2UgdmFyaWFibGVzLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Oik6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuKTogQWNjZXNzb3IgZm9yIG1f
aXNGdWxsU2NyZWVuLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdElzRnVsbFNj
cmVlbldpdGhLZXlzRW5hYmxlZCk6IEFjY2Vzc29yIGZvciBtX2lzRnVsbFNjcmVuIGFuZCBtX2Fy
ZUtleXNFbmFibGVkLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdEN1cnJlbnRG
dWxsU2NyZWVuRWxlbWVudCk6IEFjY2Vzc29yIGZvciBtX2Z1bGxTY3JlZW5FbGVtZW50LgorICAg
ICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKTogQ2FsbHMgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuRm9yRWxlbWVudFdpdGhLZXlzLiAKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OndlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuV2l0aEtleXMpOiBDYWxscyBEb2N1bWVudDo6d2Via2l0UmVxdWVz
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMuCisgICAgICAgICogZG9tL0VsZW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6OmlzV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KTogTmV3IG1ldGhvZCBvdmVycmlkZGVuIGJ5IFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC4KKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAgICAg
KiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdl
RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKiBkb20vV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2
ZW50Lmg6IEFkZGVkLgorICAgICAgICAqIGRvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
aWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFBhcnNlIHRoZSBuZXcg
Im9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCByZWdpc3RlciBhIGxpc3Rl
bmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxlbWVudCk6IFBhc3MgdGhy
b3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKFdlYkNvcmU6OkNocm9t
ZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0ZSBhIFdlYktpdEZ1bGxT
Y3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJyZW50IFVJIGRlbGVnYXRl
LgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvckVsZW1l
bnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5kIHBhc3MgdGhyb3VnaCB0
byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdlL1NldHRpbmdzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6CisgICAgICAgICogcGFnZS9T
ZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9sIHJ1bnRpbWUgc3VwcG9ydCBm
b3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQorICAgICAgICAqIHJlbmRlcmlu
Zy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRy
b2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IFRoZSBmdWxs
IHNjcmVlbiBidXR0b24gbm93IHRvZ2dsZXMgZnVsbCBzY3JlZW4gbW9kZSAocHJldmlvdXNseSwg
aXQgb25seSBlbnRlcmVkKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVD
b25zdGFudHMuaDogQWRkZWQgbmV3IHN0eWxlIGNvbnN0YW50cy4KKwogMjAxMC0wOC0wOSAgRHVt
aXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63937</attachid>
            <date>2010-08-09 15:28:39 -0700</date>
            <delta_ts>2010-08-16 18:25:10 -0700</delta_ts>
            <desc>Part 2: FullScreen-WebCore-NewFiles</desc>
            <filename>FullScreen-WebCore-NewFiles.patch</filename>
            <type>text/plain</type>
            <size>20005</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NTAwNSkKKysrIEphdmFTY3JpcHRD
b3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNiArNTk2LDcgQEAKICNl
bmRpZgogI2RlZmluZSBIQVZFX1JFQURMSU5FIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVS
IDEKKyNkZWZpbmUgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDEKICNlbmRpZiAvKiBQTEFURk9STShN
QUMpICYmICFQTEFURk9STShJT1MpICovCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05MDUsNiAr
OTA2LDEwIEBACiAjZGVmaW5lIEVOQUJMRV9PTl9GSVJTVF9URVhUQVJFQV9GT0NVU19TRUxFQ1Rf
QUxMIDAKICNlbmRpZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKQorI2Rl
ZmluZSBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChXVEZf
VVNFX0pTVkFMVUU2NCkgJiYgIWRlZmluZWQoV1RGX1VTRV9KU1ZBTFVFMzIpICYmICFkZWZpbmVk
KFdURl9VU0VfSlNWQUxVRTMyXzY0KQogI2lmIChDUFUoWDg2XzY0KSAmJiAoT1MoVU5JWCkgfHwg
T1MoV0lORE9XUykpKSBcCiAgICAgfHwgKENQVShJQTY0KSAmJiAhQ1BVKElBNjRfMzIpKSBcCklu
ZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtNDYxLDYgKzQ2MSw3IEBAIERPTV9DTEFTU0VT
ID0gXAogICAgIFdlYktpdENTU0tleWZyYW1lc1J1bGUgXAogICAgIFdlYktpdENTU01hdHJpeCBc
CiAgICAgV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUgXAorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudCBcCiAgICAgV2ViS2l0UG9pbnQgXAogICAgIFdlYktpdFRyYW5zaXRpb25FdmVudCBc
CiAgICAgV2ViU29ja2V0IFwKQEAgLTY3Miw2ICs2NzMsMTAgQEAgaWZlcSAoJChPUyksTUFDT1Mp
CiBlbmRpZgogZW5kaWYKIAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQ
SSwkKEZFQVRVUkVfREVGSU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkpCisgICAgVVNFUl9B
R0VOVF9TVFlMRV9TSEVFVFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3Jl
KS9jc3MvZnVsbHNjcmVlbi5jc3MKK2VuZGlmCisKIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBj
c3MvbWFrZS1jc3MtZmlsZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIAlw
ZXJsICQ8ICRAIFVzZXJBZ2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5UX1NUWUxF
X1NIRUVUUykKIApJbmRleDogV2ViQ29yZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54
Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZp
bmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAg
RU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5BQkxFX0ZJTFRFUlM7CiAKIEVOQUJMRV9GSUxFX1dS
SVRFUiA9IDsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOX0FQSSA9
IEVOQUJMRV9GVUxMU0NSRUVOX0FQSTsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9M
T0NBVElPTjsKIAogRU5BQkxFX0lDT05EQVRBQkFTRSA9ICQoRU5BQkxFX0lDT05EQVRBQkFTRV8k
KFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTIwLDQgKzEyMSw0IEBAIEVOQUJMRV9YSFRNTE1Q
ID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVf
WFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1Qp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0la
RVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRF
Ul9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9T
QU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAk
KEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RP
UkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJ
TEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lN
QUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVO
QUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAk
KEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gNjUwMDUpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtNTAzNCw2ICs1MDM0LDEzIEBACiAJCUM1RUJERDg0MTA1RURERUMw
MDU2ODE2RiAvKiBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3Rv
cmFnZUV2ZW50RGlzcGF0Y2hlci5oICovOyB9OwogCQlDNkQ3NEFENTA5QUEyODJFMDAwQjBBNTIg
LyogTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBDNkQ3NEFEMzA5QUEyODJFMDAwQjBBNTIgLyogTW9kaWZ5U2Vs
ZWN0aW9uTGlzdExldmVsLmggKi87IH07CiAJCUM2RDc0QUU0MDlBQTI5MEEwMDBCMEE1MiAvKiBN
b2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQzZENzRBRTMwOUFBMjkwQTAwMEIwQTUyIC8qIE1vZGlmeVNlbGVj
dGlvbkxpc3RMZXZlbC5jcHAgKi87IH07CisJCUNEQTc5QTczMTFFN0E0QzcwMDg3OEQ5NSAvKiBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IENEQTc5QTcxMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxs
U2NyZWVuQ2hhbmdlRXZlbnQuaCAqLzsgfTsKKwkJQ0RBNzlBNzQxMUU3QTRDNzAwODc4RDk1IC8q
IFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDREE3OUE3MjExRTdBNEM3MDA4NzhEOTUgLyogV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCAqLzsgfTsKKwkJQ0RFMjA4NEExMjAzNTVFNDAwRDEw
QTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NDcxMjAzNTVFNDAwRDEwQTc1IC8q
IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovOyB9OworCQlDREUyMDg0QjEyMDM1
NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NDgxMjAzNTVFNDAw
RDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSAqLzsgfTsKKwkJQ0RF
MjA4NEMxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
REUyMDg0OTEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50
SW50ZXJuYWwuaCAqLzsgfTsKKwkJQ0RFMjA4NTIxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0
RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IENERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5jcHAgKi87IH07CisJCUNERTIwODUzMTIwMzU2MUUwMEQxMEE3NSAv
KiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQ0RFMjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2Vi
S2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi87IH07CiAJCUNFMDJGMEM0MTFFODNBREQwMEM2
Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENv
bnRyb2xsZXJCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJQ0UxNzJFMDExMTM2RThDRTAwNjJBNTMzIC8qIFpvb21Nb2RlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDRTE3MkUwMDExMzZFOENFMDA2
MkE1MzMgLyogWm9vbU1vZGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDRTRDMDBFNDEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxl
bWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
RTRDMDBFMzEwRjZGN0JBMDBDQTM4RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi87IH07
CkBAIC0xMDc5NCw2ICsxMDgwMSwxNSBAQAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyog
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTdG9yYWdlRXZlbnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUM2RDc0QUQzMDlBQTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1
MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4u
Y3NzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQ0RBNzlBNzExMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQ0RBNzlBNzIxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJLaXRGdWxsU2Ny
ZWVuQ2hhbmdlRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREE3OUE3
NjExRTdBNEQ5MDA4NzhEOTUgLyogV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDREUyMDg0NzEyMDM1NUU0MDBEMTBBNzUgLyogRE9N
V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDREUyMDg0ODEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gRE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDREUyMDg0OTEyMDM1NUU0MDBEMTBBNzUgLyogRE9NV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50SW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
RE9NV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50SW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQ0RFMjA4NTAxMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQ0RFMjA4NTExMjAzNTYxRTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMDJG
MEMzMTFFODNBREQwMEM2Njg0QSAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRDb250cm9sbGVyQmFzZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDRTE3MkUwMDExMzZFOENFMDA2MkE1MzMgLyogWm9vbU1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWm9vbU1vZGUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQ0U0QzAwRTMxMEY2RjdCQTAwQ0EzOEY1IC8qIEhUTUxOb1Nj
cmlwdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRN
TE5vU2NyaXB0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzI1
OCw2ICsxMzI3NCw5IEBACiAJCQkJMzFDMEZGNDYwRTRDRUZERDAwN0Q2RkU1IC8qIERPTVdlYktp
dFRyYW5zaXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjQ3MEU0Q0VGREQwMDdENkZFNSAvKiBE
T01XZWJLaXRUcmFuc2l0aW9uRXZlbnQubW0gKi8sCiAJCQkJMzFDMEZGNDgwRTRDRUZERDAwN0Q2
RkU1IC8qIERPTVdlYktpdFRyYW5zaXRpb25FdmVudEludGVybmFsLmggKi8sCisJCQkJQ0RFMjA4
NDcxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICov
LAorCQkJCUNERTIwODQ4MTIwMzU1RTQwMEQxMEE3NSAvKiBET01XZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQubW0gKi8sCisJCQkJQ0RFMjA4NDkxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudEludGVybmFsLmggKi8sCiAJCQkJODVDN0Y1RTUwQUFGQkFG
QjAwNDAxNEREIC8qIERPTVdoZWVsRXZlbnQuaCAqLywKIAkJCQk4NUM3RjVFNjBBQUZCQUZCMDA0
MDE0REQgLyogRE9NV2hlZWxFdmVudC5tbSAqLywKIAkJCSk7CkBAIC0xNDkxOSw2ICsxNDkzOCw4
IEBACiAJCQkJMzFDMEZGM0EwRTRDRUZBQzAwN0Q2RkU1IC8qIEpTV2ViS2l0QW5pbWF0aW9uRXZl
bnQuaCAqLywKIAkJCQkzMUMwRkYzQjBFNENFRkFDMDA3RDZGRTUgLyogSlNXZWJLaXRUcmFuc2l0
aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjNDMEU0Q0VGQUMwMDdENkZFNSAvKiBKU1dlYktp
dFRyYW5zaXRpb25FdmVudC5oICovLAorCQkJCUNERTIwODUwMTIwMzU2MUUwMEQxMEE3NSAvKiBK
U1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5jcHAgKi8sCisJCQkJQ0RFMjA4NTExMjAzNTYx
RTAwRDEwQTc1IC8qIEpTV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50LmggKi8sCiAJCQkJNjVE
RjMxRjEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5jcHAgKi8sCiAJCQkJNjVERjMx
RjIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTV2hlZWxFdmVudC5oICovLAogCQkJKTsKQEAgLTE2ODM0
LDYgKzE2ODU1LDcgQEAKIAkJCQlCQzlBREQyMjBDQzQwMzI2MDAwOThDNEMgLyogV2ViS2l0Q1NT
VHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0RDRBMDBGNkE1NzkgLyogV2Vi
S2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAogCQkJCTRDREU1NEVDMEU1NTc5NzgwMDg5RTI2
QyAvKiB3bWwuY3NzICovLAorCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlEMzgxMSAvKiBmdWxsc2Ny
ZWVuLmNzcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKQEAgLTE3Mzg4LDYgKzE3NDEwLDkgQEAKIAkJCQkzMUMwRkYxQjBFNENFQjZFMDA3RDZG
RTUgLyogV2ViS2l0QW5pbWF0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFDMEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5oICovLAogCQkJCTMxQzBGRjFEMEU0Q0VC
NkUwMDdENkZFNSAvKiBXZWJLaXRBbmltYXRpb25FdmVudC5pZGwgKi8sCisJCQkJQ0RBNzlBNzEx
MUU3QTRDNzAwODc4RDk1IC8qIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oICovLAorCQkJ
CUNEQTc5QTcyMTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQu
Y3BwICovLAorCQkJCUNEQTc5QTc2MTFFN0E0RDkwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaWRsICovLAogCQkJCTMxQzBGRjFFMEU0Q0VCNkUwMDdENkZFNSAvKiBXZWJL
aXRUcmFuc2l0aW9uRXZlbnQuY3BwICovLAogCQkJCTMxQzBGRjFGMEU0Q0VCNkUwMDdENkZFNSAv
KiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCAqLywKIAkJCQkzMUMwRkYyMDBFNENFQjZFMDA3RDZG
RTUgLyogV2ViS2l0VHJhbnNpdGlvbkV2ZW50LmlkbCAqLywKQEAgLTIwMTMzLDYgKzIwMTU4LDEw
IEBACiAJCQkJRTFCRTUxMkUwQ0Y2QzUxMjAwMkVBOTU5IC8qIFhTTFRVbmljb2RlU29ydC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1ZGl0b3Iu
aCBpbiBIZWFkZXJzICovLAogCQkJCUNFMTcyRTAxMTEzNkU4Q0UwMDYyQTUzMyAvKiBab29tTW9k
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RBNzlBNzMxMUU3QTRDNzAwODc4RDk1IC8qIFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQ0RFMjA4NEExMjAz
NTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQ0RFMjA4NEMxMjAzNTVFNDAwRDEwQTc1IC8qIERPTVdlYktpdEZ1bGxTY3Jl
ZW5DaGFuZ2VFdmVudEludGVybmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQlDREUyMDg1MzEyMDM1
NjFFMDBEMTBBNzUgLyogSlNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9OwpAQCAtMjI1NTQsNiArMjI1ODMsOSBAQAogCQkJCTkzRjE5QjA1MDgyNDVFNTkwMDFFOUFC
QyAvKiBYU0xUUHJvY2Vzc29yTGlieHNsdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMUJFNTEy
RDBDRjZDNTEyMDAyRUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTk3REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUNEQTc5QTc0MTFFN0E0QzcwMDg3OEQ5NSAvKiBXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQ0RFMjA4NEIxMjAzNTVFNDAwRDEwQTc1
IC8qIERPTVdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUNERTIwODUyMTIwMzU2MUUwMEQxMEE3NSAvKiBKU1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVl
bkNoYW5nZUV2ZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxT
Y3JlZW5DaGFuZ2VFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIs
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5n
ZUV2ZW50LmgiCisKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKKyNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKy8vIEZyb20gdGhlIE1vemls
bGEgRnVsbFNjcmVlbiBwcm9wb3NhbDogIlRoZSBbZnVsbFNjcmVlbkNoYW5nZUV2ZW50XSBidWJi
bGVzIAorLy8gYW5kIGlzIG5vdCBjYW5jZWxsYWJsZS4iCisKK1dlYktpdEZ1bGxTY3JlZW5DaGFu
Z2VFdmVudDo6V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkKKzogRXZlbnQoZXZlbnROYW1l
cygpLndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCwgdHJ1ZSwgZmFsc2UpCit7Cit9CisKK1dl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6fldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgp
Cit7Cit9CisKK3ZvaWQgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50Ojppbml0V2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi
b29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY2FuY2VsYWJsZUFyZykKK3sKKyAgICBp
ZiAoZGlzcGF0Y2hlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaW5pdEV2ZW50KHR5
cGUsIGNhbkJ1YmJsZUFyZywgY2FuY2VsYWJsZUFyZyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vV2ViS2l0RnVsbFNjcmVlbkNo
YW5nZUV2ZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50X2gKKyNkZWZpbmUgV2ViS2l0RnVsbFNj
cmVlbkNoYW5nZUV2ZW50X2gKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKworI2luY2x1
ZGUgIkV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFdlYktpdEZ1
bGxTY3JlZW5DaGFuZ2VFdmVudCA6IHB1YmxpYyBFdmVudCB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NSZWZQdHI8V2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50PiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQp
OworICAgIH0gICAgICAgIAorICAgIHZpcnR1YWwgfldlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVu
dCgpOworICAgIAorICAgIHZvaWQgaW5pdFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25z
dCBBdG9taWNTdHJpbmcmIHR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sIGNhbkJ1YmJsZUFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbCBjYW5jZWxhYmxlQXJnKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCgpOworICAgIFdl
YktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUpOworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKworI2VuZGlmIC8vIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudF9oCkluZGV4
OiBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1dlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudC5pZGwJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9XZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaWRsCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGV2ZW50cyB7CisKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSSwKKyAgICAg
ICAgTm9TdGF0aWNUYWJsZXMKKyAgICBdIFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudCA6IEV2
ZW50IHsKKworICAgICAgICB2b2lkIGluaXRXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoaW4g
RE9NU3RyaW5nIGV2ZW50VHlwZUFyZywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGluIGJvb2xlYW4gY2FuQnViYmxlQXJnLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiBjYW5jZWxhYmxlQXJnKTsKKyAgICB9OworCit9Cg==
</data>
<flag name="review"
          id="52383"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63938</attachid>
            <date>2010-08-09 15:29:11 -0700</date>
            <delta_ts>2010-08-09 17:04:44 -0700</delta_ts>
            <desc>Part 3: FullScreen-WebCore-NewAPI</desc>
            <filename>FullScreen-WebCore-NewAPI.patch</filename>
            <type>text/plain</type>
            <size>18321</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDc5LDYgKzE0NzksMTMgQEAgX19aTjdXZWJDb3JlOUhUTUxOYW1l
czhhdWRpb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4dmlkZW9UYWdFCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK19fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0
RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKK19fWk43V2ViQ29yZThE
b2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRF
CitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCisjZW5kaWYKKwogI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTRxdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjUw
MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERP
TU5vZGUgV0VCS0lUXwogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihO
U1N0cmluZyAqKXRhZ25hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERP
TUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVf
SU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxs
OihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwor
I2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9B
UEkKKy0gKHZvaWQpd2Via2l0Q2FuY2VsRnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZF
UlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVu
dCA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05fMV8zCkBAIC0yMjQsNiArMjI3LDkgQEAgQGludGVy
ZmFjZSBET01FbGVtZW50IDogRE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNl
bGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3Qg
KilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW46KHVu
c2lnbmVkIHNob3J0KWZsYWdzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5k
aWYKIEBlbmQKIAogQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9O
XzFfMwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsMTAgQEAKICNpbmNsdWRlICJI
VE1MTm9TY3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFj
ZSBVbmljb2RlOwpAQCAtNDA3LDYgKzQxMSwxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLCiAjZW5kaWYKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdl
YWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0
cikKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBtX2lzRnVsbFNjcmVlbigwKQor
ICAgICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigwKQorI2VuZGlmCiB7CiAgICAgbV9k
b2N1bWVudCA9IHRoaXM7CiAKQEAgLTQ4OSw2ICs0OTcsOSBAQCB2b2lkIERvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpCiAgICAgICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAgICAgICAgIG1fdGl0bGVF
bGVtZW50ID0gMDsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOworI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisjZW5kaWYK
IAogICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3YXlzIHVucmVnaXN0
ZXIgSURzLCBkbyBpdCB1cGZyb250IHRvIGF2b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzIGlu
IHRoZSBtYXAuCiAgICAgICAgIG1fZWxlbWVudHNCeUlkLmNsZWFyKCk7CkBAIC0zMTYzLDYgKzMx
NzQsMTYgQEAgdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbgogICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4pOwogICAgICAgICBmcmFt
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKICAgICB9Cisg
ICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEFTU0VSVChuKTsKKyAgICBpZiAo
bi0+Y29udGFpbnMobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgQVNTRVJU
KG4gIT0gZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0g
ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVu
dChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICB9CisjZW5kaWYK
IH0KIAogdm9pZCBEb2N1bWVudDo6dGV4dEluc2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzMyOSw2ICszMzUwLDEwIEBAIFBhc3NSZWZQdHI8
RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudCgKICNlbmRpZgogICAgICAgICBldmVudCA9IFRv
dWNoRXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAg
ICAgIGV2ZW50ID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRp
ZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBl
ID09ICJEZXZpY2VNb3Rpb25FdmVudCIpCiAgICAgICAgIGV2ZW50ID0gRGV2aWNlTW90aW9uRXZl
bnQ6OmNyZWF0ZSgpOwpAQCAtMzM4Miw2ICszNDA3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExp
c3RlbmVyVHlwZUlmTmVlZGVkKGMKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JF
RU5DSEFOR0VfTElTVEVORVIpOworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIERv
Y3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQpAQCAtNTA1
Niw1ICs1MDg1LDc1IEBAIEluc3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3IK
ICAgICByZXR1cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwog
fQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBEb2N1bWVu
dDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCogZWxl
bWVudCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5z
ZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAK
KyAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudCA9IDA7CisgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbiA9IGtleXNF
bmFibGVkOworICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpOworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Cit9CisgICAg
Cit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChwYWdlKCkgJiYgcGFnZSgpLT5zZXR0aW5ncygp
LT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVt
ZW50OworICAgIG1faXNGdWxsU2NyZWVuID0gdHJ1ZTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+
c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXROZWVkc1N0eWxlUmVj
YWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIAor
ICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
ICAgIGVsc2UgCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworfQorICAgIAordm9pZCBEb2N1bWVu
dDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwor
dm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAg
ICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0gZmFsc2U7CisgICAgLy8gbV9mdWxsU2Ny
ZWVuRWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQ7IHJlY2FsYyB0aGUgc3R5bGUgb2Yg
CisgICAgLy8gdGhlIHBhc3NlZCBpbiBlbGVtZW50IGluc3RlYWQuCisgICAgCisgICAgaWYgKGVs
ZW1lbnQpCisgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hh
bmdlKTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5
bGVDaGFuZ2UpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAKKyAgICBpZiAoZWxl
bWVudCkKKyAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgp
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
fQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2
aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzYsNiArMjc2LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91
Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSk7CisjZW5k
aWYKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlw
ZS5nZXQoKTsgfQogCkBAIC02ODksNyArNjkyLDggQEAgcHVibGljOgogICAgICAgICBUUkFOU0lU
SU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDgwMCwKICAgICAgICAgQkVGT1JFTE9B
RF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgxMDAwLAogICAgICAgICBUT1VDSF9MSVNU
RU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAsCi0gICAgICAgIEJFRk9SRVBST0NF
U1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMAorICAgICAgICBCRUZPUkVQUk9DRVNT
X0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAsCisgICAgICAgIEZVTExTQ1JFRU5DSEFO
R0VfTElTVEVORVIgICAgICAgICAgICA9IDB4ODAwMCwKICAgICB9OwogCiAgICAgYm9vbCBoYXNM
aXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyByZXR1cm4gKG1f
bGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KQEAgLTEwMTIsNiArMTAxNiwxOSBAQCBw
dWJsaWM6CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExp
c3RlbmVyKCk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZEF0dHJpYnV0ZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2lkQXR0cmlidXRlTmFtZTsgfQorICAgIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBib29sIHdlYmtpdEZ1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBt
X2lzRnVsbFNjcmVlbjsgfQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW4gJiYgbV9hcmVLZXlzRW5hYmxl
ZEluRnVsbFNjcmVlbjsgfQorICAgIEVsZW1lbnQqIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCk7IH0KKyAgICB2
b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudFdpdGhLZXlzKEVsZW1lbnQqLCBi
b29sIGtleXNFbmFibGVkKTsKKyAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAg
ICAKKyAgICB2b2lkIHdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQq
KTsKKyAgICB2b2lkIHdlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCop
OworICAgIHZvaWQgd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7
CisgICAgdm9pZCB3ZWJraXREaWRFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOwor
I2VuZGlmCiAKICAgICBib29sIHdyaXRlRGlzYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3dyaXRl
RGlzYWJsZWQ7IH0KICAgICB2b2lkIHNldFdyaXRlRGlzYWJsZWQoYm9vbCBmbGFnKSB7IG1fd3Jp
dGVEaXNhYmxlZCA9IGZsYWc7IH0KQEAgLTEyOTYsNiArMTMxMywxMiBAQCBwcml2YXRlOgogICAg
IEhhc2hTZXQ8TWVkaWFDYW5TdGFydExpc3RlbmVyKj4gbV9tZWRpYUNhblN0YXJ0TGlzdGVuZXJz
OwogCiAgICAgUXVhbGlmaWVkTmFtZSBtX2lkQXR0cmlidXRlTmFtZTsKKyAgICAKKyNpZiBFTkFC
TEUoRlVMTFNDUkVFTl9BUEkpCisgICAgYm9vbCBtX2lzRnVsbFNjcmVlbjsKKyAgICBib29sIG1f
YXJlS2V5c0VuYWJsZWRJbkZ1bGxTY3JlZW47CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fZnVsbFNj
cmVlbkVsZW1lbnQ7CisjZW5kaWYKIH07CiAKIGlubGluZSBib29sIERvY3VtZW50OjpoYXNFbGVt
ZW50V2l0aElkKEF0b21pY1N0cmluZ0ltcGwqIGlkKSBjb25zdApJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2
aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTI0NSw2ICsyNDUsMTMgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbRG9udEVudW1dIHZv
aWQgaW5pdGlhbGl6ZVdNTFBhZ2VTdGF0ZSgpOwogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEVOQUJM
RV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5fQVBJCisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdEZ1bGxTY3JlZW47CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBib29sZWFuIHdlYmtpdEZ1bGxTY3JlZW5LZXlib2FyZElucHV0QWxsb3dlZDsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEVsZW1lbnQgd2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50OworICAgICAgICB2b2lkIHdlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyNlbmRp
ZgorCiAjaWYgIWRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpF
Q1RJVkVfQwogICAgICAgICAvLyBFdmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKQEAgLTMxNyw2ICsz
MjQsNyBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0
aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3Vj
aG1vdmU7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZF
TlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGVuZDsKICAgICAgICAg
YXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVu
dGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoY2FuY2VsOworICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtLCBDb25kaXRpb25hbD1GVUxMU0NSRUVOX0FQSV0gRXZlbnRMaXN0ZW5lciBvbndlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2U7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfQ1BQKSAm
JiBMQU5HVUFHRV9DUFAKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQxLDYgKzE0NDEsMTAgQEAgdm9p
ZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKICAgICAgICAgICAgIGF0dHItPm5vcm1h
bGl6ZSgpOwogICAgIH0KIH0KKyAgICAKK3ZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKK3sKK30KIAogLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkK
IEVsZW1lbnQqIEVsZW1lbnQ6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKQEAgLTE1ODYsNSAr
MTU5MCwxMiBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAg
cmV0dXJuIE5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlm
CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncykKK3sKKyAgICBkb2N1bWVudCgp
LT53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnRXaXRoS2V5cyh0aGlzLCBmbGFncyA9
PSBBTExPV19LRVlCT0FSRF9JTlBVVCk7Cit9CisjZW5kaWYgICAgCiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9kb20vRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05NCw2ICs5NCw5IEBAIHB1YmxpYzoKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRUUklCVVRF
X0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UpOworI2VuZGlmCiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KGNvbnN0IFN0cmluZyYsIEZyYWdtZW50
U2NyaXB0aW5nUGVybWlzc2lvbiA9IEZyYWdtZW50U2NyaXB0aW5nQWxsb3dlZCk7CiAKQEAgLTI5
Miw2ICsyOTUsMTQgQEAgcHVibGljOgogI2lmIEVOQUJMRShTVkcpCiAgICAgdmlydHVhbCBib29s
IGNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoTm9kZSopIGNvbnN0OyAKICNlbmRpZgorICAgIAor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBlbnVtIHsKKyAgICAgICAgQUxMT1dfS0VZ
Qk9BUkRfSU5QVVQgPSAxCisgICAgfTsKKyAgICAKKyAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuKHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAgICAg
RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQs
IENvbnN0cnVjdGlvblR5cGUgdHlwZSkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiA2NTAwNSkKKysr
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDEx
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBp
bm5lclRleHQ7CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAm
JiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQUxM
T1dfS0VZQk9BUkRfSU5QVVQgPSAxOworICAgICAgICB2b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuKGluIHVuc2lnbmVkIHNob3J0IGZsYWdzKTsKKyNlbmRpZgorCiAjaWYgIWRlZmluZWQoTEFO
R1VBR0VfT0JKRUNUSVZFX0MpIHx8ICFMQU5HVUFHRV9PQkpFQ1RJVkVfQwogICAgICAgICAvLyBF
dmVudCBoYW5kbGVyIERPTSBhdHRyaWJ1dGVzCiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1d
IEV2ZW50TGlzdGVuZXIgb25hYm9ydDsKQEAgLTIwNSw2ICsyMTAsNyBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVu
YWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaG1vdmU7CiAgICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVd
IEV2ZW50TGlzdGVuZXIgb250b3VjaGVuZDsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxD
b25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBv
bnRvdWNoY2FuY2VsOworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBDb25kaXRpb25hbD1G
VUxMU0NSRUVOX0FQSV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2U7CiAj
ZW5kaWYKICAgICB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vRXZlbnQuY3BwCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUvZG9t
L0V2ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2MiwxMyBAQCBib29sIEV2ZW50
Ojppc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCisj
aWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorYm9vbCBFdmVudDo6aXNXZWJLaXRGdWxsU2NyZWVu
Q2hhbmdlRXZlbnQoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKyNlbmRpZgorCiBi
b29sIEV2ZW50Ojppc1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudCgpIGNvbnN0CiB7CiAgICAg
cmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUvZG9tL0V2ZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkgY29uc3Q7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvbnN0OwogICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBjb25zdDsKKyNpZiBFTkFCTEUo
RlVMTFNDUkVFTl9BUEkpCisgICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEZ1bGxTY3JlZW5D
aGFuZ2VFdmVudCgpIGNvbnN0OworI2VuZGlmCiAjaWYgRU5BQkxFKFNWRykKICAgICAgICAgdmly
dHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
ZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgJ
KHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjMsNiArMTYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwKICAgICBt
YWNybyhsb2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2Up
CisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAgICAgY2xhc3Mg
RXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRN
TEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmli
dXRlTmFtZXMuaW4JKHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1
dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIG9ud2Via2l0YW5p
bWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAogb253ZWJraXRiZWdpbmZ1bGxz
Y3JlZW4KIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgorb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlCiBv
bndlYmtpdHRyYW5zaXRpb25lbmQKIG9wdGltdW0KIHBhdHRlcm4KSW5kZXg6IFdlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0NywxMCBAQAogI2luY2x1ZGUgIm1hcmt1cC5oIgogI2lu
Y2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNlbmRpZgorCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CkBAIC0yNjIsNiAr
MjY2LDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAg
ICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgfSBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gb250b3VjaGNhbmNlbEF0dHIpIHsKICAgICAgICAgc2V0QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudG91Y2hjYW5jZWxFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5f
QVBJKQorICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ud2Via2l0ZnVsbHNjcmVlbmNo
YW5nZUF0dHIpIHsKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKKyNlbmRpZgogICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wYWdl
L0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQu
aAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTI0Niw2ICsyNDYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2NyZWVuRm9yTm9kZShOb2RlKikgeyB9CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQogCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2Ny
ZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopIHsgfQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0K
KyNlbmRpZgorICAgICAgICAKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAg
ICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVSZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25z
dCB7IHJldHVybiBJbnRSZWN0KCk7IH0KICNlbmRpZgpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lv
biA2NTAwNSkKKysrIFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEzNyw2ICsxMzcsOSBAQCBTZXR0aW5nczo6U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1f
aHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFsc2UpIC8vIFdpbGwgYmUgZGVsZXRlZCBzb29uLCBk
byBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoZmFsc2UpCiAg
ICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxlZCh0cnVlKQorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKyAgICAsIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAs
IG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZhbGlk
YXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBjb3B5KQpAQCAtMzI0LDYgKzMyNCwxMSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgc2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCA9IGZsYWc7IH0K
ICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZDsgfQogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQorICAgICAgICB2b2lkIHNldEZ1bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBt
X2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxhZzsgfQorICAgICAgICBib29sIGZ1bGxTY3JlZW5F
bmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1fZnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyNlbmRp
ZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fbWVt
b3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQo
KSBjb25zdCB7IHJldHVybiBtX21lbW9yeUluZm9FbmFibGVkOyB9CiAKQEAgLTQxOCw2ICs0MjMs
OSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgbV9odG1sNVRyZWVCdWlsZGVy
RW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxldGVkIHNvb24sIGRvIG5vdCB1c2UuCiAgICAgICAg
IGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1f
ZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisg
ICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuQVBJRW5hYmxlZCA6IDE7CisjZW5kaWYKICAgICAgICAg
Ym9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAxOwogICAgICAgICBib29sIG1faW50ZXJhY3RpdmVG
b3JtVmFsaWRhdGlvbjogMTsKICAgICAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63939</attachid>
            <date>2010-08-09 15:29:43 -0700</date>
            <delta_ts>2010-10-14 01:47:31 -0700</delta_ts>
            <desc>Part 4: FullScreen-WebCore-CSS</desc>
            <filename>FullScreen-WebCore-CSS.patch</filename>
            <type>text/plain</type>
            <size>6413</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9jc3MvQ1NT
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQsNiArMjQ0LDEzIEBAIFBzZXVkb0lk
IENTU1NlbGVjdG9yOjpwc2V1ZG9JZChQc2V1ZG9UeXAKICAgICAgICAgcmV0dXJuIE5PUFNFVURP
OwogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuOgorICAgICAgICByZXR1cm4gRlVMTF9TQ1JFRU47CisgICAgY2FzZSBQc2V1ZG9G
dWxsU2NyZWVuRG9jdW1lbnQ6CisgICAgICAgIHJldHVybiBGVUxMX1NDUkVFTl9ET0NVTUVOVDsK
KyNlbmRpZgorICAgICAgICAgICAgCiAgICAgY2FzZSBQc2V1ZG9JbnB1dExpc3RCdXR0b246CiAj
aWYgRU5BQkxFKERBVEFMSVNUKQogICAgICAgICByZXR1cm4gSU5QVVRfTElTVF9CVVRUT047CkBA
IC00MjIsNiArNDI5LDEwIEBAIHN0YXRpYyBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NT
ZWwKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgZmlyc3RQYWdlLCAoImZp
cnN0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBsZWZ0UGFnZSwg
KCJsZWZ0IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCByaWdodFBh
Z2UsICgicmlnaHQiKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIERFRklORV9T
VEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBmdWxsU2NyZWVuLCAoIi13ZWJraXQtZnVsbC1zY3Jl
ZW4iKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIGZ1bGxTY3JlZW5E
b2N1bWVudCwgKCItd2Via2l0LWZ1bGwtc2NyZWVuLWRvY3VtZW50IikpOworI2VuZGlmCiAKICAg
ICBzdGF0aWMgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5
cGU+KiBuYW1lVG9Qc2V1ZG9UeXBlID0gMDsKICAgICBpZiAoIW5hbWVUb1BzZXVkb1R5cGUpIHsK
QEAgLTUzMyw2ICs1NDQsMTAgQEAgc3RhdGljIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENT
U1NlbAogICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZmlyc3RQYWdlLmltcGwoKSwgQ1NT
U2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZSk7CiAgICAgICAgIG5hbWVUb1BzZXVkb1R5cGUtPnNl
dChsZWZ0UGFnZS5pbXBsKCksIENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZSk7CiAgICAgICAg
IG5hbWVUb1BzZXVkb1R5cGUtPnNldChyaWdodFBhZ2UuaW1wbCgpLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvUmlnaHRQYWdlKTsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIG5hbWVU
b1BzZXVkb1R5cGUtPnNldChmdWxsU2NyZWVuLmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1
bGxTY3JlZW4pOworICAgICAgICBuYW1lVG9Qc2V1ZG9UeXBlLT5zZXQoZnVsbFNjcmVlbkRvY3Vt
ZW50LmltcGwoKSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW5Eb2N1bWVudCk7CisjZW5k
aWYKICAgICB9CiAgICAgcmV0dXJuIG5hbWVUb1BzZXVkb1R5cGU7CiB9CkBAIC02NjIsNiArNjc3
LDEwIEBAIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY28KICAgICBjYXNl
IFBzZXVkb1NpbmdsZUJ1dHRvbjoKICAgICBjYXNlIFBzZXVkb05vQnV0dG9uOgogICAgIGNhc2Ug
UHNldWRvTm90UGFyc2VkOgorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBjYXNlIFBz
ZXVkb0Z1bGxTY3JlZW46CisgICAgY2FzZSBQc2V1ZG9GdWxsU2NyZWVuRG9jdW1lbnQ6CisjZW5k
aWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQ
c2V1ZG9MZWZ0UGFnZToKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJD
b3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcsNiArMjE3LDEwIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIFBzZXVkb0xlZnRQYWdlLAogICAgICAg
ICAgICAgUHNldWRvUmlnaHRQYWdlLAogICAgICAgICAgICAgUHNldWRvRmlyc3RQYWdlLAorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgICAgIFBzZXVkb0Z1bGxTY3JlZW4sCisg
ICAgICAgICAgICBQc2V1ZG9GdWxsU2NyZWVuRG9jdW1lbnQsCisjZW5kaWYKICAgICAgICAgfTsK
IAogICAgICAgICBlbnVtIE1hcmdpbkJveFR5cGUgewpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAJKHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTU1Myw2ICs1NTMsMTQgQEAgc3RhdGljIHZvaWQgbG9hZEZ1
bGxEZWZhdWx0U3R5bGUoKQogICAgIFN0cmluZyBxdWlya3NSdWxlcyA9IFN0cmluZyhxdWlya3NV
c2VyQWdlbnRTdHlsZVNoZWV0LCBzaXplb2YocXVpcmtzVXNlckFnZW50U3R5bGVTaGVldCkpICsg
UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYVF1aXJrc1N0eWxlU2hlZXQoKTsKICAg
ICBDU1NTdHlsZVNoZWV0KiBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NSdWxlcyk7
CiAgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwg
c2NyZWVuRXZhbCgpKTsKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLy8g
RnVsbC1zY3JlZW4gcnVsZXMuCisgICAgU3RyaW5nIGZ1bGxzY3JlZW5SdWxlcyA9IFN0cmluZyhm
dWxsc2NyZWVuVXNlckFnZW50U3R5bGVTaGVldCwgc2l6ZW9mKGZ1bGxzY3JlZW5Vc2VyQWdlbnRT
dHlsZVNoZWV0KSkgKyBSZW5kZXJUaGVtZTo6ZGVmYXVsdFRoZW1lKCktPmV4dHJhRGVmYXVsdFN0
eWxlU2hlZXQoKTsKKyAgICBDU1NTdHlsZVNoZWV0KiBmdWxsc2NyZWVuU2hlZXQgPSBwYXJzZVVB
U2hlZXQoZnVsbHNjcmVlblJ1bGVzKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGZ1bGxzY3JlZW5TaGVldCwgc2NyZWVuRXZhbCgpKTsKKyNl
bmRpZgogfQogCiBzdGF0aWMgdm9pZCBsb2FkU2ltcGxlRGVmYXVsdFN0eWxlKCkKQEAgLTI2Mjks
NiArMjYzNywyNiBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6CiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgfQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Z1bGxTY3JlZW46CisgICAgICAgICAgICAgICAgLy8gV2hp
bGUgYSBEb2N1bWVudCBpcyBpbiB0aGUgZnVsbHNjcmVlbiBzdGF0ZSwgYW5kIHRoZSBkb2N1bWVu
dCdzIGN1cnJlbnQgZnVsbHNjcmVlbiAKKyAgICAgICAgICAgICAgICAvLyBlbGVtZW50IGlzIGFu
IGVsZW1lbnQgaW4gdGhlIGRvY3VtZW50LCB0aGUgJ2Z1bGwtc2NyZWVuJyBwc2V1ZG9jbGFzcyBh
cHBsaWVzIHRvIAorICAgICAgICAgICAgICAgIC8vIHRoYXQgZWxlbWVudC4gQWxzbywgYW4gPGlm
cmFtZT4sIDxvYmplY3Q+IG9yIDxlbWJlZD4gZWxlbWVudCB3aG9zZSBjaGlsZCBicm93c2luZyAK
KyAgICAgICAgICAgICAgICAvLyBjb250ZXh0J3MgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3Jl
ZW4gc3RhdGUgaGFzIHRoZSAnZnVsbC1zY3JlZW4nIHBzZXVkb2NsYXNzIGFwcGxpZWQuCisgICAg
ICAgICAgICAgICAgaWYgKCFlLT5kb2N1bWVudCgpLT53ZWJraXRGdWxsU2NyZWVuKCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoZSAhPSBl
LT5kb2N1bWVudCgpLT53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRnVsbFNjcmVlbkRvY3VtZW50Ogor
ICAgICAgICAgICAgICAgIC8vIFdoaWxlIGEgRG9jdW1lbnQgaXMgaW4gdGhlIGZ1bGxzY3JlZW4g
c3RhdGUsIHRoZSAnZnVsbC1zY3JlZW4tZG9jdW1lbnQnIHBzZXVkb2NsYXNzIGFwcGxpZXMgCisg
ICAgICAgICAgICAgICAgLy8gdG8gdGhlIHJvb3QgZWxlbWVudCBvZiB0aGF0IERvY3VtZW50Lgor
ICAgICAgICAgICAgICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+d2Via2l0RnVsbFNjcmVlbigpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKGUg
IT0gZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyNlbmRpZgogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9mdWxsc2NyZWVuLmNzcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy9mdWxsc2NyZWVuLmNzcwkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Z1bGxzY3JlZW4u
Y3NzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis6LXdlYmtpdC1mdWxsLXNjcmVlbiB7
CisgICAgcG9zaXRpb246Zml4ZWQ7CisgICAgdG9wOjA7CisgICAgbGVmdDowOworICAgIHJpZ2h0
OjA7CisgICAgYm90dG9tOjA7Cit9CisKKzpyb290OmZ1bGwtc2NyZWVuLWRvY3VtZW50Om5vdCg6
ZnVsbC1zY3JlZW4pIHsKKyAgICBvdmVyZmxvdzpoaWRkZW47Cit9CisKK3ZpZGVvOi13ZWJraXQt
ZnVsbC1zY3JlZW4geworICAgIHdpZHRoOiAxMDAlOworICAgIGhlaWdodDogMTAwJQorICAgIGlt
YWdlLWZpdDogZmlsbDsKK30KKworaW1nOi13ZWJraXQtZnVsbC1zY3JlZW4geworICAgIHdpZHRo
OiAxMDAlOworICAgIGhlaWdodDogMTAwJTsKKyAgICBpbWFnZS1maXQ6IGZpbGw7Cit9CisKK3Zp
ZGVvOi13ZWJraXQtZnVsbC1wYWdlLW1lZGlhOi13ZWJraXQtZnVsbC1zY3JlZW46Oi13ZWJraXQt
bWVkaWEtY29udHJvbHMtcGFuZWwgeworICAgIGJvdHRvbTogMHB4OworfQpJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5oCShyZXZpc2lvbiA2
NTAwNSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgZW51bSBQc2V1ZG9JZCB7CiAgICAgTUVU
RVJfSE9SSVpPTlRBTF9CQVIsIE1FVEVSX0hPUklaT05UQUxfT1BUSU1VTSwgTUVURVJfSE9SSVpP
TlRBTF9TVUJPUFRJTUFMLCBNRVRFUl9IT1JJWk9OVEFMX0VWRU5fTEVTU19HT09ELAogICAgIE1F
VEVSX1ZFUlRJQ0FMX0JBUiwgTUVURVJfVkVSVElDQUxfT1BUSU1VTSwgTUVURVJfVkVSVElDQUxf
U1VCT1BUSU1BTCwgTUVURVJfVkVSVElDQUxfRVZFTl9MRVNTX0dPT0QsIAogICAgIEFGVEVSX0xB
U1RfSU5URVJOQUxfUFNFVURPSUQsCisgICAgRlVMTF9TQ1JFRU4sIEZVTExfU0NSRUVOX0RPQ1VN
RU5ULAogICAgIEZJUlNUX1BVQkxJQ19QU0VVRE9JRCA9IEZJUlNUX0xJTkUsCiAgICAgRklSU1Rf
SU5URVJOQUxfUFNFVURPSUQgPSBGSUxFX1VQTE9BRF9CVVRUT04sCiAgICAgUFVCTElDX1BTRVVE
T0lEX01BU0sgPSAoKDEgPDwgRklSU1RfSU5URVJOQUxfUFNFVURPSUQpIC0gMSkgJiB+KCgxIDw8
IEZJUlNUX1BVQkxJQ19QU0VVRE9JRCkgLSAxKQo=
</data>
<flag name="review"
          id="52385"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="53553"
          type_id="3"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63941</attachid>
            <date>2010-08-09 15:31:12 -0700</date>
            <delta_ts>2010-08-16 13:53:56 -0700</delta_ts>
            <desc>Part 5: FullScreen-WebCore-MediaElements</desc>
            <filename>FullScreen-WebCore-MediaElements.patch</filename>
            <type>text/plain</type>
            <size>1548</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAJKHJldmlz
aW9uIDY1MDA1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxlbWVudHMuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyTWVkaWEu
aCIKICNpbmNsdWRlICJSZW5kZXJTbGlkZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgor
I2luY2x1ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNzc2LDcg
Kzc3NywyMiBAQCBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FCiB2b2lk
IE1lZGlhQ29udHJvbEZ1bGxzY3JlZW5CdXR0b25FbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Y2xpY2tFdmVudCkgewotICAgICAgICBtZWRpYUVsZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICBBU1NFUlQoZG9jdW1lbnQoKS0+
cGFnZSgpKTsKKyAgICAgICAgCisgICAgICAgIC8vIE9ubHkgdXNlIHRoZSBuZXcgZnVsbCBzY3Jl
ZW4gQVBJIGlmIHRoZSBmdWxsU2NyZWVuRW5hYmxlZCBzZXR0aW5nIGhhcyAKKyAgICAgICAgLy8g
YmVlbiBleHBsaWNpdGx5IGVuYWJsZWQuICBPdGhlcndpc2UsIHVzZSB0aGUgb2xkIGZ1bGxzY3Jl
ZW4gQVBJLiAgVGhpcworICAgICAgICAvLyBhbGxvd3MgYXBwcyB3aGljaCBlbWJlZCBhIFdlYlZp
ZXcgdG8gcmV0YWluIHRoZSBleGlzdGluZyBmdWxsIHNjcmVlbgorICAgICAgICAvLyB2aWRlbyBp
bXBsZW1lbnRhdGlvbiB3aXRob3V0IHJlcXVpcmluZyB0aGVtIHRvIGltcGxlbWVudCB0aGVpciBv
d24gZnVsbCAKKyAgICAgICAgLy8gc2NyZWVuIGJlaGF2aW9yLgorICAgICAgICBpZiAoZG9jdW1l
bnQoKS0+cGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKSB7CisgICAgICAg
ICAgICBpZiAoZG9jdW1lbnQoKS0+d2Via2l0RnVsbFNjcmVlbigpICYmIGRvY3VtZW50KCktPndl
YmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpID09IG1lZGlhRWxlbWVudCgpKQorICAgICAg
ICAgICAgICAgIGRvY3VtZW50KCktPndlYmtpdENhbmNlbEZ1bGxTY3JlZW4oKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtZWRpYUVsZW1lbnQoKS0+d2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW4oMCk7CisgICAgICAgIH0gZWxzZQorI2VuZGlmCisgICAgICAgICAgICBtZWRpYUVs
ZW1lbnQoKS0+ZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFu
ZGxlZCgpOwogICAgIH0KICAgICBIVE1MSW5wdXRFbGVtZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVy
KGV2ZW50KTsK
</data>
<flag name="review"
          id="52387"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63943</attachid>
            <date>2010-08-09 15:31:58 -0700</date>
            <delta_ts>2010-08-26 11:53:21 -0700</delta_ts>
            <desc>Part 6: FullScreen-WebKit</desc>
            <filename>FullScreen-WebKit.patch</filename>
            <type>text/plain</type>
            <size>12708</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMTAtMDctMjcgIEplciBOb2JsZSAgPGplci5ub2Js
ZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBnbyBmdWxsc2NyZWVu
LgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisKKyAgICAgICAgQWRkZWQgY2hyb21l
IGNsaWVudCBvdmVycmlkZXMgd2hpY2ggc3VwcG9ydCBlbnRlcmluZyBhbmQgZXhpdGluZyBmdWxs
IHNjcmVlbi4gIEEgbmV3IHByZWZlcmVuY2UgaGFzCisgICAgICAgIGJlZW4gYWRkZWQgKHNldEZ1
bGxTY3JlZW5FbmFibGVkOikgdG8gY29udHJvbCBhdCBydW50aW1lIHdoZXRoZXIgZnVsbCBzY3Jl
ZW4gc3VwcG9ydCBpcyBlbmFibGVkIAorICAgICAgICAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiAg
QWRkZWQgYSBuZXcgV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIGNhbGxiYWNrIG9iamVjdCB3aGlj
aCBub3RpZmllcyBXZWJDb3JlCisgICAgICAgIHdoZW4gdGhlIGNocm9tZSBoYXMgc3RhcnRlZC9m
aW5pc2hlZCBpdHMgZnVsbCBzY3JlZW4gYW5pbWF0aW9uLgorCisgICAgICAgICogQ29uZmlndXJh
dGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWc6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50Lm1tOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxzY3JlZW5Gb3JF
bGVtZW50KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxl
bWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmV4aXRGdWxsc2NyZWVuRm9yRWxlbWVu
dCk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBpbml0V2l0aEVsZW1lbnQ6
XSk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciB3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuXSk6CisgICAgICAgICgtW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciB3ZWJraXRE
aWRFbnRlckZ1bGxTY3JlZW5dKToKKyAgICAgICAgKC1bV2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVy
IHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbl0pOgorICAgICAgICAoLVtXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5dKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oOgorICAgICAgICAqIFdlYlZpZXcvV2ViUHJlZmVyZW5j
ZXMuaDoKKyAgICAgICAgKiBXZWJWaWV3L1dlYlByZWZlcmVuY2VzLm1tOgorICAgICAgICAoK1tX
ZWJQcmVmZXJlbmNlcyBpbml0aWFsaXplXSk6CisgICAgICAgICgtW1dlYlByZWZlcmVuY2VzIHNl
dEZ1bGxTY3JlZW5FbmFibGVkOl0pOgorICAgICAgICAoLVtXZWJQcmVmZXJlbmNlcyBmdWxsU2Ny
ZWVuRW5hYmxlZF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaDoK
KyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX3ByZWZl
cmVuY2VzQ2hhbmdlZE5vdGlmaWNhdGlvbjpdKToKKwogMjAxMC0wOC0wNCAgTU9SSVRBIEhhamlt
ZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBUb255IENoYW5n
LgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZp
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVz
LnhjY29uZmlnCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYktpdC9tYWMvQ29uZmlndXJhdGlvbnMv
RmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAg
RU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5BQkxFX0ZJTFRFUlM7CiAKIEVOQUJMRV9GSUxFX1dS
SVRFUiA9IDsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOX0FQSSA9
IEVOQUJMRV9GVUxMU0NSRUVOX0FQSTsKIEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9M
T0NBVElPTjsKIAogRU5BQkxFX0lDT05EQVRBQkFTRSA9ICQoRU5BQkxFX0lDT05EQVRBQkFTRV8k
KFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTIwLDQgKzEyMSw0IEBAIEVOQUJMRV9YSFRNTE1Q
ID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVf
WFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFC
TEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5B
QkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
ICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1Qp
ICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkg
JChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxU
RVJTKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxF
X0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0la
RVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChF
TkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRF
Ul9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJ
Q0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9T
QU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9T
VkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JK
Q19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpF
Q1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VU
UykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAk
KEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJF
X0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQo
RU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNT
QUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJB
U0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNF
X09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RP
UkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJ
TEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkp
ICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lN
QUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQ
RUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVO
QUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVf
V0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAk
KEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAk
KEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NW
R19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9S
RUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9X
RUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9X
T1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7
CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmgJKHJl
dmlzaW9uIDY1MDA1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwxMiBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOwogICAgIHZp
cnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoV2ViQ29yZTo6Tm9kZSopOwogI2VuZGlm
CisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNvcmU6OkVsZW1lbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7
CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChXZWJDb3JlOjpFbGVt
ZW50Kik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJt
aXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopOwog
ICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0Rm9yRnJh
bWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2NhdGlvbiopIHsgfQpJbmRleDogV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDY1
MDA1KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHdv
cmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsMTYgQEAgQGludGVyZmFjZSBXZWJHZW9sb2NhdGlv
blBvbGljeUxpc3RlbmVyIAogLSAoaWQpaW5pdFdpdGhHZW9sb2NhdGlvbjooR2VvbG9jYXRpb24q
KWdlb2xvY2F0aW9uOwogQGVuZAogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorQGludGVy
ZmFjZSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgOiBOU09iamVjdCA8V2ViS2l0RnVsbFNjcmVl
bkxpc3RlbmVyPgoreworICAgIFJlZlB0cjxFbGVtZW50PiBfZWxlbWVudDsKK30KKworLSAoaWQp
aW5pdFdpdGhFbGVtZW50OihFbGVtZW50KillbGVtZW50OworQGVuZAorI2VuZGlmCisKIFdlYkNo
cm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcgKndlYlZpZXcpIAogICAgIDogbV93
ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC04MTUsNiArODI1LDI5IEBAIHZvaWQgV2ViQ2hyb21lQ2xp
ZW50OjpleGl0RnVsbHNjcmVlbkZvck4KIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVt
ZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgcmV0dXJuIENhbGxVSURlbGVnYXRl
UmV0dXJuaW5nQm9vbGVhbihmYWxzZSwgbV93ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpzdXBw
b3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OiksIGtpdChjb25zdF9jYXN0PFdlYkNvcmU6OkVsZW1l
bnQqPihlbGVtZW50KSkpOworfQorCit2b2lkIFdlYkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIFdlYktpdEZ1bGxTY3JlZW5M
aXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbGxvY10gaW5p
dFdpdGhFbGVtZW50OmVsZW1lbnRdOworICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgQHNl
bGVjdG9yKHdlYlZpZXc6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudDpsaXN0ZW5lcjopLCBraXQo
ZWxlbWVudCksIGxpc3RlbmVyKTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07Cit9CisKK3ZvaWQg
V2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVu
dCkKK3sKKyAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJLaXRG
dWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxlbWVudDplbGVtZW50XTsKKyAgICBD
YWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmV4aXRGdWxsU2NyZWVu
Rm9yRWxlbWVudDpsaXN0ZW5lcjopLCBraXQoZWxlbWVudCksIGxpc3RlbmVyKTsKKyAgICBbbGlz
dGVuZXIgcmVsZWFzZV07Cit9CisKKyNlbmRpZgorCiB2b2lkIFdlYkNocm9tZUNsaWVudDo6cmVx
dWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZyYW1lKiBmcmFtZSwgR2VvbG9jYXRp
b24qIGdlb2xvY2F0aW9uKQogewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKQEAg
LTkxOSwzICs5NTIsNDEgQEAgLSAodm9pZClkZW55CiB9CiAKIEBlbmQKKworI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKK0BpbXBsZW1lbnRhdGlvbiBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIK
Ky0gKGlkKWluaXRXaXRoRWxlbWVudDooRWxlbWVudCopZWxlbWVudAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIF9lbGVt
ZW50ID0gZWxlbWVudDsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAodm9pZCl3ZWJraXRXaWxs
RW50ZXJGdWxsU2NyZWVuCit7CisgICAgaWYgKF9lbGVtZW50KQorICAgICAgICBfZWxlbWVudC0+
ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoX2VsZW1lbnQu
Z2V0KCkpOworfQorCistICh2b2lkKXdlYmtpdERpZEVudGVyRnVsbFNjcmVlbgoreworICAgIGlm
IChfZWxlbWVudCkKKyAgICAgICAgX2VsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdERpZEVudGVy
RnVsbFNjcmVlbkZvckVsZW1lbnQoX2VsZW1lbnQuZ2V0KCkpOworfQorCistICh2b2lkKXdlYmtp
dFdpbGxFeGl0RnVsbFNjcmVlbgoreworICAgIGlmIChfZWxlbWVudCkKKyAgICAgICAgX2VsZW1l
bnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoX2VsZW1l
bnQuZ2V0KCkpOworfQorCistICh2b2lkKXdlYmtpdERpZEV4aXRGdWxsU2NyZWVuCit7CisgICAg
aWYgKF9lbGVtZW50KQorICAgICAgICBfZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0RGlkRXhp
dEZ1bGxTY3JlZW5Gb3JFbGVtZW50KF9lbGVtZW50LmdldCgpKTsKK30KKworQGVuZAorI2VuZGlm
CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5o
CShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5
c1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQAogI2RlZmluZSBXZWJL
aXRIVE1MNVRyZWVCdWlsZGVyRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRIVE1MNVRyZWVC
dWlsZGVyRW5hYmxlZCIgLy8gVGVtcG9yYXJ5LCBkbyBub3QgdXNlLgogI2RlZmluZSBXZWJLaXRQ
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0UGFnaW5hdGVE
dXJpbmdMYXlvdXRFbmFibGVkIgogI2RlZmluZSBXZWJLaXRETlNQcmVmZXRjaGluZ0VuYWJsZWRQ
cmVmZXJlbmNlS2V5IEAiV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkIgorI2RlZmluZSBXZWJL
aXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXkgQCJXZWJLaXRGdWxsU2NyZWVuRW5hYmxl
ZCIKICNkZWZpbmUgV2ViS2l0TWVtb3J5SW5mb0VuYWJsZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0
TWVtb3J5SW5mb0VuYWJsZWQiCiAKIC8vIFRoZXNlIGFyZSBwcml2YXRlIGJvdGggYmVjYXVzZSBj
YWxsZXJzIHNob3VsZCBiZSB1c2luZyB0aGUgY292ZXIgbWV0aG9kcyBhbmQgYmVjYXVzZSB0aGUK
SW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCShyZXZpc2lvbiA2NTAwNSkKKysr
IFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MzcsNiArNDM3LDI4IEBAIGNhY2hpbmcgYmVoYXZpb3IuCiAqLwogLSAoV2ViQ2FjaGVNb2RlbClj
YWNoZU1vZGVsOwogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorLyohCisgQG1ldGhvZCBz
ZXRGdWxsU2NyZWVuRW5hYmxlZDoKKyAKKyBAYWJzdHJhY3QKKyAKKyBAcGFyYW0gCisgCisgQGRp
c2N1c3Npb24KKyAqLworLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9PTClmbGFnOwor
CisvKiEKKyBAbWV0aG9kIGZ1bGxTY3JlZW5FbmFibGVkOgorIAorIEBhYnN0cmFjdAorIAorIEBy
ZXN1bHQKKyAqLworLSAoQk9PTClmdWxsU2NyZWVuRW5hYmxlZDsKKyNlbmRpZgorCiBAZW5kCiAK
ICN1bmRlZiBXZWJOU1VJbnRlZ2VyCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVy
ZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlByZWZlcmVuY2Vz
Lm1tCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJQcmVmZXJlbmNl
cy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw5IEBAICsgKHZvaWQpaW5pdGlhbGl6
ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEhUTUw1UGFy
c2VyRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoQm9v
bDpOT10sICAgV2ViS2l0SFRNTDVUcmVlQnVpbGRlckVuYWJsZWRQcmVmZXJlbmNlS2V5LAogICAg
ICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdEROU1ByZWZldGNoaW5n
RW5hYmxlZFByZWZlcmVuY2VLZXksCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAg
ICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdEZ1bGxTY3JlZW5FbmFibGVk
UHJlZmVyZW5jZUtleSwKKyNlbmRpZgogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6
Tk9dLCAgIFdlYktpdE1lbW9yeUluZm9FbmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05T
TnVtYmVyIG51bWJlcldpdGhMb25nTG9uZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBwbGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAg
IFtOU051bWJlciBudW1iZXJXaXRoTG9uZ0xvbmc6V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0
b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktpdEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVv
dGEsCkBAIC03NzcsNiArNzgwLDE4IEBAIC0gKFdlYkNhY2hlTW9kZWwpY2FjaGVNb2RlbAogICAg
IHJldHVybiBbc2VsZiBfaW50ZWdlclZhbHVlRm9yS2V5OldlYktpdENhY2hlTW9kZWxQcmVmZXJl
bmNlS2V5XTsKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKy0gKHZvaWQpc2V0RnVs
bFNjcmVlbkVuYWJsZWQ6KEJPT0wpZmxhZworeworICAgIFtzZWxmIF9zZXRCb29sVmFsdWU6Zmxh
ZyBmb3JLZXk6V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKK30KKworLSAo
Qk9PTClmdWxsU2NyZWVuRW5hYmxlZAoreworICAgIHJldHVybiBbc2VsZiBfYm9vbFZhbHVlRm9y
S2V5OldlYktpdEZ1bGxTY3JlZW5FbmFibGVkUHJlZmVyZW5jZUtleV07Cit9CisjZW5kaWYKKwog
QGVuZAogCiBAaW1wbGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYlByaXZhdGUpCkluZGV4
OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gNjUw
MDUpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVUlEZWxlZ2F0ZVByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTUsNiArOTUsMTUgQEAgZW51bSB7IAogLSAodm9pZClkZW55OwogQGVuZAog
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorQHByb3RvY29sIFdlYktpdEZ1bGxTY3JlZW5M
aXN0ZW5lcjxOU09iamVjdD4KKy0gKHZvaWQpd2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbjsKKy0g
KHZvaWQpd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuOworLSAodm9pZCl3ZWJraXRXaWxsRXhpdEZ1
bGxTY3JlZW47CistICh2b2lkKXdlYmtpdERpZEV4aXRGdWxsU2NyZWVuOworQGVuZAorI2VuZGlm
CisKIEBpbnRlcmZhY2UgTlNPYmplY3QgKFdlYlVJRGVsZWdhdGVQcml2YXRlKQogCiAtICh2b2lk
KXdlYlZpZXc6KFdlYlZpZXcgKil3ZWJWaWV3IGFkZE1lc3NhZ2VUb0NvbnNvbGU6KE5TRGljdGlv
bmFyeSAqKW1lc3NhZ2U7CkBAIC0xNjQsNCArMTczLDEwIEBAIEBpbnRlcmZhY2UgTlNPYmplY3Qg
KFdlYlVJRGVsZWdhdGVQcml2YXQKICovCiAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5k
ZXIgcHJpbnRGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKKy0gKEJPT0wpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBzdXBwb3J0c0Z1bGxTY3Jl
ZW5Gb3JFbGVtZW50OihET01FbGVtZW50ICopZWxlbWVudDsKKy0gKHZvaWQpd2ViVmlldzooV2Vi
VmlldyAqKXNlbmRlciBlbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50OihET01FbGVtZW50ICopZWxl
bWVudDsKKy0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBleGl0RnVsbFNjcmVlbkZv
ckVsZW1lbnQ6KERPTUVsZW1lbnQgKillbGVtZW50OworI2VuZGlmCisKIEBlbmQKSW5kZXg6IFdl
YktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiA2NTAwNSkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDQwLDYgKzE0NDAsOSBAQCAtICh2b2lkKV9w
cmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246CiAgICAgc2V0dGluZ3MtPnNldEhUTUw1UGFy
c2VyRW5hYmxlZChbcHJlZmVyZW5jZXMgaHRtbDVQYXJzZXJFbmFibGVkXSk7CiAgICAgc2V0dGlu
Z3MtPnNldEhUTUw1VHJlZUJ1aWxkZXJFbmFibGVkX0RPX05PVF9VU0UoW3ByZWZlcmVuY2VzIGh0
bWw1VHJlZUJ1aWxkZXJFbmFibGVkXSk7CiAgICAgc2V0dGluZ3MtPnNldFBhZ2luYXRlRHVyaW5n
TGF5b3V0RW5hYmxlZChbcHJlZmVyZW5jZXMgcGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkXSk7
CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIHNldHRpbmdzLT5zZXRGdWxsU2NyZWVu
RW5hYmxlZChbcHJlZmVyZW5jZXMgZnVsbFNjcmVlbkVuYWJsZWRdKTsKKyNlbmRpZgogICAgIHNl
dHRpbmdzLT5zZXRNZW1vcnlJbmZvRW5hYmxlZChbcHJlZmVyZW5jZXMgbWVtb3J5SW5mb0VuYWJs
ZWRdKTsKIAogICAgIC8vIEFwcGxpY2F0aW9uIENhY2hlIFByZWZlcmVuY2VzIGFyZSBzdG9yZWQg
b24gdGhlIGdsb2JhbCBjYWNoZSBzdG9yYWdlIG1hbmFnZXIsIG5vdCBpbiBTZXR0aW5ncy4K
</data>
<flag name="review"
          id="52389"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63949</attachid>
            <date>2010-08-09 16:27:18 -0700</date>
            <delta_ts>2010-08-20 14:58:43 -0700</delta_ts>
            <desc>Part 7: FullScreen-LayoutTests</desc>
            <filename>FullScreen-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>23967</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY1MDEyKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTAtMDgtMDkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEg
cGFnZSB0byBnbyBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzA5OQorCisg
ICAgICAgIE5ldyB0ZXN0cyBmb3IgdGhlIG5ldyBmdWxsIHNjcmVlbiBBUEk6CisKKyAgICAgICAg
ZnVsbC1zY3JlZW4tYXBpLmh0bWw6IHRlc3RzIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIG5ldyBm
dWxsIHNjcmVlbiBhcGlzLgorICAgICAgICBmdWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWw6IHRlc3Rz
IHRoYXQgY2xpZW50cyBjYW4gcmVxdWVzdCB0aGUgYnJvd3NlciBlbnRlciBmdWxsIHNjcmVlbiBt
b2RlIHN1Y2Nlc3NmdWxseS4KKyAgICAgICAgZnVsbC1zY3JlZW4tY3NzLmh0bWw6IHRlc3RzIHRo
YXQgdGhlIG5ldyBmdWxsIHNjcmVlbiBwc2V1ZG8gY2xhc3NlcyBhcmUgYXBwbGllZCBvbmNlIGZ1
bGwgc2NyZWVuIG1vZGUgaXMgZW50ZXJlZC4KKyAgICAgICAgZnVsbC1zY3JlZW4tcmVtb3ZlLmh0
bWw6IHRlc3RzIHRoYXQgdGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxsIHNjcmVlbiBlbGVtZW50
IGlzIGNoYW5nZWQgd2hlbiB0aGF0IGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00gdHJl
ZS4KKyAgICAgICAgZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWw6IHRlc3RzIHRoYXQg
dGhlIGRvY3VtZW50J3MgY3VycmVudCBmdWxsIHNjcmVlbiBlbGVtZW50IGlzIGNoYW5nZWQgYW4g
YW5jZXN0b3Igb2YgdGhhdCBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgRE9NIHRyZWUuCisg
ICAgICAgIGZ1bGwtc2NyZWVuLXR3aWNlLmh0bWw6IHRlc3RzIHRoYXQgZW50ZXJpbmcgZnVsbCBz
Y3JlZW4gbW9kZSBvbiB0d28gZGlmZmVyZW50IGVsZW1lbnRzIGluIGEgcm93IGRvZXMgbm90IGZh
aWwuCisgICAgICAgIAorICAgICAgICBUZXN0cyB0aGF0IHdlcmUgY2hhbmdlZDoKKyAgICAgICAg
CisgICAgICAgIGRvbUxpc3RFbnVtZXJhdGlvbi5odG1sOiBUaGlzIHRlc3QgcmV0dXJucyBhIHNw
ZWNpZmljIGNvdW50IG9mIHByb3BlcnRpZXMgb24gSFRNTCBlbGVtZW50czsgYWZ0ZXIgY29uc3Vs
dGF0aW9uCisgICAgICAgIHdpdGggU2FtIFdlaW5pZyAodGhlIG9yaWdpbmFsIHRlc3QgYXV0aG9y
KSwgaXQgd2FzIGRlY2lkZWQgdGhhdCB0aGlzIHBhcnQgb2YgdGhlIHRlc3Qgd291bGQgYmUgdmVy
eSBkaWZmaWN1bHQgdG8gCisgICAgICAgIG1ha2UgcGxhdGZvcm0gc3BlY2lmaWMsIGFuZCB0aGF0
IG5vdGhpbmcgc2lnbmlmaWNhbnQgd291bGQgYmUgbG9zdCBpZiB0aGUgcHJvcGVydHkgY291bnQg
c2VjdGlvbnMgd2VyZSByZW1vdmVkLgorCisgICAgICAgICogZmFzdC9kb20vZG9tTGlzdEVudW1l
cmF0aW9uLWV4cGVjdGVkLnR4dDogUmVtb3ZlZCB0aGUgaXRlcmF0aW9uIGNvdW50IHBhcnQgb2Yg
dGhpcyB0ZXN0LgorICAgICAgICAqIGZhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVy
YXRpb24uanM6ICIiCisgICAgICAgICogZnVsbHNjcmVlbjogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Z1bGxzY3JlZW46IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1j
c3MuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcmVtb3ZlLWFuY2VzdG9yLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92
ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi10d2ljZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXR3aWNlLmh0bWw6IEFkZGVkLgorCiAyMDEwLTA4LTA5ICBFcmlj
IFNlaWRlbCAgPGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJh
cnRoLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVy
YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NTAwNSkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMy
LDcgKzMyLDYgQEAgUEFTUyByZXN1bHRBcnJheVsyXS5pIGlzICcyJwogUEFTUyByZXN1bHRBcnJh
eVsyXS5pdGVtIGlzIG5hbWVkTm9kZU1hcC5pdGVtKDIpCiAKIFtvYmplY3QgSFRNTEZvcm1FbGVt
ZW50XQotUEFTUyByZXN1bHRBcnJheS5sZW5ndGggaXMgMTM2CiBQQVNTIHJlc3VsdEFycmF5WzBd
LmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBdLml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdCiBQQVNTIHJlc3VsdEFycmF5WzFdLmkgaXMgJzEnCkBA
IC00MSw3ICs0MCw2IEBAIFBBU1MgcmVzdWx0QXJyYXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0
QXJyYXlbMl0uaXRlbSBpcyBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0Jylb
Ml0KIAogW29iamVjdCBIVE1MU2VsZWN0RWxlbWVudF0KLVBBU1MgcmVzdWx0QXJyYXkubGVuZ3Ro
IGlzIDE0NAogUEFTUyByZXN1bHRBcnJheVswXS5pIGlzICcwJwogUEFTUyByZXN1bHRBcnJheVsw
XS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24nKVswXQogUEFT
UyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vc2Ny
aXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvZG9tTGlzdEVudW1lcmF0aW9uLmpzCShyZXZpc2lvbiA2
NTAwNSkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9kb21MaXN0RW51bWVy
YXRpb24uanMJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNiBAQCBzaG91bGRCZSgicmVz
dWx0QXJyYXlbMl0uaXRlbSIsICJuYW1lZE5vCiAvLyBIVE1MRm9ybUVsZW1lbnQKIHZhciBodG1s
Rm9ybUVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZm9ybScpWzBdOwog
cmVzdWx0QXJyYXkgPSBpdGVyYXRlTGlzdChodG1sRm9ybUVsZW1lbnQpOwotc2hvdWxkQmUoInJl
c3VsdEFycmF5Lmxlbmd0aCIsICIxMzYiKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVswXS5pIiwg
IicwJyIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLml0ZW0iLCAiZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdIik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMV0u
aSIsICInMSciKTsKQEAgLTE0MSw3ICsxNDAsNiBAQCBzaG91bGRCZSgicmVzdWx0QXJyYXlbMl0u
aXRlbSIsICJkb2N1bWVuCiAvLyBIVE1MU2VsZWN0RWxlbWVudAogdmFyIGh0bWxTZWxlY3RFbGVt
ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdOwogcmVzdWx0
QXJyYXkgPSBpdGVyYXRlTGlzdChodG1sU2VsZWN0RWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0
QXJyYXkubGVuZ3RoIiwgIjE0NCIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAn
Iik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnb3B0aW9uJylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwg
IicxJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tYXBpLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBp
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorRVhQRUNURUQgKGRv
Y3VtZW50LndlYmtpdEZ1bGxTY3JlZW4gPT0gJ2ZhbHNlJykgT0sKK0VYUEVDVEVEIChkb2N1bWVu
dC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuICE9ICd1bmRlZmluZWQnKSBPSworRVhQRUNURUQgKGRv
Y3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnbnVsbCcpIE9LCitFWFBF
Q1RFRCAoZG9jdW1lbnQub253ZWJraXRmdWxsc2NyZWVuY2hhbmdlID09ICdudWxsJykgT0sKK0VY
UEVDVEVEIChzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuICE9ICd1bmRlZmluZWQnKSBPSwor
RVhQRUNURUQgKHNwYW4ub253ZWJraXRmdWxsc2NyZWVuY2hhbmdlID09ICdudWxsJykgT0sKK0VY
UEVDVEVEIChpZnJhbWUud2Via2l0QWxsb3dGdWxsU2NyZWVuID09ICd0cnVlJykgT0sKK0VYUEVD
VEVEIChkb2N1bWVudC5jcmVhdGVFdmVudCgnV2ViS2l0RnVsbFNjcmVlbkNoYW5nZScpOyAhPSAn
bnVsbCcpIE9LCitFTkQgT0YgVEVTVAorIApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1h
cGkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGJvZHk+CisgICAgPHNjcmlw
dCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPHNwYW4+PC9zcGFuPgorPHNj
cmlwdD4KKyAgICBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVsw
XTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEZ1bGxTY3JlZW4iLCBmYWxzZSk7CisJ
dGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuIiwgdW5kZWZpbmVk
LCAiIT0iKTsKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVu
RWxlbWVudCIsIG51bGwpOworCXRlc3RFeHBlY3RlZCgiZG9jdW1lbnQub253ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlIiwgbnVsbCkKKwl0ZXN0RXhwZWN0ZWQoInNwYW4ud2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4iLCB1bmRlZmluZWQsICIhPSIpOworCXRlc3RFeHBlY3RlZCgic3Bhbi5vbndlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UiLCBudWxsKQkKKwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LmNyZWF0ZUV2
ZW50KCdXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlJyk7IiwgbnVsbCwgIiE9IikKKwllbmRUZXN0KCk7
Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWNzcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKK0VYUEVDVEVE
IChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSAhPSAncmdiKDAsIDI1NSwgMCknKSBPSwor
RVhQRUNURUQgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9y
JykgIT0gJ3JnYigyNTUsIDAsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5kZWZhdWx0Vmll
dy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnY29sb3InKSAhPSAncmdiKDAsIDAsIDI1NSknKSBPSworRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNj
cmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEVsZW1lbnRdJykgT0sKK0VYUEVDVEVEIChkb2N1
bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwpLmdldFByb3BlcnR5
VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAncmdiKDAsIDI1NSwgMCknKSBPSworRVhQRUNU
RUQgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0g
J3JnYigyNTUsIDAsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnY29sb3InKSA9PSAncmdiKDAsIDAsIDI1NSknKSBPSworRVZFTlQod2Via2l0ZnVsbHNj
cmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFWFBFQ1RFRCAoZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgPT0gJ3JnYigwLCAyNTUsIDApJykgT0sKK0VYUEVDVEVE
IChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpICE9ICdy
Z2IoMjU1LCAwLCAwKScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2NvbG9yJykgPT0gJ3JnYigwLCAwLCAyNTUpJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLWNzcy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NDkgQEAKKzxib2R5PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0
PgorPHN0eWxlPgorICAgIDotd2Via2l0LWZ1bGwtc2NyZWVuIHsgYmFja2dyb3VuZDogbGltZTsg
fQorICAgIDotd2Via2l0LWZ1bGwtc2NyZWVuLWRvY3VtZW50IHsgY29sb3I6IGJsdWU7IH0KKyAg
ICA6cm9vdDotd2Via2l0LWZ1bGwtc2NyZWVuLWRvY3VtZW50Om5vdCg6LXdlYmtpdC1mdWxsLXNj
cmVlbikgeyBiYWNrZ3JvdW5kOiByZWQ7IH0KKzwvc3R5bGU+Cis8c3Bhbj48L3NwYW4+Cis8c2Ny
aXB0PgorICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90
IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Via2l0
UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKQorICAgICAgICBlbmRUZXN0KCk7CisgICAg
ZWxzZSB7CisgICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3JlZW5DaGFu
Z2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjYWxsYmFj
aykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICAgICAgfTsKKyAgICAgICAg
d2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1bGxzY3Jl
ZW5DaGFuZ2VkKTsKKworICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdzcGFuJylbMF07CisgICAgCisgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQu
ZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVl
KCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAicmdiKDAsIDI1NSwgMCkiLCAiIT0iKTsKKyAgICAgICAg
dGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1j
b2xvcicpIiwgInJnYigyNTUsIDAsIDApIiwgIiE9Iik7CisgICAgICAgIHRlc3RFeHBlY3RlZCgi
ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2NvbG9yJykiLCAicmdiKDAsIDAsIDI1NSki
LCAiIT0iKTsKKyAgICAKKyAgICAgICAgdmFyIHNwYW5FbnRlcmVkRnVsbFNjcmVlbiA9IGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIHNwYW4pOworICAgICAgICAgICAgdGVzdEV4cGVjdGVk
KCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwpLmdldFBy
b3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSIsICJyZ2IoMCwgMjU1LCAwKSIpOworICAg
ICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFj
a2dyb3VuZC1jb2xvcicpIiwgInJnYigyNTUsIDAsIDApIik7CisgICAgICAgICAgICB0ZXN0RXhw
ZWN0ZWQoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9j
dW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xvcicpIiwgInJnYigwLCAw
LCAyNTUpIik7CisgICAgICAgIAorICAgICAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudEVudGVy
ZWRGdWxsU2NyZWVuOworICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LndlYmtp
dFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIH07CisgICAgCisgICAgICAgIHZhciBkb2N1
bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1l
bnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShzcGFuLCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAicmdiKDAsIDI1NSwgMCkiKTsKKyAgICAgICAgICAg
IHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQt
Y29sb3InKSIsICJyZ2IoMjU1LCAwLCAwKSIsICIhPSIpOworICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIsICJyZ2IoMCwgMCwg
MjU1KSIpOworICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9OworICAgIAorICAgICAg
ICBjYWxsYmFjayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgc3Bhbi53ZWJraXRS
ZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3Zl
LWFuY2VzdG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitFVkVO
VCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQo
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi1yZW1vdmUtYW5jZXN0b3IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3IuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBA
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxk
aXY+PHNwYW4+PC9zcGFuPjwvZGl2PgorPHNjcmlwdD4KKyAgICAvLyBCYWlsIG91dCBlYXJseSBp
ZiB0aGUgZnVsbCBzY3JlZW4gQVBJIGlzIG5vdCBlbmFibGVkIG9yIGlzIG1pc3Npbmc6CisgICAg
aWYgKEVsZW1lbnQucHJvdG90eXBlLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuID09IHVuZGVmaW5l
ZCkgCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNhbGxiYWNr
OworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNr
KGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworCisgICAgICAgIHZhciBz
cGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICAgICAg
dmFyIGRpdiA9IHNwYW4ucGFyZW50Tm9kZTsKKworICAgICAgICB2YXIgc3BhbkVudGVyZWRGdWxs
U2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gZG9jdW1l
bnRFbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQu
d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Iiwgc3Bhbik7CisgICAgICAgICAgICBkb2N1
bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRpdik7CisgICAgICAgIH07CisKKyAgICAgICAgdmFyIGRv
Y3VtZW50RW50ZXJlZEZ1bGxTY3JlZW4gPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAg
Y2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwor
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9OworCisgICAgICAgIGNhbGxiYWNrID0g
c3BhbkVudGVyZWRGdWxsU2NyZWVuOworICAgICAgICBzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2Ny
ZWVuKCk7CisgICAgfQorPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVs
bHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDYgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9j
dW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2JqZWN0IEhUTUxFbGVt
ZW50XScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3Vt
ZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MSHRtbEVs
ZW1lbnRdJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcmVtb3ZlLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKzxib2R5Pgor
PHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPGRpdj48c3Bhbj48
L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxs
IHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVu
dC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKQorICAgICAg
ICBlbmRUZXN0KCk7CisgICAgZWxzZSB7CisgICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAg
dmFyIGZ1bGxzY3JlZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmIChjYWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAg
ICAgICAgfTsKKyAgICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVl
bmNoYW5nZScsIGZ1bGxzY3JlZW5DaGFuZ2VkKTsKKyAgICAKKyAgICAgICAgdmFyIHNwYW4gPSBk
b2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdOworICAgIAorICAgICAgICB2
YXIgc3BhbkVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAg
IGNhbGxiYWNrID0gZG9jdW1lbnRFbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Iiwgc3Bhbik7
CisgICAgICAgICAgICBzcGFuLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3Bhbik7CisgICAgICAg
IH07CisgICAgCisgICAgICAgIHZhciBkb2N1bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgICAgIGNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50IiwgZG9j
dW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAg
fTsKKyAgICAKKyAgICAgICAgY2FsbGJhY2sgPSBzcGFuRW50ZXJlZEZ1bGxTY3JlZW47CisgICAg
ICAgIHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICB9Cis8L3NjcmlwdD4KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVl
c3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVz
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorRVZFTlQod2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSkgVEVTVChkb2N1bWVudC53ZWJraXRGdWxsU2NyZWVuPT10cnVlKSBP
SworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJl
cXVlc3QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGJvZHk+Cis8c2NyaXB0
IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIC8vIEJh
aWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMg
bWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3Jl
ZW4gPT0gdW5kZWZpbmVkKQorICAgICAgICBlbmRUZXN0KCk7CisgICAgZWxzZSB7CisgICAgICAg
IHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
JywgImRvY3VtZW50LndlYmtpdEZ1bGxTY3JlZW49PXRydWUiKTsKKyAgICAgICAgZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgfQorPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2Ny
ZWVuL2Z1bGwtc2NyZWVuLXRlc3QuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10ZXN0LmpzCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDIyMCBAQAorCit2YXIgY29uc29sZSA9IG51bGw7Cit2YXIgcHJpbnRGdWxsVGVzdERl
dGFpbHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlvbmFseSBzd2l0Y2hlZCBvZiBieSB0ZXN0IHdo
b3NlIHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4gKHNlZSBkaXNhYmxlRnVsbFRlc3REZXRhaWxz
UHJpbnRpbmcoKSkKK3ZhciBGYWlsZWQgPSBmYWxzZTsKKworbG9nQ29uc29sZSgpOworCitpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIu
ZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsK
K30KKworZnVuY3Rpb24gZGlzYWJsZUZ1bGxUZXN0RGV0YWlsc1ByaW50aW5nKCkKK3sKKyAgICBw
cmludEZ1bGxUZXN0RGV0YWlscyA9IGZhbHNlOworfQorCitmdW5jdGlvbiBsb2dDb25zb2xlKCkK
K3sKKyAgICBpZiAoIWNvbnNvbGUgJiYgZG9jdW1lbnQuYm9keSkgeworICAgICAgICBjb25zb2xl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAgIGRvY3VtZW50LmJvZHku
YXBwZW5kQ2hpbGQoY29uc29sZSk7CisgICAgfQorICAgIHJldHVybiBjb25zb2xlOworfQorCitm
dW5jdGlvbiB0ZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHRlc3QodGVzdEZ1bmNT
dHJpbmcsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0KHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkK
K3sKKyAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJURVNUKCIgKyB0ZXN0RnVu
Y1N0cmluZyArICIpIik7CisgICAgaWYgKGVuZGl0KQorICAgICAgICBlbmRUZXN0KCk7ICAKK30K
KworZnVuY3Rpb24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCwgY29tcGFy
aXNvbikKK3sKKyAgICB0cnkgeworICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBldmFsKHRlc3RGdW5j
U3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBjb25zb2xlV3JpdGUoZXgpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGlmIChjb21wYXJpc29uID09PSB1bmRl
ZmluZWQpCisgICAgICAgIGNvbXBhcmlzb24gPSAnPT0nOworCisgICAgdmFyIHN1Y2Nlc3MgPSBm
YWxzZTsKKyAgICBzd2l0Y2ggKGNvbXBhcmlzb24pCisgICAgeworICAgICAgICBjYXNlICc8Jzog
ICBzdWNjZXNzID0gb2JzZXJ2ZWQgPCAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc8
PSc6IHN1Y2Nlc3MgPSBvYnNlcnZlZCA8PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2Ug
Jz4nOiAgIHN1Y2Nlc3MgPSBvYnNlcnZlZCA+ICBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNh
c2UgJz49Jzogc3VjY2VzcyA9IG9ic2VydmVkID49IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAg
Y2FzZSAnIT0nOiAgc3VjY2VzcyA9IG9ic2VydmVkICE9IGV4cGVjdGVkOyBicmVhazsKKyAgICAg
ICAgY2FzZSAnPT0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQgPT0gZXhwZWN0ZWQ7IGJyZWFrOworICAg
IH0KKyAgICAKKyAgICByZXBvcnRFeHBlY3RlZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29t
cGFyaXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVkKQorfQorCit2YXIgdGVzdE51bWJlciA9IDA7CisK
K2Z1bmN0aW9uIHJlcG9ydEV4cGVjdGVkKHN1Y2Nlc3MsIHRlc3RGdW5jU3RyaW5nLCBjb21wYXJp
c29uLCBleHBlY3RlZCwgb2JzZXJ2ZWQpCit7CisgICAgdGVzdE51bWJlcisrOworCisgICAgdmFy
IG1zZyA9ICJUZXN0ICIgKyB0ZXN0TnVtYmVyOworCisgICAgaWYgKHByaW50RnVsbFRlc3REZXRh
aWxzIHx8ICFzdWNjZXNzKQorICAgICAgICBtc2cgPSAiRVhQRUNURUQgKDxlbT4iICsgdGVzdEZ1
bmNTdHJpbmcgKyAiIDwvZW0+IiArIGNvbXBhcmlzb24gKyAiICc8ZW0+IiArIGV4cGVjdGVkICsg
IjwvZW0+JykiOworCisgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICBtc2cgKz0gICIsIE9CU0VS
VkVEICc8ZW0+IiArIG9ic2VydmVkICsgIjwvZW0+JyI7CisKKyAgICBsb2dSZXN1bHQoc3VjY2Vz
cywgbXNnKTsKK30KKworZnVuY3Rpb24gcnVuU2lsZW50bHkodGVzdEZ1bmNTdHJpbmcpCit7Cisg
ICAgaWYgKHByaW50RnVsbFRlc3REZXRhaWxzKQorICAgICAgICBjb25zb2xlV3JpdGUoIlJVTigi
ICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdEZ1
bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGlmICghcHJpbnRGdWxsVGVz
dERldGFpbHMpIHsKKyAgICAgICAgICAgIC8vIE5vIGRldGFpbHMgd2VyZSBwcmludGVkIHByZXZp
b3VzLCBnaXZlIHNvbWUgbm93LgorICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGhlbHBmdWwg
aW4gY2FzZSBvZiBlcnJvci4KKyAgICAgICAgICAgIGxvZ1Jlc3VsdChGYWlsZWQsICJFcnJvciBp
biBSVU4oIiArIHRlc3RGdW5jU3RyaW5nICsgIik6Iik7CisgICAgICAgIH0KKyAgICAgICAgbG9n
UmVzdWx0KEZhaWxlZCwgIjxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPiIrZXgrIjwvc3Bhbj4iKTsK
KyAgICB9Cit9CisKK2Z1bmN0aW9uIHJ1bih0ZXN0RnVuY1N0cmluZykKK3sKKyAgICBjb25zb2xl
V3JpdGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAg
IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNv
bGVXcml0ZShleCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZWxl
bWVudCwgZXZlbnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVudChlbGVtZW50
LCBldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVu
dChlbGVtZW50LCBldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVu
dENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsg
ZXZlbnROYW1lICsgIikiKTsKKworICAgICAgICBpZiAoZnVuYykKKyAgICAgICAgICAgIGZ1bmMo
ZXZlbnQpOworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgZW5kVGVz
dCgpOyAgICAKKyAgICB9CisKKyAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
LCBfZXZlbnRDYWxsYmFjayk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQo
ZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnRB
bmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUpOworfQorCitm
dW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGVsZW1lbnQsIGV2ZW50TmFtZSkKK3sKKyAgICB3
YWl0Rm9yRXZlbnRBbmRUZXN0KGVsZW1lbnQsIGV2ZW50TmFtZSwgImZhbHNlIiwgdHJ1ZSk7Cit9
CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0
RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQp
CisgICAgeworICAgICAgICBsb2dSZXN1bHQoZXZhbCh0ZXN0RnVuY1N0cmluZyksICJFVkVOVCgi
ICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgICAg
ICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAg
ICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cit9
CisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9uU3RyaW5nKQor
eworICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdFN0cmluZyk7CisgICAgfSBjYXRjaCAoZXgp
IHsgCisgICAgICAgIGxvZ1Jlc3VsdChleC5jb2RlID09IGV2YWwoZXhjZXB0aW9uU3RyaW5nKSwg
IlRFU1QoIiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJpbmcrIikiKTsK
KyAgICB9Cit9CisKK3ZhciB0ZXN0RW5kZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gZW5kVGVzdCgp
Cit7CisgICAgY29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOworICAgIHRlc3RFbmRlZCA9IHRy
dWU7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCit9CisKK2Z1bmN0aW9uIGVuZFRlc3RM
YXRlcigpCit7CisgICAgc2V0VGltZW91dChlbmRUZXN0LCAyNTApOworfQorCitmdW5jdGlvbiBm
YWlsVGVzdEluKG1zKQoreworICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBj
b25zb2xlV3JpdGUoIkZBSUw6IGRpZCBub3QgZW5kIGZhc3QgZW5vdWdoIik7CisgICAgICAgIGVu
ZFRlc3QoKTsKKyAgICB9LCBtcyk7Cit9CisKK2Z1bmN0aW9uIGZhaWxUZXN0KHRleHQpCit7Cisg
ICAgbG9nUmVzdWx0KEZhaWxlZCwgdGV4dCk7CisgICAgZW5kVGVzdCgpOworfQorCisKK2Z1bmN0
aW9uIGxvZ1Jlc3VsdChzdWNjZXNzLCB0ZXh0KQoreworICAgIGlmIChzdWNjZXNzKQorICAgICAg
ICBjb25zb2xlV3JpdGUodGV4dCArICIgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bh
bj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSh0ZXh0ICsgIiA8c3BhbiBzdHls
ZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQorCitmdW5jdGlvbiBjb25zb2xlV3JpdGUo
dGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAgICByZXR1cm47CisgICAgbG9nQ29u
c29sZSgpLmlubmVySFRNTCArPSB0ZXh0ICsgIjxicj4iOworfQorCitmdW5jdGlvbiByZWxhdGl2
ZVVSTCh1cmwpCit7CisgICAgcmV0dXJuIHVybC5zdWJzdHIodXJsLmluZGV4T2YoJy9tZWRpYS8n
KSs3KTsKK30KKworCitmdW5jdGlvbiBpc0luVGltZVJhbmdlcyhyYW5nZXMsIHRpbWUpCit7Cisg
ICAgdmFyIGkgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCByYW5nZXMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgaWYgKHRpbWUgPj0gcmFuZ2VzLnN0YXJ0KGkpICYmIHRpbWUgPD0gcmFuZ2VzLmVu
ZChpKSkgeworICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXR3aWNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxs
LXNjcmVlbi10d2ljZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAor
RVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEVsZW1lbnRdJykgT0sKK0VW
RU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2JqZWN0IEhUTUxIdG1sRWxlbWVudF0nKSBPSwor
RU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4v
ZnVsbC1zY3JlZW4tdHdpY2UuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdHdpY2UuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz0iZnVs
bC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3Bhbj48L3NwYW4+Cis8c2NyaXB0PgorICAg
IC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRoZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQg
b3IgaXMgbWlzc2luZzoKKyAgICBpZiAoRWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1
bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSAKKyAgICAgICAgZW5kVGVzdCgpOworICAgIGVsc2Ugewor
ICAgICAgICB2YXIgY2FsbGJhY2s7CisgICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1
bmN0aW9uKGV2ZW50KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAg
ICAgICAgICAgICAgY2FsbGJhY2soZXZlbnQpCisgICAgICAgIH07CisgICAgICAgIHdhaXRGb3JF
dmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdl
ZCk7CisgICAgCisgICAgICAgIHZhciBzcGFuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ3NwYW4nKVswXTsKKworICAgICAgICB2YXIgc3BhbkVudGVyZWRGdWxsU2NyZWVuID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCIsIHNwYW4pOworICAgICAgICAgICAgY2FsbGJhY2sgPSBkb2N1
bWVudEVudGVyZWRGdWxsU2NyZWVuOworICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVt
ZW50LndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgICAgIH07CisgICAgCisgICAgICAg
IHZhciBkb2N1bWVudEVudGVyZWRGdWxsU2NyZWVuID0gZnVuY3Rpb24oKSB7CisgICAgICAgICAg
ICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIs
IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisgICAgICAgICAgICBjYWxsYmFjayA9IG51bGw7
CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH07CisKKyAgICAgICAgY2FsbGJhY2sg
PSBzcGFuRW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgIHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxT
Y3JlZW4oKTsKKyAgICB9Cis8L3NjcmlwdD4K
</data>
<flag name="review"
          id="52400"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>63955</attachid>
            <date>2010-08-09 17:04:44 -0700</date>
            <delta_ts>2010-08-16 18:25:10 -0700</delta_ts>
            <desc>Part 3: FullScreen-WebCore-NewAPI</desc>
            <filename>FullScreen-WebCore-NewAPI.patch</filename>
            <type>text/plain</type>
            <size>18244</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDc5LDYgKzE0NzksMTMgQEAgX19aTjdXZWJDb3JlOUhUTUxOYW1l
czhhdWRpb1RhZ0UKIF9fWk43V2ViQ29yZTlIVE1MTmFtZXM4dmlkZW9UYWdFCiAjZW5kaWYKIAor
I2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK19fWk43V2ViQ29yZThEb2N1bWVudDMzd2Via2l0
RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKK19fWk43V2ViQ29yZThE
b2N1bWVudDM0d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRF
CitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1l
bnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlOERvY3VtZW50MzV3ZWJraXRXaWxsRW50ZXJG
dWxsU2NyZWVuRm9yRWxlbWVudEVQTlNfN0VsZW1lbnRFCisjZW5kaWYKKwogI2lmIEVOQUJMRShP
RkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCiBfX1pON1dlYkNvcmUyM0FwcGxpY2F0aW9uQ2FjaGVT
dG9yYWdlMTRxdW90YUZvck9yaWdpbkVQS05TXzE0U2VjdXJpdHlPcmlnaW5FUngKIF9fWk43V2Vi
Q29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UxNHNldE1heGltdW1TaXplRXgKSW5kZXg6IFdl
YkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjUw
MDUpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERP
TU5vZGUgV0VCS0lUXwogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihO
U1N0cmluZyAqKXRhZ25hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERP
TUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVf
SU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxs
OihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwor
I2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9B
UEkKKy0gKHZvaWQpd2Via2l0Q2FuY2VsRnVsbFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZF
UlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAKIEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVu
dCA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05fMV8zCkBAIC0yMjQsNiArMjI3LDkgQEAgQGludGVy
ZmFjZSBET01FbGVtZW50IDogRE9NTm9kZSBXRUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9W
RVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNl
bGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3Qg
KilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VC
S0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkKKy0gKHZvaWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW46KHVu
c2lnbmVkIHNob3J0KWZsYWdzIEFWQUlMQUJMRV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5k
aWYKIEBlbmQKIAogQGludGVyZmFjZSBET01FbnRpdHkgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9O
XzFfMwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsMTAgQEAKICNpbmNsdWRlICJI
VE1MTm9TY3JpcHRFbGVtZW50LmgiCiAjZW5kaWYKIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQ
SSkKKyNpbmNsdWRlICJXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogdXNpbmcgbmFtZXNwYWNlIFdURjsKIHVzaW5nIG5hbWVzcGFj
ZSBVbmljb2RlOwpAQCAtNDA3LDYgKzQxMSwxMCBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUq
IGZyYW1lLCBjb25zdCBLCiAjZW5kaWYKICAgICAsIG1fd2Vha1JlZmVyZW5jZShEb2N1bWVudFdl
YWtSZWZlcmVuY2U6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1faWRBdHRyaWJ1dGVOYW1lKGlkQXR0
cikKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBtX2lzRnVsbFNjcmVlbigwKQor
ICAgICwgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbigwKQorI2VuZGlmCiB7CiAgICAgbV9k
b2N1bWVudCA9IHRoaXM7CiAKQEAgLTQ4OSw2ICs0OTcsOSBAQCB2b2lkIERvY3VtZW50OjpyZW1v
dmVkTGFzdFJlZigpCiAgICAgICAgIG1fYWN0aXZlTm9kZSA9IDA7CiAgICAgICAgIG1fdGl0bGVF
bGVtZW50ID0gMDsKICAgICAgICAgbV9kb2N1bWVudEVsZW1lbnQgPSAwOworI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisjZW5kaWYK
IAogICAgICAgICAvLyByZW1vdmVBbGxDaGlsZHJlbigpIGRvZXNuJ3QgYWx3YXlzIHVucmVnaXN0
ZXIgSURzLCBkbyBpdCB1cGZyb250IHRvIGF2b2lkIGhhdmluZyBzdGFsZSByZWZlcmVuY2VzIGlu
IHRoZSBtYXAuCiAgICAgICAgIG1fZWxlbWVudHNCeUlkLmNsZWFyKCk7CkBAIC0zMTYzLDYgKzMx
NzQsMTYgQEAgdm9pZCBEb2N1bWVudDo6bm9kZVdpbGxCZVJlbW92ZWQoTm9kZSogbgogICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCktPm5vZGVXaWxsQmVSZW1vdmVkKG4pOwogICAgICAgICBmcmFt
ZS0+ZHJhZ0NhcmV0Q29udHJvbGxlcigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKICAgICB9Cisg
ICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIEFTU0VSVChuKTsKKyAgICBpZiAo
bi0+Y29udGFpbnMobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgQVNTRVJU
KG4gIT0gZG9jdW1lbnRFbGVtZW50KCkpOworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0g
ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRz
U3R5bGVSZWNhbGMoKTsKKyAgICAgICAgbV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVu
dChXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICB9CisjZW5kaWYK
IH0KIAogdm9pZCBEb2N1bWVudDo6dGV4dEluc2VydGVkKE5vZGUqIHRleHQsIHVuc2lnbmVkIG9m
ZnNldCwgdW5zaWduZWQgbGVuZ3RoKQpAQCAtMzMyOSw2ICszMzUwLDEwIEBAIFBhc3NSZWZQdHI8
RXZlbnQ+IERvY3VtZW50OjpjcmVhdGVFdmVudCgKICNlbmRpZgogICAgICAgICBldmVudCA9IFRv
dWNoRXZlbnQ6OmNyZWF0ZSgpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIpCisgICAg
ICAgIGV2ZW50ID0gV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50OjpjcmVhdGUoKTsKKyNlbmRp
ZgogI2lmIEVOQUJMRShERVZJQ0VfT1JJRU5UQVRJT04pCiAgICAgZWxzZSBpZiAoZXZlbnRUeXBl
ID09ICJEZXZpY2VNb3Rpb25FdmVudCIpCiAgICAgICAgIGV2ZW50ID0gRGV2aWNlTW90aW9uRXZl
bnQ6OmNyZWF0ZSgpOwpAQCAtMzM4Miw2ICszNDA3LDEwIEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExp
c3RlbmVyVHlwZUlmTmVlZGVkKGMKICAgICAgICAgICAgIHBhZ2UtPmNocm9tZSgpLT5jbGllbnQo
KS0+bmVlZFRvdWNoRXZlbnRzKHRydWUpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLndlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2VFdmVudCkKKyAgICAgICAgYWRkTGlzdGVuZXJUeXBlKEZVTExTQ1JF
RU5DSEFOR0VfTElTVEVORVIpOworI2VuZGlmCiB9CiAKIENTU1N0eWxlRGVjbGFyYXRpb24qIERv
Y3VtZW50OjpnZXRPdmVycmlkZVN0eWxlKEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmKQpAQCAtNTA1
Niw1ICs1MDg1LDc1IEBAIEluc3BlY3RvckNvbnRyb2xsZXIqIERvY3VtZW50OjppbnNwZWN0b3IK
ICAgICByZXR1cm4gcGFnZSgpID8gcGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCkgOiAwOwog
fQogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBEb2N1bWVu
dDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50V2l0aEtleXMoRWxlbWVudCogZWxl
bWVudCwgYm9vbCBrZXlzRW5hYmxlZCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5z
ZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoIWVsZW1lbnQpCisgICAgICAgIGVsZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAK
KyAgICBpZiAoIXBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgbV9mdWxsU2Ny
ZWVuRWxlbWVudCA9IDA7CisgICAgbV9hcmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbiA9IGtleXNF
bmFibGVkOworICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5lbnRlckZ1bGxTY3JlZW5G
b3JFbGVtZW50KGVsZW1lbnQpOworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCkKK3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhbV9mdWxsU2NyZWVuRWxlbWVudCkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIHBhZ2UoKS0+Y2hyb21lKCktPmNsaWVudCgpLT5leGl0
RnVsbFNjcmVlbkZvckVsZW1lbnQobV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKSk7Cit9CisgICAg
Cit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVt
ZW50KiBlbGVtZW50KQoreworICAgIEFTU0VSVChwYWdlKCkgJiYgcGFnZSgpLT5zZXR0aW5ncygp
LT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVt
ZW50OworICAgIG1faXNGdWxsU2NyZWVuID0gdHJ1ZTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+
c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFuZ2UpOworICAgIGlmIChtX2Z1bGxTY3Jl
ZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50LT5zZXROZWVkc1N0eWxlUmVj
YWxjKEZ1bGxTdHlsZUNoYW5nZSk7CisgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIAor
ICAgIGlmIChtX2Z1bGxTY3JlZW5FbGVtZW50KQorICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
ICAgIGVsc2UgCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50KFdlYktp
dEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOworfQorICAgIAordm9pZCBEb2N1bWVu
dDo6d2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikKK3sKK30KKwor
dm9pZCBEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
KikKK3sKK30KKwordm9pZCBEb2N1bWVudDo6d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAg
ICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuID0gZmFsc2U7CisgICAgLy8gbV9mdWxsU2Ny
ZWVuRWxlbWVudCBoYXMgYWxyZWFkeSBiZWVuIGNsZWFyZWQ7IHJlY2FsYyB0aGUgc3R5bGUgb2Yg
CisgICAgLy8gdGhlIHBhc3NlZCBpbiBlbGVtZW50IGluc3RlYWQuCisgICAgCisgICAgaWYgKGVs
ZW1lbnQpCisgICAgICAgIGVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0eWxlQ2hh
bmdlKTsKKyAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5
bGVDaGFuZ2UpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAKKyAgICBpZiAoZWxl
bWVudCkKKyAgICAgICAgZWxlbWVudC0+ZGlzcGF0Y2hFdmVudChXZWJLaXRGdWxsU2NyZWVuQ2hh
bmdlRXZlbnQ6OmNyZWF0ZSgpKTsKKyAgICBlbHNlCisgICAgICAgIGRvY3VtZW50RWxlbWVudCgp
LT5kaXNwYXRjaEV2ZW50KFdlYktpdEZ1bGxTY3JlZW5DaGFuZ2VFdmVudDo6Y3JlYXRlKCkpOwor
fQorICAgIAorI2VuZGlmCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkocmV2
aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNzYsNiArMjc2LDkgQEAgcHVibGljOgogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElT
VEVORVIodG91Y2hlbmQpOwogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIodG91
Y2hjYW5jZWwpOwogI2VuZGlmCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSk7CisjZW5k
aWYKIAogICAgIERvY3VtZW50VHlwZSogZG9jdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG9jVHlw
ZS5nZXQoKTsgfQogCkBAIC02ODksNyArNjkyLDggQEAgcHVibGljOgogICAgICAgICBUUkFOU0lU
SU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDgwMCwKICAgICAgICAgQkVGT1JFTE9B
RF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgxMDAwLAogICAgICAgICBUT1VDSF9MSVNU
RU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAsCi0gICAgICAgIEJFRk9SRVBST0NF
U1NfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4NDAwMAorICAgICAgICBCRUZPUkVQUk9DRVNT
X0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAsCisgICAgICAgIEZVTExTQ1JFRU5DSEFO
R0VfTElTVEVORVIgICAgICAgICAgICA9IDB4ODAwMCwKICAgICB9OwogCiAgICAgYm9vbCBoYXNM
aXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29uc3QgeyByZXR1cm4gKG1f
bGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KQEAgLTEwMTIsNiArMTAxNiwxOSBAQCBw
dWJsaWM6CiAgICAgTWVkaWFDYW5TdGFydExpc3RlbmVyKiB0YWtlQW55TWVkaWFDYW5TdGFydExp
c3RlbmVyKCk7CiAKICAgICBjb25zdCBRdWFsaWZpZWROYW1lJiBpZEF0dHJpYnV0ZU5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2lkQXR0cmlidXRlTmFtZTsgfQorICAgIAorI2lmIEVOQUJMRShGVUxM
U0NSRUVOX0FQSSkKKyAgICBib29sIHdlYmtpdEZ1bGxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBt
X2lzRnVsbFNjcmVlbjsgfQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbktleWJvYXJkSW5wdXRB
bGxvd2VkKCkgY29uc3QgeyByZXR1cm4gbV9pc0Z1bGxTY3JlZW4gJiYgbV9hcmVLZXlzRW5hYmxl
ZEluRnVsbFNjcmVlbjsgfQorICAgIEVsZW1lbnQqIHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCgpIGNvbnN0IHsgcmV0dXJuIG1fZnVsbFNjcmVlbkVsZW1lbnQuZ2V0KCk7IH0KKyAgICB2
b2lkIHdlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiwgYm9vbCBrZXlz
RW5hYmxlZCk7CisgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgCisgICAg
dm9pZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50Kik7CisgICAg
dm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2
b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCopOworICAgIHZv
aWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsKKyNlbmRpZgog
CiAgICAgYm9vbCB3cml0ZURpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV93cml0ZURpc2FibGVk
OyB9CiAgICAgdm9pZCBzZXRXcml0ZURpc2FibGVkKGJvb2wgZmxhZykgeyBtX3dyaXRlRGlzYWJs
ZWQgPSBmbGFnOyB9CkBAIC0xMjk2LDYgKzEzMTMsMTIgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0
PE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVkaWFDYW5TdGFydExpc3RlbmVyczsKIAogICAg
IFF1YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5hbWU7CisgICAgCisjaWYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQorICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW47CisgICAgYm9vbCBtX2FyZUtleXNF
bmFibGVkSW5GdWxsU2NyZWVuOworICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxTY3JlZW5FbGVt
ZW50OworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxlbWVudFdpdGhJ
ZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDY1
MDA1KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
NiArMjQ1LDEzIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0RvbnRFbnVtXSB2b2lkIGluaXRp
YWxpemVXTUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVfRlVMTFND
UkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWQ7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVu
dDsKKyAgICAgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisjZW5kaWYKKwogI2lm
ICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MK
ICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAgICBhdHRyaWJ1
dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkBAIC0zMTcsNiArMzI0LDcgQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRP
VUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2htb3ZlOwog
ICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFi
bGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2
ZW50TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwg
Q29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0NQUCkgJiYgTEFOR1VB
R0VfQ1BQCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgdm9pZCBFbGVtZW50
Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKICAgICAgICAgICAgIGF0dHItPm5vcm1hbGl6ZSgpOwog
ICAgIH0KIH0KLQorICAgIAogLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKIEVsZW1lbnQqIEVsZW1l
bnQ6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKIHsKQEAgLTE1ODYsNSArMTU4NiwxMiBAQCBi
b29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0dXJuIE5vZGU6
OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlmCisgICAgCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1ZXN0RnVsbFNj
cmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncykKK3sKKyAgICBkb2N1bWVudCgpLT53ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgZmxhZ3MgPT0gQUxMT1dfS0VZQk9BUkRfSU5Q
VVQpOworfQorI2VuZGlmICAgIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShy
ZXZpc2lvbiA2NTAwNSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtOTQsNiArOTQsOSBAQCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUih0b3VjaGVuZCk7CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3Vj
aGNhbmNlbCk7CiAjZW5kaWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgREVGSU5F
X0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRp
ZgogCiAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGNyZWF0ZUNvbnRl
eHR1YWxGcmFnbWVudChjb25zdCBTdHJpbmcmLCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24g
PSBGcmFnbWVudFNjcmlwdGluZ0FsbG93ZWQpOwogCkBAIC0yOTIsNiArMjk1LDE0IEBAIHB1Ymxp
YzoKICNpZiBFTkFCTEUoU1ZHKQogICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJl
bmRlcmVyKE5vZGUqKSBjb25zdDsgCiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoRlVMTFNDUkVF
Tl9BUEkpCisgICAgZW51bSB7CisgICAgICAgIEFMTE9XX0tFWUJPQVJEX0lOUFVUID0gMQorICAg
IH07CisgICAgCisgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9y
dCBmbGFncyk7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIEVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBDb25zdHJ1Y3Rpb25UeXBlIHR5
cGUpCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50
LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTMzLDYgKzEzMywxMSBAQCBtb2R1bGUgY29yZSB7CiAg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwogI2VuZGlmCiAK
KyNpZiBkZWZpbmVkKEVOQUJMRV9GVUxMU0NSRUVOX0FQSSkgJiYgRU5BQkxFX0ZVTExTQ1JFRU5f
QVBJCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEFMTE9XX0tFWUJPQVJEX0lOUFVUID0g
MTsKKyAgICAgICAgdm9pZCB3ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbihpbiB1bnNpZ25lZCBzaG9y
dCBmbGFncyk7CisjZW5kaWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8
fCAhTEFOR1VBR0VfT0JKRUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0
cmlidXRlcwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJv
cnQ7CkBAIC0yMDUsNiArMjEwLDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBhdHRyaWJ1dGUg
W0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVu
dExpc3RlbmVyIG9udG91Y2htb3ZlOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRp
dGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91
Y2hlbmQ7CiAgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZF
TlRTLEVuYWJsZWRBdFJ1bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKKyAgICAg
ICAgYXR0cmlidXRlIFtEb250RW51bSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50
TGlzdGVuZXIgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlmCiAgICAgfTsKIApJbmRl
eDogV2ViQ29yZS9kb20vRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0V2ZW50
LmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE2Miw2ICsxNjIsMTMgQEAgYm9vbCBFdmVudDo6aXNXZWJLaXRUcmFuc2l0aW9u
RXZlbnQoKSBjbwogICAgIHJldHVybiBmYWxzZTsKIH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVO
X0FQSSkKK2Jvb2wgRXZlbnQ6OmlzV2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKwogYm9vbCBFdmVudDo6aXNYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQoKSBjb25zdAogewogICAgIHJldHVybiBmYWxzZTsKSW5kZXg6
IFdlYkNvcmUvZG9tL0V2ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnQuaAko
cmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3JlL2RvbS9FdmVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjMsNiArMTIzLDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNXZWJLaXRBbmltYXRpb25FdmVudCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIGJvb2wg
aXNXZWJLaXRUcmFuc2l0aW9uRXZlbnQoKSBjb25zdDsKICAgICAgICAgdmlydHVhbCBib29sIGlz
QmVmb3JlTG9hZEV2ZW50KCkgY29uc3Q7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAg
ICAgICB2aXJ0dWFsIGJvb2wgaXNXZWJLaXRGdWxsU2NyZWVuQ2hhbmdlRXZlbnQoKSBjb25zdDsK
KyNlbmRpZgogI2lmIEVOQUJMRShTVkcpCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1NWR1pvb21F
dmVudCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5hbWVzLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA2NTAwNSkKKysr
IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBcCiAgICAgbWFjcm8obG9hZGVuZCkgXAogICAg
IFwKKyAgICBtYWNybyh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorICAgIFwKIC8vIGVuZCBvZiBE
T01fRVZFTlRfTkFNRVNfRk9SX0VBQ0gKIAogICAgIGNsYXNzIEV2ZW50TmFtZXMgOiBwdWJsaWMg
Tm9uY29weWFibGUgewpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lv
biA2NTAwNSkKKysrIFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTIyMyw2ICsyMjMsNyBAQCBvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbgogb253
ZWJraXRhbmltYXRpb25lbmQKIG9ud2Via2l0YmVnaW5mdWxsc2NyZWVuCiBvbndlYmtpdGVuZGZ1
bGxzY3JlZW4KK29ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZQogb253ZWJraXR0cmFuc2l0aW9uZW5k
CiBvcHRpbXVtCiBwYXR0ZXJuCkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDY1MDA1
KQorKysgV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcs
NiArNDcsMTAgQEAKICNpbmNsdWRlICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0
cmFzLmg+CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisjaW5jbHVkZSAiV2ViS2l0RnVs
bFNjcmVlbkNoYW5nZUV2ZW50LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1
c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwpAQCAtMjYyLDYgKzI2NiwxMCBAQCB2b2lkIEhUTUxF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShBCiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnRvdWNoZW5kRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIH0gZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9u
dG91Y2hjYW5jZWxBdHRyKSB7CiAgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLnRvdWNoY2FuY2VsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cikpOworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICB9IGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbndlYmtpdGZ1bGxzY3JlZW5jaGFuZ2VBdHRyKSB7CisgICAgICAg
IHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7Cisj
ZW5kaWYKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDY1MDA1KQor
KysgV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNDYsNiAr
MjQ2LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGVudGVy
RnVsbHNjcmVlbkZvck5vZGUoTm9kZSopIHsgfQogICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1
bGxzY3JlZW5Gb3JOb2RlKE5vZGUqKSB7IH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
KyAgICAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzRnVsbFNjcmVlbkZvckVsZW1lbnQoY29uc3Qg
RWxlbWVudCopIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBlbnRlckZ1
bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KikgeyB9CisjZW5kaWYKKyAgICAgICAgCiAj
aWYgRU5BQkxFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgICAgIHZpcnR1YWwgSW50UmVjdCB2
aXNpYmxlUmVjdEZvclRpbGVkQmFja2luZ1N0b3JlKCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgp
OyB9CiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGFnZS9TZXR0aW5ncy5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAkocmV2aXNpb24gNjUwMDUpCisrKyBXZWJDb3Jl
L3BhZ2UvU2V0dGluZ3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNiArMTM3LDkgQEAgU2V0
dGluZ3M6OlNldHRpbmdzKFBhZ2UqIHBhZ2UpCiAgICAgLCBtX2h0bWw1VHJlZUJ1aWxkZXJFbmFi
bGVkKGZhbHNlKSAvLyBXaWxsIGJlIGRlbGV0ZWQgc29vbiwgZG8gbm90IHVzZS4KICAgICAsIG1f
cGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGZhbHNlKQogICAgICwgbV9kbnNQcmVmZXRjaGlu
Z0VuYWJsZWQodHJ1ZSkKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgLCBtX2Z1bGxT
Y3JlZW5BUElFbmFibGVkKGZhbHNlKQorI2VuZGlmCiAgICAgLCBtX21lbW9yeUluZm9FbmFibGVk
KGZhbHNlKQogICAgICwgbV9pbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uKGZhbHNlKQogewpJbmRl
eDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Nl
dHRpbmdzLmgJKHJldmlzaW9uIDY1MDA1KQorKysgV2ViQ29yZS9wYWdlL1NldHRpbmdzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyNCw2ICszMjQsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAg
ICAgICB2b2lkIHNldFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZChib29sIGZsYWcpIHsgbV9w
YWdpbmF0ZUR1cmluZ0xheW91dEVuYWJsZWQgPSBmbGFnOyB9CiAgICAgICAgIGJvb2wgcGFnaW5h
dGVEdXJpbmdMYXlvdXRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0ZUR1cmluZ0xh
eW91dEVuYWJsZWQ7IH0KIAorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAgICAgdm9p
ZCBzZXRGdWxsU2NyZWVuRW5hYmxlZChib29sIGZsYWcpIHsgbV9mdWxsU2NyZWVuQVBJRW5hYmxl
ZCA9IGZsYWc7IH0KKyAgICAgICAgYm9vbCBmdWxsU2NyZWVuRW5hYmxlZCgpIGNvbnN0ICB7IHJl
dHVybiBtX2Z1bGxTY3JlZW5BUElFbmFibGVkOyB9CisjZW5kaWYKKwogICAgICAgICB2b2lkIHNl
dE1lbW9yeUluZm9FbmFibGVkKGJvb2wgZmxhZykgeyBtX21lbW9yeUluZm9FbmFibGVkID0gZmxh
ZzsgfQogICAgICAgICBib29sIG1lbW9yeUluZm9FbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9t
ZW1vcnlJbmZvRW5hYmxlZDsgfQogCkBAIC00MTgsNiArNDIzLDkgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQ6IDE7IC8vIFdpbGwg
YmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICAgICBib29sIG1fcGFnaW5hdGVEdXJp
bmdMYXlvdXRFbmFibGVkIDogMTsKICAgICAgICAgYm9vbCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxl
ZCA6IDE7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICBib29sIG1fZnVsbFNj
cmVlbkFQSUVuYWJsZWQgOiAxOworI2VuZGlmCiAgICAgICAgIGJvb2wgbV9tZW1vcnlJbmZvRW5h
YmxlZDogMTsKICAgICAgICAgYm9vbCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb246IDE7CiAg
ICAgCg==
</data>
<flag name="review"
          id="52409"
          type_id="1"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64545</attachid>
            <date>2010-08-16 18:25:10 -0700</date>
            <delta_ts>2010-08-19 15:09:20 -0700</delta_ts>
            <desc>Part 1-3: FullScreen-WebCore-NewAPI</desc>
            <filename>FullScreen-WebCore-NewAPI.patch</filename>
            <type>text/plain</type>
            <size>28554</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDY1NDYzKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDctMjcgIEplciBOb2Js
ZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQWRkIEphdmFTY3JpcHQgQVBJIHRvIGFsbG93IGEgcGFnZSB0byBn
byBmdWxsc2NyZWVuLgorICAgICAgICByZGFyOi8vcHJvYmxlbS82ODY3Nzk1CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzA5OQorCisgICAgICAgICog
d3RmL1BsYXRmb3JtLmg6IEVuYWJsZSBGVUxMU0NSRUVOX0FQSSBtb2RlIGZvciB0aGUgTWFjIChl
eGNlcHQgaU9TKS4KKwogMjAxMC0wOC0xNiAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xs
aXZpZXJzLmNvbT4KIAogICAgICAgICBbd3hdIEJ1aWxkIGZpeCwgZG8gbm90IGJ1aWxkIFdlYkNv
cmUgYXMgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IGFzIHRoaXMgbGVhZHMgdG8KSW5kZXg6IEphdmFT
Y3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0
Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiA2NTQ2MykKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC01OTYsNiArNTk2LDcgQEAKICNlbmRpZgogI2RlZmlu
ZSBIQVZFX1JFQURMSU5FIDEKICNkZWZpbmUgSEFWRV9SVU5MT09QX1RJTUVSIDEKKyNkZWZpbmUg
RU5BQkxFX0ZVTExTQ1JFRU5fQVBJIDEKICNlbmRpZiAvKiBQTEFURk9STShNQUMpICYmICFQTEFU
Rk9STShJT1MpICovCiAKICNpZiBQTEFURk9STShNQUMpCkBAIC05MDUsNiArOTA2LDEwIEBACiAj
ZGVmaW5lIEVOQUJMRV9PTl9GSVJTVF9URVhUQVJFQV9GT0NVU19TRUxFQ1RfQUxMIDAKICNlbmRp
ZgogCisjaWYgIWRlZmluZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKQorI2RlZmluZSBFTkFCTEVf
RlVMTFNDUkVFTl9BUEkgMAorI2VuZGlmCisKICNpZiAhZGVmaW5lZChXVEZfVVNFX0pTVkFMVUU2
NCkgJiYgIWRlZmluZWQoV1RGX1VTRV9KU1ZBTFVFMzIpICYmICFkZWZpbmVkKFdURl9VU0VfSlNW
QUxVRTMyXzY0KQogI2lmIChDUFUoWDg2XzY0KSAmJiAoT1MoVU5JWCkgfHwgT1MoV0lORE9XUykp
KSBcCiAgICAgfHwgKENQVShJQTY0KSAmJiAhQ1BVKElBNjRfMzIpKSBcCkluZGV4OiBXZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gNjU0
NjMpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEwNSBA
QAorMjAxMC0wNy0yNyAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgSmF2YVNjcmlwdCBB
UEkgdG8gYWxsb3cgYSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9wcm9i
bGVtLzY4Njc3OTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQzMDk5CisgICAgICAgIAorICAgICAgICBNb3ppbGxhIGhhcyBwcm9wb3NlZCBhIG5ldyBz
ZXQgb2YgSmF2YVNjcmlwdCBBUElzIHdoaWNoIGFsbG93IGFueSBlbGVtZW50IGluCisgICAgICAg
IGEgZG9jdW1lbnQgdG8gZ28gZnVsbC1zY3JlZW4uICBUaGUgY3VycmVudCByZXZpc2lvbiBvZiB0
aGVpciBwcm9wb3NhbCBjYW4gYmUgCisgICAgICAgIGZvdW5kIGhlcmU6CisgICAgICAgIDxodHRw
czovL3dpa2kubW96aWxsYS5vcmcvaW5kZXgucGhwP3RpdGxlPUdlY2tvOkZ1bGxTY3JlZW5BUEkm
b2xkaWQ9MjQzNDI5PgorICAgICAgICAKKyAgICAgICAgVGhlIHByb3Bvc2VkIHNwZWNpZmljYXRp
b24gaW5jbHVkZXMgdGhlIGZvbGxvd2luZzoKKyAgICAgICAgCisgICAgICAgIERvY3VtZW50Ogor
ICAgICAgICAtIFRocmVlIG5ldyBtZXRob2RzIG9uIERvY3VtZW50OgorICAgICAgICAgICAgKyB2
b2lkIHJlcXVlc3RGdWxsU2NyZWVuKCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNj
cmVlbldpdGhLZXlzKCkKKyAgICAgICAgICAgICsgdm9pZCBjYW5jZWxGdWxsU2NyZWVuKCkKKyAg
ICAgICAgLSBUaHJlZSBuZXcgYXR0cmlidXRlcyBvZiBEb2N1bWVudDoKKyAgICAgICAgICAgICsg
cmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gZnVsbFNjcmVlbgorICAgICAgICAgICAgKyByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBmdWxsU2NyZWVuV2l0aEtleXMKKyAgICAgICAgICAgICsg
KG9wdGlvbmFsKSByZWFkb25seSBhdHRyaWJ1dGUgRWxlbWVudCBjdXJyZW50RnVsbFNjcmVlbkVs
ZW1lbnQKKyAgICAgICAgICAgIAorICAgICAgICBFbGVtZW50OgorICAgICAgICAtIFR3byBuZXcg
bWV0aG9kcyBvbiBFbGVtZW50OgorICAgICAgICAgICAgKyB2b2lkIHJlcXVlc3RGdWxsU2NyZWVu
KCkKKyAgICAgICAgICAgICsgdm9pZCByZXF1ZXN0RnVsbFNjcmVlbldpdGhLZXlzKCkKKyAgICAg
ICAgCisgICAgICAgIEhUTUxJRnJhbWVFbGVtZW50OgorICAgICAgICAtIE9uZSBuZXcgY29udGVu
dCBhdHRyaWJ1dGU6CisgICAgICAgICAgICArIGFsbG93RnVsbFNjcmVlbgorICAgICAgICAgICAg
CisgICAgICAgIEV2ZW50czoKKyAgICAgICAgLSBPbmUgbmV3IGV2ZW50OgorICAgICAgICAgICAg
KyBmdWxsU2NyZWVuQ2hhbmdlCisgICAgICAgIAorICAgICAgICBDU1MgUHNldWRvLWNsYXNzZXM6
CisgICAgICAgIC0gVGhyZWUgbmV3IFBzZXVkby1jbGFzc2VzOgorICAgICAgICAgICAgKyA6ZnVs
bC1zY3JlZW4KKyAgICAgICAgICAgICsgOmZ1bGwtc2NyZWVuLWRvYworICAgICAgICAgICAgKyA6
ZnVsbC1zY3JlZW4tcm9vdC13aXRoLXRhcmdldAorICAgICAgICAKKyAgICAgICAgRm9yIFdlYktp
dCdzIGluaXRpYWwgaW1wbGVtZW50YXRpb24sIGFsbCB0aGUgYWJvdmUgbmV3IEFQSXMgd2lsbCBi
ZSBwcmVmaXhlZCB3aXRoIAorICAgICAgICAid2Via2l0IiBvciAiLXdlYmtpdCIgd2hlcmUgYXBw
cm9wcmlhdGUuCisgICAgICAgIAorICAgICAgICBOZXcgdGVzdHM6CisgICAgICAgIExheW91dFRl
c3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLmh0bWwKKyAgICAgICAgTGF5b3V0VGVzdHMv
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MuaHRtbAorICAgICAgICBMYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QuaHRtbAorCisgICAgICAgIFByb2plY3QgZmlsZSBj
aGFuZ2VzOgorICAgICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmln
OiBBZGRlZCBhbiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkgZW50cnkuCisgICAgICAgICogRGVyaXZl
ZFNvdXJjZXMubWFrZTogQWRkZWQgcnVsZXMgZm9yIGZ1bGxzY3JlZW4uY3NzIGFuZCBXZWJDb3Jl
LkZ1bGxTY3JlZW4uZXhwLgorICAgICAgICAqIFdlYkNvcmUuRnVsbFNjcmVlbi5leHA6IEFkZGVk
IGV4cG9ydCBzeW1ib2xzIGZvciBEb2N1bWVudCBhbmQgRWxlbWVudCBmdW5jdGlvbnMuCisgICAg
ICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBOZXcgc291cmNlIGZpbGVz
IGFkZGVkIHRvIHRoZSBwcm9qZWN0LgorCisgICAgICAgIElETCBjaGFuZ2VzOgorICAgICAgICAq
IGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVsbC1zY3JlZW4gQVBJIHRvIHRoZSBE
b2N1bWVudCdzIGphdmFzY3JpcHQgaW50ZXJmYWNlLgorICAgICAgICAqIGRvbS9FbGVtZW50Lmlk
bDogQWRkZWQgdGhlIG5ldyBmdWxsLXNjcmVlbiBBUEkgdG8gdGhlIEVsZW1lbnQncyBqYXZhc2Ny
aXB0IGludGVyZmFjZS4KKyAgICAgICAgKiBodG1sL0hUTUxJRnJhbWVFbGVtZW50LmlkbDogQWRk
ZWQgdGhlIGFsbG93RnVsbFNjcmVlbiBhdHRyaWJ1dGUuCisKKyAgICAgICAgU291cmNlIGNoYW5n
ZXM6CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmg6IEV4cG9z
ZWQgRG9jdW1lbnQgYW5kIEVsZW1lbnQgZnVsbHNjcmVlbiBmdW5jdGlvbnMgaW4gdGhlIERPTSBj
bGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6IEFkZGVkIG5ldyBGdWxsU2Ny
ZWVuIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOiBBZGRlZCBu
ZXcgZnVsbC1zY3JlZW4gcHNldWRvIGNsYXNzZXMgdG8gdGhlIFBzZXVkb1R5cGUgZW51bS4KKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6IAorICAgICAgICAoV2ViQ29yZTo6bG9h
ZEZ1bGxEZWZhdWx0U3R5bGUpOiBQdWxsIHRoZSBmdWxsc2NyZWVuLmNzcyBzaGVldCBpbnRvIHRo
ZSBkZWZhdWx0U3R5bGUgYW5kIHRoZSBkZWZhdWx0UXVpcmtzU3R5bGUgc2hlZXRzLgorICAgICAg
ICAoV2ViQ29yZTo6bG9hZFNpbXBsZURlZmF1bHRTdHlsZSk6IFB1bGwgdGhlIGZ1bGxzY3JlZW4u
Y3NzIHNoZWV0IGludG8gdGhlIGRlZmF1bHRTdHlsZSBzaGVldC4KKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
ZWNrIGZvciB0aGUgbmV3IEZ1bGxTY3JlZW4gcHNldWRvIGNsYXNzZXMuCisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpjcmVhdGVFdmVudCk6
IFN1cHBvcnQgY3JlYXRpbmcgYSAiV2ViS2l0RnVsbFNjcmVlbkNoYW5nZSIgZXZlbnQuCisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOiBTdXBwb3J0
IGxpc3RlbmluZyBmb3IgYSAid2ViS2l0RnVsbFNjcmVlbkNoYW5nZUV2ZW50IgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuRm9yRWxlbWVudCk6IFBh
c3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGVudGVyIGZ1bGwgc2NyZWVuIG1v
ZGUuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0Q2FuY2VsRnVsbFNjcmVlbik6
IFBhc3NlcyByZXF1ZXN0IHRvIHRoZSBjaHJvbWUgY2xpZW50IHRvIGV4aXQgZnVsbCBzY3JlZW4g
bW9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRXaWxsRW50ZXJGdWxsU2Ny
ZWVuRm9yRWxlbWVudCk6IFNldHMgdGhlIEZ1bGxTY3JlZW4gcHNldWRvLWNsYXNzZXMgb24gdGhl
IGZ1bGwtc2NyZWVuIGVsZW1lbnQgYW5kIGl0cyBkb2N1bWVudC4KKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KTogQ3VycmVudGx5
IGEgbm8tb3AuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d2Via2l0V2lsbEV4aXRGdWxs
U2NyZWVuRm9yRWxlbWVudCk6IEN1cnJlbnRseSBhIG5vLW9wLgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6OndlYmtpdERpZEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudCk6IENsZWFycyB0aGUg
RnVsbFNjcmVlbiBwc2V1ZG8tY2xhc3NlcyBvbiB0aGUgZnVsbC1zY3JlZW4gZWxlbWVudCBhbmQg
aXRzIGRvY3VtZW50LgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCBjb25zdCBhY2Nl
c3NvcnMgZm9yIG5ldyBmdWxsLXNjcmVlbiBpbnN0YW5jZSB2YXJpYWJsZXMuCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp3ZWJraXRJ
c0Z1bGxTY3JlZW4pOiBBY2Nlc3NvciBmb3IgbV9pc0Z1bGxTY3JlZW4uCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6d2Via2l0SXNGdWxsU2NyZWVuV2l0aEtleXNFbmFibGVkKTogQWNjZXNz
b3IgZm9yIG1faXNGdWxsU2NyZW4gYW5kIG1fYXJlS2V5c0VuYWJsZWQuCisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KTogQWNjZXNzb3Ig
Zm9yIG1fZnVsbFNjcmVlbkVsZW1lbnQuCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4pOiBDYWxscyBE
b2N1bWVudDo6d2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50LiAKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6IEFkZCBhIHdlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UgZXZlbnQgbmFtZS4KKyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
IFBhcnNlIHRoZSBuZXcgIm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSIgYXR0cmlidXRlIGFuZCBy
ZWdpc3RlciBhIGxpc3RlbmVyLgorICAgICAgICAqIGh0bWwvSFRNTElGcmFtZUVsZW1lbnQuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudDo6c3VwcG9ydHNGdWxsc2NyZWVuRm9yRWxl
bWVudCk6IFBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZUNsaWVudDo6ZW50ZXJGdWxsc2NyZWVuRm9yRWxlbWVudCk6IENyZWF0
ZSBhIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBhbmQgcGFzcyB0aHJvdWdoIHRvIHRoZSBjdXJy
ZW50IFVJIGRlbGVnYXRlLgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50OjpleGl0RnVs
bHNjcmVlbkZvckVsZW1lbnQpOiBDcmVhdGUgYSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYW5k
IHBhc3MgdGhyb3VnaCB0byB0aGUgY3VycmVudCBVSSBkZWxlZ2F0ZS4KKyAgICAgICAgKiBwYWdl
L1NldHRpbmdzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNldHRpbmdzOjpTZXR0aW5ncyk6Cisg
ICAgICAgICogcGFnZS9TZXR0aW5ncy5oOiBBZGQgYSBuZXcgc2V0dGluZyB0byBjb250cm9sIHJ1
bnRpbWUgc3VwcG9ydCBmb3IgZnVsbCBzY3JlZW4gbW9kZSAoZGVmYXVsdHMgdG8gb2ZmKQorICAg
ICAgICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUNvbnRyb2xGdWxsc2NyZWVuQnV0dG9uRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFu
ZGxlcik6IFRoZSBmdWxsIHNjcmVlbiBidXR0b24gbm93IHRvZ2dsZXMgZnVsbCBzY3JlZW4gbW9k
ZSAocHJldmlvdXNseSwgaXQgb25seSBlbnRlcmVkKS4KKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuaDogQWRkZWQgbmV3IHN0eWxlIGNvbnN0YW50cy4KKwog
MjAxMC0wOC0xNiAgSmFtZXMgUm9iaW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIENvbXBpbGUgZml4LiBSZW1vdmUgQU5HTEVXZWJLaXRCcmlkZ2UgY2xhc3NlcyBmcm9tIENo
cm9taXVtIGJ1aWxkLiAgVGhleSBhcmUgdW51c2VkLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gNjU0NjMpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTY3Miw2ICs2NzIsMTAgQEAgaWZlcSAoJChPUyksTUFDT1MpCiBlbmRpZgogZW5kaWYK
IAoraWZlcSAoJChmaW5kc3RyaW5nIEVOQUJMRV9GVUxMU0NSRUVOX0FQSSwkKEZFQVRVUkVfREVG
SU5FUykpLCBFTkFCTEVfRlVMTFNDUkVFTl9BUEkpCisgICAgVVNFUl9BR0VOVF9TVFlMRV9TSEVF
VFMgOj0gJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykgJChXZWJDb3JlKS9jc3MvZnVsbHNjcmVl
bi5jc3MKK2VuZGlmCisKIFVzZXJBZ2VudFN0eWxlU2hlZXRzLmggOiBjc3MvbWFrZS1jc3MtZmls
ZS1hcnJheXMucGwgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIAlwZXJsICQ8ICRAIFVzZXJB
Z2VudFN0eWxlU2hlZXRzRGF0YS5jcHAgJChVU0VSX0FHRU5UX1NUWUxFX1NIRUVUUykKIApJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCShyZXZpc2lvbiA2NTQ2MykKKysrIFdlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTE0NzEsNiArMTQ3MSwxMyBAQCBfX1pON1dlYkNvcmU5SFRNTE5hbWVzOGF1
ZGlvVGFnRQogX19aTjdXZWJDb3JlOUhUTUxOYW1lczh2aWRlb1RhZ0UKICNlbmRpZgogCisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorX19aTjdXZWJDb3JlOERvY3VtZW50MzN3ZWJraXREaWRF
eGl0RnVsbFNjcmVlbkZvckVsZW1lbnRFUE5TXzdFbGVtZW50RQorX19aTjdXZWJDb3JlOERvY3Vt
ZW50MzR3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKK19f
Wk43V2ViQ29yZThEb2N1bWVudDM0d2Via2l0V2lsbEV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudEVQ
TlNfN0VsZW1lbnRFCitfX1pON1dlYkNvcmU4RG9jdW1lbnQzNXdlYmtpdFdpbGxFbnRlckZ1bGxT
Y3JlZW5Gb3JFbGVtZW50RVBOU183RWxlbWVudEUKKyNlbmRpZgorCiAjaWYgRU5BQkxFKE9GRkxJ
TkVfV0VCX0FQUExJQ0FUSU9OUykKIF9fWk43V2ViQ29yZTIzQXBwbGljYXRpb25DYWNoZVN0b3Jh
Z2UxNHF1b3RhRm9yT3JpZ2luRVBLTlNfMTRTZWN1cml0eU9yaWdpbkVSeAogX19aTjdXZWJDb3Jl
MjNBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTE0c2V0TWF4aW11bVNpemVFeApJbmRleDogV2ViQ29y
ZS9Db25maWd1cmF0aW9ucy9GZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0NvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2
NTQ2MykKKysrIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJ
KHdvcmtpbmcgY29weSkKQEAgLTcxLDYgKzcxLDcgQEAgRU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0g
RU5BQkxFX0ZJTFRFUlM7CiAKIEVOQUJMRV9GSUxFX1dSSVRFUiA9IDsKIEVOQUJMRV9GSUxFX1NZ
U1RFTSA9IDsKK0VOQUJMRV9GVUxMU0NSRUVOX0FQSSA9IEVOQUJMRV9GVUxMU0NSRUVOX0FQSTsK
IEVOQUJMRV9HRU9MT0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIAogRU5BQkxFX0lDT05E
QVRBQkFTRSA9ICQoRU5BQkxFX0lDT05EQVRBQkFTRV8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpA
QCAtMTIwLDQgKzEyMSw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5B
QkxFX1hQQVRIOwogRU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVT
ID0gJChFTkFCTEVfTElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8z
RF9SRU5ERVJJTkcpICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAk
KEVOQUJMRV9DTElFTlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVO
QUJMRV9EQVRBR1JJRCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRB
VElPTikgJChFTkFCTEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQo
RU5BQkxFX0VWRU5UU09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1dSSVRF
UikgJChFTkFCTEVfRklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9J
Q09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFU
QUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dF
UikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNB
VElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JF
U1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURf
V09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9T
VkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZH
X0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQo
RU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykg
JChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJM
RV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5L
X1BSRUZFVENIKSAkKEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChF
TkFCTEVfQkxPQikgJChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9C
QVNFRF9HRU9MT0NBVElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAk
KEVOQUJMRV9EQVRBTElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9E
SVJFQ1RPUllfVVBMT0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VS
Q0UpICQoRU5BQkxFX0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxF
X1NZU1RFTSkgJChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAk
KEVOQUJMRV9JQ09OREFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lO
REVYRURfREFUQUJBU0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQ
VF9ERUJVR0dFUikgJChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxF
X05PVElGSUNBVElPTlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFC
TEVfUFJPR1JFU1NfVEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJM
RV9TSEFSRURfV09SS0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAk
KEVOQUJMRV9TVkdfQVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChF
TkFCTEVfU1ZHX0ZPTlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NW
R19VU0UpICQoRU5BQkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VC
X1RJTUlORykgJChFTkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1Q
KSAkKEVOQUJMRV9YUEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTA4MzQs
NiArMTA4MzQsNyBAQAogCQlDNUVCREQ4MTEwNUVEREVDMDA1NjgxNkYgLyogU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdG9yYWdlRXZl
bnREaXNwYXRjaGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUQzMDlB
QTI4MkUwMDBCMEE1MiAvKiBNb2RpZnlTZWxlY3Rpb25MaXN0TGV2ZWwuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM2RDc0QUUzMDlBQTI5MEEwMDBCMEE1MiAvKiBNb2RpZnlT
ZWxlY3Rpb25MaXN0TGV2ZWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gTW9kaWZ5U2VsZWN0aW9uTGlzdExldmVsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQ0Q0RTBBRkExMUY3QkMyNzAwOUQzODExIC8qIGZ1bGxzY3JlZW4uY3NzICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5jc3M7IHBhdGggPSBmdWxsc2NyZWVuLmNzczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQ0UwMkYwQzMxMUU4M0FERDAwQzY2ODRBIC8qIFNjcmlwdENvbnRyb2xsZXJCYXNl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdENvbnRyb2xsZXJCYXNl
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNFMTcyRTAwMTEzNkU4Q0UwMDYyQTUz
MyAvKiBab29tTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBab29tTW9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDRTRDMDBFMzEwRjZGN0JBMDBDQTM4
RjUgLyogSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBIVE1MTm9TY3JpcHRFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE2ODg1LDYgKzE2ODg2LDcgQEAKIAkJCQlCQzlBREQyMjBDQzQwMzI2MDAwOThD
NEMgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaCAqLywKIAkJCQkzMTYxMUU1NDBFMUM0RDRB
MDBGNkE1NzkgLyogV2ViS2l0Q1NTVHJhbnNmb3JtVmFsdWUuaWRsICovLAogCQkJCTRDREU1NEVD
MEU1NTc5NzgwMDg5RTI2QyAvKiB3bWwuY3NzICovLAorCQkJCUNENEUwQUZBMTFGN0JDMjcwMDlE
MzgxMSAvKiBmdWxsc2NyZWVuLmNzcyAqLywKIAkJCSk7CiAJCQlwYXRoID0gY3NzOwogCQkJc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNE
T01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1Ymxp
Y0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29i
amMvUHVibGljRE9NSW50ZXJmYWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkg
QEAgQGludGVyZmFjZSBET01Eb2N1bWVudCA6IERPTU5vZGUgV0VCS0lUXwogLSAoRE9NTm9kZUxp
c3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmluZyAqKXRhZ25hbWUgQVZBSUxBQkxF
X0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQgKilxdWVyeVNlbGVjdG9yOihO
U1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOwogLSAo
RE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJ
TEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmluZWQoRU5BQkxFX0ZVTExTQ1JF
RU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKy0gKHZvaWQpd2Via2l0Q2FuY2VsRnVs
bFNjcmVlbiBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2VuZGlmCiBAZW5kCiAK
IEBpbnRlcmZhY2UgRE9NRG9jdW1lbnRGcmFnbWVudCA6IERPTU5vZGUgV0VCS0lUX1ZFUlNJT05f
MV8zCkBAIC0yMjQsNiArMjI3LDkgQEAgQGludGVyZmFjZSBET01FbGVtZW50IDogRE9NTm9kZSBX
RUJLSVRfVgogLSAoRE9NTm9kZUxpc3QgKilnZXRFbGVtZW50c0J5Q2xhc3NOYW1lOihOU1N0cmlu
ZyAqKW5hbWUgQVZBSUxBQkxFX0lOX1dFQktJVF9WRVJTSU9OXzRfMDsKIC0gKERPTUVsZW1lbnQg
KilxdWVyeVNlbGVjdG9yOihOU1N0cmluZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lU
X1ZFUlNJT05fNF8wOwogLSAoRE9NTm9kZUxpc3QgKilxdWVyeVNlbGVjdG9yQWxsOihOU1N0cmlu
ZyAqKXNlbGVjdG9ycyBBVkFJTEFCTEVfSU5fV0VCS0lUX1ZFUlNJT05fNF8wOworI2lmIGRlZmlu
ZWQoRU5BQkxFX0ZVTExTQ1JFRU5fQVBJKSAmJiBFTkFCTEVfRlVMTFNDUkVFTl9BUEkKKy0gKHZv
aWQpd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW46KHVuc2lnbmVkIHNob3J0KWZsYWdzIEFWQUlMQUJM
RV9JTl9XRUJLSVRfVkVSU0lPTl80XzA7CisjZW5kaWYKIEBlbmQKIAogQGludGVyZmFjZSBET01F
bnRpdHkgOiBET01Ob2RlIFdFQktJVF9WRVJTSU9OXzFfMwpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gNjU0NjMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQwNiw2ICs0MDYsMTAgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgY29uc3Qg
SwogI2VuZGlmCiAgICAgLCBtX3dlYWtSZWZlcmVuY2UoRG9jdW1lbnRXZWFrUmVmZXJlbmNlOjpj
cmVhdGUodGhpcykpCiAgICAgLCBtX2lkQXR0cmlidXRlTmFtZShpZEF0dHIpCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgICwgbV9pc0Z1bGxTY3JlZW4oMCkKKyAgICAsIG1fYXJlS2V5
c0VuYWJsZWRJbkZ1bGxTY3JlZW4oMCkKKyNlbmRpZgogewogICAgIG1fZG9jdW1lbnQgPSB0aGlz
OwogCkBAIC00ODksNiArNDkzLDkgQEAgdm9pZCBEb2N1bWVudDo6cmVtb3ZlZExhc3RSZWYoKQog
ICAgICAgICBtX2FjdGl2ZU5vZGUgPSAwOwogICAgICAgICBtX3RpdGxlRWxlbWVudCA9IDA7CiAg
ICAgICAgIG1fZG9jdW1lbnRFbGVtZW50ID0gMDsKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisgICAgICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQgPSAwOworI2VuZGlmCiAKICAgICAgICAgLy8g
cmVtb3ZlQWxsQ2hpbGRyZW4oKSBkb2Vzbid0IGFsd2F5cyB1bnJlZ2lzdGVyIElEcywgZG8gaXQg
dXBmcm9udCB0byBhdm9pZCBoYXZpbmcgc3RhbGUgcmVmZXJlbmNlcyBpbiB0aGUgbWFwLgogICAg
ICAgICBtX2VsZW1lbnRzQnlJZC5jbGVhcigpOwpAQCAtMzE2Myw2ICszMTcwLDE5IEBAIHZvaWQg
RG9jdW1lbnQ6Om5vZGVXaWxsQmVSZW1vdmVkKE5vZGUqIG4KICAgICAgICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5ub2RlV2lsbEJlUmVtb3ZlZChuKTsKICAgICAgICAgZnJhbWUtPmRyYWdDYXJldENv
bnRyb2xsZXIoKS0+bm9kZVdpbGxCZVJlbW92ZWQobik7CiAgICAgfQorICAgIAorI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKKyAgICAvLyBJZiB0aGUgY3VycmVudCBmdWxsIHNjcmVlbiBlbGVt
ZW50IG9yIGFueSBvZiBpdHMgYW5jZXN0b3JzIGlzIHJlbW92ZWQsIHNldCB0aGUgY3VycmVudAor
ICAgIC8vIGZ1bGwgc2NyZWVuIGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50IHJvb3QsIGFuZCBmaXJl
IGEgZnVsbHNjcmVlbmNoYW5nZSBldmVudCB0byBpbmZvcm0gCisgICAgLy8gY2xpZW50cyBvZiB0
aGUgRE9NLgorICAgIEFTU0VSVChuKTsKKyAgICBpZiAobi0+Y29udGFpbnMobV9mdWxsU2NyZWVu
RWxlbWVudC5nZXQoKSkpIHsKKyAgICAgICAgQVNTRVJUKG4gIT0gZG9jdW1lbnRFbGVtZW50KCkp
OworICAgICAgICBtX2Z1bGxTY3JlZW5FbGVtZW50ID0gZG9jdW1lbnRFbGVtZW50KCk7CisgICAg
ICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAg
bV9mdWxsU2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS53ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKSk7CisgICAgfQor
I2VuZGlmCiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnRleHRJbnNlcnRlZChOb2RlKiB0ZXh0LCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGxlbmd0aCkKQEAgLTUwNTYsNSArNTA3Niw3MCBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyKiBEb2N1bWVudDo6aW5zcGVjdG9yCiAgICAgcmV0dXJuIHBhZ2UoKSA/
IHBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpIDogMDsKIH0KICNlbmRpZgorICAgIAorI2lm
IEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFJlcXVlc3RGdWxs
U2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBzaG9ydCBmbGFncykK
K3sKKyAgICBpZiAoIXBhZ2UoKSB8fCAhcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWVsZW1lbnQpCisgICAgICAgIGVs
ZW1lbnQgPSBkb2N1bWVudEVsZW1lbnQoKTsKKyAgICAKKyAgICBpZiAoIXBhZ2UoKS0+Y2hyb21l
KCktPmNsaWVudCgpLT5zdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGVsZW1lbnQpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgbV9mdWxsU2NyZWVuRWxlbWVudCA9IDA7CisgICAgbV9h
cmVLZXlzRW5hYmxlZEluRnVsbFNjcmVlbiA9IGZsYWdzICYgRWxlbWVudDo6QUxMT1dfS0VZQk9B
UkRfSU5QVVQ7CisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoZWxlbWVudCk7Cit9CisKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdENhbmNlbEZ1
bGxTY3JlZW4oKQoreworICAgIGlmICghcGFnZSgpIHx8ICFtX2Z1bGxTY3JlZW5FbGVtZW50KQor
ICAgICAgICByZXR1cm47CisgICAgCisgICAgcGFnZSgpLT5jaHJvbWUoKS0+Y2xpZW50KCktPmV4
aXRGdWxsU2NyZWVuRm9yRWxlbWVudChtX2Z1bGxTY3JlZW5FbGVtZW50LmdldCgpKTsKK30KKyAg
ICAKK3ZvaWQgRG9jdW1lbnQ6OndlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVs
ZW1lbnQqIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIEFTU0VSVChwYWdl
KCkgJiYgcGFnZSgpLT5zZXR0aW5ncygpLT5mdWxsU2NyZWVuRW5hYmxlZCgpKTsKKworICAgIG1f
ZnVsbFNjcmVlbkVsZW1lbnQgPSBlbGVtZW50OworICAgIG1faXNGdWxsU2NyZWVuID0gdHJ1ZTsK
KyAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFu
Z2UpOworICAgIG1fZnVsbFNjcmVlbkVsZW1lbnQtPnNldE5lZWRzU3R5bGVSZWNhbGMoRnVsbFN0
eWxlQ2hhbmdlKTsKKyAgICB1cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgCisgICAgbV9mdWxs
U2NyZWVuRWxlbWVudC0+ZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS53
ZWJraXRmdWxsc2NyZWVuY2hhbmdlRXZlbnQsIHRydWUsIGZhbHNlKSk7Cit9CisgICAgCit2b2lk
IERvY3VtZW50Ojp3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKQor
eworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
KEVsZW1lbnQqKQoreworfQorCit2b2lkIERvY3VtZW50Ojp3ZWJraXREaWRFeGl0RnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBBU1NFUlQoZWxlbWVudCk7Cisg
ICAgbV9pc0Z1bGxTY3JlZW4gPSBmYWxzZTsKKyAgICBtX2FyZUtleXNFbmFibGVkSW5GdWxsU2Ny
ZWVuID0gZmFsc2U7CisgICAgLy8gbV9mdWxsU2NyZWVuRWxlbWVudCBoYXMgYWxyZWFkeSBiZWVu
IGNsZWFyZWQ7IHJlY2FsYyB0aGUgc3R5bGUgb2YgCisgICAgLy8gdGhlIHBhc3NlZCBpbiBlbGVt
ZW50IGluc3RlYWQuCisgICAgCisgICAgZWxlbWVudC0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxs
U3R5bGVDaGFuZ2UpOworICAgIGlmIChlbGVtZW50ICE9IGRvY3VtZW50RWxlbWVudCgpKQorICAg
ICAgICBkb2N1bWVudEVsZW1lbnQoKS0+c2V0TmVlZHNTdHlsZVJlY2FsYyhGdWxsU3R5bGVDaGFu
Z2UpOworICAgIHVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAKKyAgICBlbGVtZW50LT5kaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLndlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2VFdmVudCwgdHJ1ZSwgZmFsc2UpKTsKK30KKyAgICAKKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDY1NDYzKQorKysgV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw5IEBAIHB1YmxpYzoKICAgICBE
RUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoZW5kKTsKICAgICBERUZJTkVfQVRU
UklCVVRFX0VWRU5UX0xJU1RFTkVSKHRvdWNoY2FuY2VsKTsKICNlbmRpZgorI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKKyAgICBERUZJTkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKHdlYmtp
dGZ1bGxzY3JlZW5jaGFuZ2UpOworI2VuZGlmCiAKICAgICBEb2N1bWVudFR5cGUqIGRvY3R5cGUo
KSBjb25zdCB7IHJldHVybiBtX2RvY1R5cGUuZ2V0KCk7IH0KIApAQCAtMTAxNyw2ICsxMDIwLDE5
IEBAIHB1YmxpYzoKICAgICBNZWRpYUNhblN0YXJ0TGlzdGVuZXIqIHRha2VBbnlNZWRpYUNhblN0
YXJ0TGlzdGVuZXIoKTsKIAogICAgIGNvbnN0IFF1YWxpZmllZE5hbWUmIGlkQXR0cmlidXRlTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1faWRBdHRyaWJ1dGVOYW1lOyB9CisgICAgCisjaWYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQorICAgIGJvb2wgd2Via2l0RnVsbFNjcmVlbigpIGNvbnN0IHsgcmV0
dXJuIG1faXNGdWxsU2NyZWVuOyB9CisgICAgYm9vbCB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJ
bnB1dEFsbG93ZWQoKSBjb25zdCB7IHJldHVybiBtX2lzRnVsbFNjcmVlbiAmJiBtX2FyZUtleXNF
bmFibGVkSW5GdWxsU2NyZWVuOyB9CisgICAgRWxlbWVudCogd2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mdWxsU2NyZWVuRWxlbWVudC5nZXQoKTsgfQor
ICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqLCB1bnNp
Z25lZCBzaG9ydCBmbGFncyk7CisgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7Cisg
ICAgCisgICAgdm9pZCB3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50
Kik7CisgICAgdm9pZCB3ZWJraXREaWRFbnRlckZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQq
KTsKKyAgICB2b2lkIHdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbkZvckVsZW1lbnQoRWxlbWVudCop
OworICAgIHZvaWQgd2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKTsK
KyNlbmRpZgogCiAgICAgYm9vbCB3cml0ZURpc2FibGVkKCkgY29uc3QgeyByZXR1cm4gbV93cml0
ZURpc2FibGVkOyB9CiAgICAgdm9pZCBzZXRXcml0ZURpc2FibGVkKGJvb2wgZmxhZykgeyBtX3dy
aXRlRGlzYWJsZWQgPSBmbGFnOyB9CkBAIC0xMzAyLDYgKzEzMTgsMTIgQEAgcHJpdmF0ZToKICAg
ICBIYXNoU2V0PE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcio+IG1fbWVkaWFDYW5TdGFydExpc3RlbmVy
czsKIAogICAgIFF1YWxpZmllZE5hbWUgbV9pZEF0dHJpYnV0ZU5hbWU7CisgICAgCisjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIGJvb2wgbV9pc0Z1bGxTY3JlZW47CisgICAgYm9vbCBt
X2FyZUtleXNFbmFibGVkSW5GdWxsU2NyZWVuOworICAgIFJlZlB0cjxFbGVtZW50PiBtX2Z1bGxT
Y3JlZW5FbGVtZW50OworI2VuZGlmCiB9OwogCiBpbmxpbmUgYm9vbCBEb2N1bWVudDo6aGFzRWxl
bWVudFdpdGhJZChBdG9taWNTdHJpbmdJbXBsKiBpZCkgY29uc3QKSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJl
dmlzaW9uIDY1NDYzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC0yNDUsNiArMjQ1LDEzIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW0RvbnRFbnVtXSB2
b2lkIGluaXRpYWxpemVXTUxQYWdlU3RhdGUoKTsKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFC
TEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQorICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgYm9vbGVhbiB3ZWJraXRGdWxsU2NyZWVuS2V5Ym9hcmRJbnB1dEFsbG93ZWQ7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBFbGVtZW50IHdlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudDsKKyAgICAgICAgdm9pZCB3ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisjZW5k
aWYKKwogI2lmICFkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKSB8fCAhTEFOR1VBR0VfT0JK
RUNUSVZFX0MKICAgICAgICAgLy8gRXZlbnQgaGFuZGxlciBET00gYXR0cmlidXRlcwogICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CkBAIC0zMTcsNiAr
MzI0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRp
dGlvbmFsPVRPVUNIX0VWRU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91
Y2htb3ZlOwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VW
RU5UUyxFbmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hlbmQ7CiAgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW0sQ29uZGl0aW9uYWw9VE9VQ0hfRVZFTlRTLEVuYWJsZWRBdFJ1
bnRpbWVdIEV2ZW50TGlzdGVuZXIgb250b3VjaGNhbmNlbDsKKyAgICAgICAgYXR0cmlidXRlIFtE
b250RW51bSwgQ29uZGl0aW9uYWw9RlVMTFNDUkVFTl9BUEldIEV2ZW50TGlzdGVuZXIgb253ZWJr
aXRmdWxsc2NyZWVuY2hhbmdlOwogI2VuZGlmCiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX0NQUCkg
JiYgTEFOR1VBR0VfQ1BQCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ0MSw3ICsxNDQxLDcgQEAgdm9p
ZCBFbGVtZW50Ojpub3JtYWxpemVBdHRyaWJ1dGVzKCkKICAgICAgICAgICAgIGF0dHItPm5vcm1h
bGl6ZSgpOwogICAgIH0KIH0KLQorICAgIAogLy8gRWxlbWVudFRyYXZlcnNhbCBBUEkKIEVsZW1l
bnQqIEVsZW1lbnQ6OmZpcnN0RWxlbWVudENoaWxkKCkgY29uc3QKIHsKQEAgLTE1ODYsNSArMTU4
NiwxMiBAQCBib29sIEVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoCiAgICAgcmV0
dXJuIE5vZGU6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY2hpbGQpOwogfQogI2VuZGlmCisg
ICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQordm9pZCBFbGVtZW50Ojp3ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbih1bnNpZ25lZCBzaG9ydCBmbGFncykKK3sKKyAgICBkb2N1bWVudCgpLT53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbkZvckVsZW1lbnQodGhpcywgZmxhZ3MpOworfQorI2VuZGlm
ICAgIAogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiA2NTQ2MykK
KysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOSBA
QCBwdWJsaWM6CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGVuZCk7
CiAgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUih0b3VjaGNhbmNlbCk7CiAjZW5k
aWYKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUih3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKTsKKyNlbmRpZgogCiAgICAgdmlydHVh
bCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGRlcHJlY2F0ZWRDcmVhdGVDb250ZXh0dWFs
RnJhZ21lbnQoY29uc3QgU3RyaW5nJiwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uID0gRnJh
Z21lbnRTY3JpcHRpbmdBbGxvd2VkKTsKIApAQCAtMjkyLDYgKzI5NSwxNCBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKFNWRykKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKikgY29uc3Q7IAogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQorICAgIGVudW0geworICAgICAgICBBTExPV19LRVlCT0FSRF9JTlBVVCA9IDEKKyAgICB9Owor
ICAgIAorICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4odW5zaWduZWQgc2hvcnQgZmxh
Z3MpOworI2VuZGlmCiAKIHByb3RlY3RlZDoKICAgICBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgQ29uc3RydWN0aW9uVHlwZSB0eXBlKQpJ
bmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwJKHJldmlzaW9uIDY1NDYzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTEzMyw2ICsxMzMsMTEgQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKICNlbmRpZgogCisjaWYg
ZGVmaW5lZChFTkFCTEVfRlVMTFNDUkVFTl9BUEkpICYmIEVOQUJMRV9GVUxMU0NSRUVOX0FQSQor
ICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBBTExPV19LRVlCT0FSRF9JTlBVVCA9IDE7Cisg
ICAgICAgIHZvaWQgd2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oaW4gdW5zaWduZWQgc2hvcnQgZmxh
Z3MpOworI2VuZGlmCisKICNpZiAhZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykgfHwgIUxB
TkdVQUdFX09CSkVDVElWRV9DCiAgICAgICAgIC8vIEV2ZW50IGhhbmRsZXIgRE9NIGF0dHJpYnV0
ZXMKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwpA
QCAtMjA1LDYgKzIxMCw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgYXR0cmlidXRlIFtEb250
RW51bSxDb25kaXRpb25hbD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0
ZW5lciBvbnRvdWNobW92ZTsKICAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSxDb25kaXRpb25h
bD1UT1VDSF9FVkVOVFMsRW5hYmxlZEF0UnVudGltZV0gRXZlbnRMaXN0ZW5lciBvbnRvdWNoZW5k
OwogICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLENvbmRpdGlvbmFsPVRPVUNIX0VWRU5UUyxF
bmFibGVkQXRSdW50aW1lXSBFdmVudExpc3RlbmVyIG9udG91Y2hjYW5jZWw7CisgICAgICAgIGF0
dHJpYnV0ZSBbRG9udEVudW0sIENvbmRpdGlvbmFsPUZVTExTQ1JFRU5fQVBJXSBFdmVudExpc3Rl
bmVyIG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZTsKICNlbmRpZgogICAgIH07CiAKSW5kZXg6IFdl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgJKHJldmlzaW9uIDY1NDYzKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjMsNiArMTYzLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwK
ICAgICBtYWNybyhsb2FkZW5kKSBcCiAgICAgXAorICAgIG1hY3JvKHdlYmtpdGZ1bGxzY3JlZW5j
aGFuZ2UpCisgICAgXAogLy8gZW5kIG9mIERPTV9FVkVOVF9OQU1FU19GT1JfRUFDSAogCiAgICAg
Y2xhc3MgRXZlbnROYW1lcyA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CkluZGV4OiBXZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
QXR0cmlidXRlTmFtZXMuaW4JKHJldmlzaW9uIDY1NDYzKQorKysgV2ViQ29yZS9odG1sL0hUTUxB
dHRyaWJ1dGVOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIG9ud2Vi
a2l0YW5pbWF0aW9uaXRlcmF0aW9uCiBvbndlYmtpdGFuaW1hdGlvbmVuZAogb253ZWJraXRiZWdp
bmZ1bGxzY3JlZW4KIG9ud2Via2l0ZW5kZnVsbHNjcmVlbgorb253ZWJraXRmdWxsc2NyZWVuY2hh
bmdlCiBvbndlYmtpdHRyYW5zaXRpb25lbmQKIG9wdGltdW0KIHBhdHRlcm4KSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcAkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNjIsNiArMjYyLDEwIEBAIHZvaWQgSFRNTEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKEEKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkudG91Y2hlbmRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyKSk7CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb250b3VjaGNh
bmNlbEF0dHIpIHsKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkudG91Y2hjYW5jZWxFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBh
dHRyKSk7CisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgIH0gZWxzZSBpZiAoYXR0ci0+
bmFtZSgpID09IG9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUF0dHIpIHsKKyAgICAgICAgc2V0QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkud2Via2l0ZnVsbHNjcmVlbmNoYW5nZUV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKKyNlbmRpZgog
ICAgIH0KIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0Nocm9tZUNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9DaHJvbWVDbGllbnQuaAkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJD
b3JlL3BhZ2UvQ2hyb21lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMTIg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsc2Ny
ZWVuRm9yTm9kZShOb2RlKikgeyB9CiAgICAgICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVl
bkZvck5vZGUoTm9kZSopIHsgfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAg
ICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxlbWVudChjb25zdCBFbGVtZW50
KikgeyByZXR1cm4gZmFsc2U7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoRWxlbWVudCopIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZXhpdEZ1bGxT
Y3JlZW5Gb3JFbGVtZW50KEVsZW1lbnQqKSB7IH0KKyNlbmRpZgorICAgICAgICAKICNpZiBFTkFC
TEUoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgdmlydHVhbCBJbnRSZWN0IHZpc2libGVS
ZWN0Rm9yVGlsZWRCYWNraW5nU3RvcmUoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KCk7IH0KICNl
bmRpZgpJbmRleDogV2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuY3BwCShyZXZpc2lvbiA2NTQ2MykKKysrIFdlYkNvcmUvcGFnZS9T
ZXR0aW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNiw2ICsxMzYsOSBAQCBTZXR0aW5nczo6
U2V0dGluZ3MoUGFnZSogcGFnZSkKICAgICAsIG1faHRtbDVUcmVlQnVpbGRlckVuYWJsZWQoZmFs
c2UpIC8vIFdpbGwgYmUgZGVsZXRlZCBzb29uLCBkbyBub3QgdXNlLgogICAgICwgbV9wYWdpbmF0
ZUR1cmluZ0xheW91dEVuYWJsZWQoZmFsc2UpCiAgICAgLCBtX2Ruc1ByZWZldGNoaW5nRW5hYmxl
ZCh0cnVlKQorI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICAsIG1fZnVsbFNjcmVlbkFQ
SUVuYWJsZWQoZmFsc2UpCisjZW5kaWYKICAgICAsIG1fbWVtb3J5SW5mb0VuYWJsZWQoZmFsc2Up
CiAgICAgLCBtX2ludGVyYWN0aXZlRm9ybVZhbGlkYXRpb24oZmFsc2UpCiB7CkluZGV4OiBXZWJD
b3JlL3BhZ2UvU2V0dGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
aAkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJDb3JlL3BhZ2UvU2V0dGluZ3MuaAkod29ya2luZyBj
b3B5KQpAQCAtMzIxLDYgKzMyMSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZv
aWQgc2V0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFibGVkKGJvb2wgZmxhZykgeyBtX3BhZ2luYXRl
RHVyaW5nTGF5b3V0RW5hYmxlZCA9IGZsYWc7IH0KICAgICAgICAgYm9vbCBwYWdpbmF0ZUR1cmlu
Z0xheW91dEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRlRHVyaW5nTGF5b3V0RW5h
YmxlZDsgfQogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorICAgICAgICB2b2lkIHNldEZ1
bGxTY3JlZW5FbmFibGVkKGJvb2wgZmxhZykgeyBtX2Z1bGxTY3JlZW5BUElFbmFibGVkID0gZmxh
ZzsgfQorICAgICAgICBib29sIGZ1bGxTY3JlZW5FbmFibGVkKCkgY29uc3QgIHsgcmV0dXJuIG1f
ZnVsbFNjcmVlbkFQSUVuYWJsZWQ7IH0KKyNlbmRpZgorCiAgICAgICAgIHZvaWQgc2V0TWVtb3J5
SW5mb0VuYWJsZWQoYm9vbCBmbGFnKSB7IG1fbWVtb3J5SW5mb0VuYWJsZWQgPSBmbGFnOyB9CiAg
ICAgICAgIGJvb2wgbWVtb3J5SW5mb0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX21lbW9yeUlu
Zm9FbmFibGVkOyB9CiAKQEAgLTQxNCw2ICs0MTksOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGJvb2wgbV9odG1sNVRyZWVCdWlsZGVyRW5hYmxlZDogMTsgLy8gV2lsbCBiZSBkZWxl
dGVkIHNvb24sIGRvIG5vdCB1c2UuCiAgICAgICAgIGJvb2wgbV9wYWdpbmF0ZUR1cmluZ0xheW91
dEVuYWJsZWQgOiAxOwogICAgICAgICBib29sIG1fZG5zUHJlZmV0Y2hpbmdFbmFibGVkIDogMTsK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisgICAgICAgIGJvb2wgbV9mdWxsU2NyZWVuQVBJ
RW5hYmxlZCA6IDE7CisjZW5kaWYKICAgICAgICAgYm9vbCBtX21lbW9yeUluZm9FbmFibGVkOiAx
OwogICAgICAgICBib29sIG1faW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbjogMTsKICAgICAK
</data>
<flag name="review"
          id="53130"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="53560"
          type_id="3"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64997</attachid>
            <date>2010-08-20 14:58:43 -0700</date>
            <delta_ts>2010-08-26 11:59:37 -0700</delta_ts>
            <desc>Part 7: FullScreen-LayoutTests</desc>
            <filename>FullScreen-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>30363</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDY1NzExKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTAtMDgtMTkgIEplciBOb2JsZSAgPGplci5u
b2JsZUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKwor
ICAgICAgICAqIGZhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qczoKKyAgICAg
ICAgKiBmdWxsc2NyZWVuOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWFwaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tYXBpLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3Nz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1j
c3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUt
YW5jZXN0b3ItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVuL2Z1bGwt
c2NyZWVuLXJlbW92ZS1hbmNlc3Rvci5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxsc2NyZWVu
L2Z1bGwtc2NyZWVuLXJlbW92ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1bGxz
Y3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZ1bGxzY3Jl
ZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZ1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVxdWVzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXR3aWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS5odG1sOiBBZGRlZC4KKworMjAxMC0wOC0wOSAg
SmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgSmF2YVNjcmlw
dCBBUEkgdG8gYWxsb3cgYSBwYWdlIHRvIGdvIGZ1bGxzY3JlZW4uCisgICAgICAgIHJkYXI6Ly9w
cm9ibGVtLzY4Njc3OTUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQzMDk5CisKKyAgICAgICAgTmV3IHRlc3RzIGZvciB0aGUgbmV3IGZ1bGwgc2NyZWVu
IEFQSToKKworICAgICAgICBmdWxsLXNjcmVlbi1hcGkuaHRtbDogdGVzdHMgZm9yIHRoZSBwcmVz
ZW5jZSBvZiB0aGUgbmV3IGZ1bGwgc2NyZWVuIGFwaXMuCisgICAgICAgIGZ1bGwtc2NyZWVuLXJl
cXVlc3QuaHRtbDogdGVzdHMgdGhhdCBjbGllbnRzIGNhbiByZXF1ZXN0IHRoZSBicm93c2VyIGVu
dGVyIGZ1bGwgc2NyZWVuIG1vZGUgc3VjY2Vzc2Z1bGx5LgorICAgICAgICBmdWxsLXNjcmVlbi1j
c3MuaHRtbDogdGVzdHMgdGhhdCB0aGUgbmV3IGZ1bGwgc2NyZWVuIHBzZXVkbyBjbGFzc2VzIGFy
ZSBhcHBsaWVkIG9uY2UgZnVsbCBzY3JlZW4gbW9kZSBpcyBlbnRlcmVkLgorICAgICAgICBmdWxs
LXNjcmVlbi1yZW1vdmUuaHRtbDogdGVzdHMgdGhhdCB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGZ1
bGwgc2NyZWVuIGVsZW1lbnQgaXMgY2hhbmdlZCB3aGVuIHRoYXQgZWxlbWVudCBpcyByZW1vdmVk
IGZyb20gdGhlIERPTSB0cmVlLgorICAgICAgICBmdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3Iu
aHRtbDogdGVzdHMgdGhhdCB0aGUgZG9jdW1lbnQncyBjdXJyZW50IGZ1bGwgc2NyZWVuIGVsZW1l
bnQgaXMgY2hhbmdlZCBhbiBhbmNlc3RvciBvZiB0aGF0IGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9t
IHRoZSBET00gdHJlZS4KKyAgICAgICAgZnVsbC1zY3JlZW4tdHdpY2UuaHRtbDogdGVzdHMgdGhh
dCBlbnRlcmluZyBmdWxsIHNjcmVlbiBtb2RlIG9uIHR3byBkaWZmZXJlbnQgZWxlbWVudHMgaW4g
YSByb3cgZG9lcyBub3QgZmFpbC4KKyAgICAgICAgCisgICAgICAgIFRlc3RzIHRoYXQgd2VyZSBj
aGFuZ2VkOgorICAgICAgICAKKyAgICAgICAgZG9tTGlzdEVudW1lcmF0aW9uLmh0bWw6IFRoaXMg
dGVzdCByZXR1cm5zIGEgc3BlY2lmaWMgY291bnQgb2YgcHJvcGVydGllcyBvbiBIVE1MIGVsZW1l
bnRzOyBhZnRlciBjb25zdWx0YXRpb24KKyAgICAgICAgd2l0aCBTYW0gV2VpbmlnICh0aGUgb3Jp
Z2luYWwgdGVzdCBhdXRob3IpLCBpdCB3YXMgZGVjaWRlZCB0aGF0IHRoaXMgcGFydCBvZiB0aGUg
dGVzdCB3b3VsZCBiZSB2ZXJ5IGRpZmZpY3VsdCB0byAKKyAgICAgICAgbWFrZSBwbGF0Zm9ybSBz
cGVjaWZpYywgYW5kIHRoYXQgbm90aGluZyBzaWduaWZpY2FudCB3b3VsZCBiZSBsb3N0IGlmIHRo
ZSBwcm9wZXJ0eSBjb3VudCBzZWN0aW9ucyB3ZXJlIHJlbW92ZWQuCisgICAgICAgIAorICAgICAg
ICBwbGF0Zm9ybS8qL1NraXBwZWQ6IEFkZGVkIHRoZSBmdWxsc2NyZWVuLyBkaXJlY3RvcnkgdG8g
dGhlIFNraXBwZWQgbGlzdCBmb3IgZXZlcnkgcGxhdGZvcm0gc2F2ZSBtYWMuCisKKyAgICAgICAg
KiBmYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZCB0
aGUgbmV3IHByb3BlcnRpZXMgZXhwb3NlZCBvbiBEb2N1bWVudCBhbmQgRWxlbWVudC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0OiBSZW1vdmVkIHRo
ZSBpdGVyYXRpb24gY291bnQgcGFydCBvZiB0aGlzIHRlc3QuCisgICAgICAgICogZmFzdC9kb20v
c2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qczogIiIKKyAgICAgICAgKiBmdWxsc2Ny
ZWVuOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbjogQWRkZWQuCisg
ICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBpLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tYXBpLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1
bGwtc2NyZWVuLWNzcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3ItZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9mdWxsLXNjcmVl
bi1yZW1vdmUtYW5jZXN0b3IuaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Z1
bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3Qt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZnVsbHNjcmVlbi9m
dWxsLXNjcmVlbi1yZXF1ZXN0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9m
dWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXR3aWNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogcGxhdGZvcm0vbWFjL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tdHdpY2UuaHRtbDogQWRkZWQu
CisKIDIwMTAtMDgtMTkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBS
dWJiZXItc3RhbXBlZCBieSBKb24gSG9uZXljdXR0LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vZG9tTGlzdEVudW1lcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9kb21MaXN0RW51bWVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2
NTQ2MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2RvbUxpc3RFbnVtZXJhdGlvbi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMyLDcgKzMyLDYgQEAgUEFTUyByZXN1bHRBcnJheVsy
XS5pIGlzICcyJwogUEFTUyByZXN1bHRBcnJheVsyXS5pdGVtIGlzIG5hbWVkTm9kZU1hcC5pdGVt
KDIpCiAKIFtvYmplY3QgSFRNTEZvcm1FbGVtZW50XQotUEFTUyByZXN1bHRBcnJheS5sZW5ndGgg
aXMgMTM2CiBQQVNTIHJlc3VsdEFycmF5WzBdLmkgaXMgJzAnCiBQQVNTIHJlc3VsdEFycmF5WzBd
Lml0ZW0gaXMgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NlbGVjdCcpWzBdCiBQQVNT
IHJlc3VsdEFycmF5WzFdLmkgaXMgJzEnCkBAIC00MSw3ICs0MCw2IEBAIFBBU1MgcmVzdWx0QXJy
YXlbMl0uaSBpcyAnMicKIFBBU1MgcmVzdWx0QXJyYXlbMl0uaXRlbSBpcyBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMl0KIAogW29iamVjdCBIVE1MU2VsZWN0RWxlbWVu
dF0KLVBBU1MgcmVzdWx0QXJyYXkubGVuZ3RoIGlzIDE0NAogUEFTUyByZXN1bHRBcnJheVswXS5p
IGlzICcwJwogUEFTUyByZXN1bHRBcnJheVswXS5pdGVtIGlzIGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCdvcHRpb24nKVswXQogUEFTUyByZXN1bHRBcnJheVsxXS5pIGlzICcxJwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA2NTQ2MykKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgd2luZG93LkF0dHIucHJvdG90eXBlLnJlcGxhY2VDaGlsZCBb
ZnVuYwogd2luZG93LkF1ZGlvIFtvYmplY3QgQXVkaW9Db25zdHJ1Y3Rvcl0KIHdpbmRvdy5BdWRp
by5sZW5ndGggW251bWJlcl0KIHdpbmRvdy5BdWRpby5wcm90b3R5cGUgW29iamVjdCBIVE1MQXVk
aW9FbGVtZW50UHJvdG90eXBlXQord2luZG93LkF1ZGlvLnByb3RvdHlwZS5BTExPV19LRVlCT0FS
RF9JTlBVVCBbbnVtYmVyXQogd2luZG93LkF1ZGlvLnByb3RvdHlwZS5BVFRSSUJVVEVfTk9ERSBb
bnVtYmVyXQogd2luZG93LkF1ZGlvLnByb3RvdHlwZS5DREFUQV9TRUNUSU9OX05PREUgW251bWJl
cl0KIHdpbmRvdy5BdWRpby5wcm90b3R5cGUuQ09NTUVOVF9OT0RFIFtudW1iZXJdCkBAIC0xMjMs
NiArMTI0LDcgQEAgd2luZG93LkF1ZGlvLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOUyBbZgogd2lu
ZG93LkF1ZGlvLnByb3RvdHlwZS5zZXRBdHRyaWJ1dGVOb2RlIFtmdW5jdGlvbl0KIHdpbmRvdy5B
dWRpby5wcm90b3R5cGUuc2V0QXR0cmlidXRlTm9kZU5TIFtmdW5jdGlvbl0KIHdpbmRvdy5BdWRp
by5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yIFtmdW5jdGlvbl0KK3dpbmRvdy5BdWRp
by5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gW2Z1bmN0aW9uXQogd2luZG93LkJl
Zm9yZUxvYWRFdmVudCBbb2JqZWN0IEJlZm9yZUxvYWRFdmVudENvbnN0cnVjdG9yXQogd2luZG93
LkJlZm9yZUxvYWRFdmVudC5wcm90b3R5cGUgW29iamVjdCBCZWZvcmVMb2FkRXZlbnRQcm90b3R5
cGVdCiB3aW5kb3cuQmVmb3JlTG9hZEV2ZW50LnByb3RvdHlwZS5BVF9UQVJHRVQgW251bWJlcl0K
QEAgLTYzNiw2ICs2MzgsNyBAQCB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLnF1ZXJ5U2VsZWN0
b3JBCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLnJlbW92ZUNoaWxkIFtmdW5jdGlvbl0KIHdp
bmRvdy5Eb2N1bWVudC5wcm90b3R5cGUucmVtb3ZlRXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3
aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLnJlcGxhY2VDaGlsZCBbZnVuY3Rpb25dCit3aW5kb3cu
RG9jdW1lbnQucHJvdG90eXBlLndlYmtpdENhbmNlbEZ1bGxTY3JlZW4gW2Z1bmN0aW9uXQogd2lu
ZG93LkRvY3VtZW50RnJhZ21lbnQgW29iamVjdCBEb2N1bWVudEZyYWdtZW50Q29uc3RydWN0b3Jd
CiB3aW5kb3cuRG9jdW1lbnRGcmFnbWVudC5wcm90b3R5cGUgW29iamVjdCBEb2N1bWVudEZyYWdt
ZW50UHJvdG90eXBlXQogd2luZG93LkRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLkFUVFJJQlVU
RV9OT0RFIFtudW1iZXJdCkBAIC03MTUsNyArNzE4LDkgQEAgd2luZG93LkRvY3VtZW50VHlwZS5w
cm90b3R5cGUucmVtb3ZlQ2hpbAogd2luZG93LkRvY3VtZW50VHlwZS5wcm90b3R5cGUucmVtb3Zl
RXZlbnRMaXN0ZW5lciBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnRUeXBlLnByb3RvdHlwZS5y
ZXBsYWNlQ2hpbGQgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQgW29iamVjdCBFbGVtZW50Q29u
c3RydWN0b3JdCit3aW5kb3cuRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCBbbnVtYmVyXQog
d2luZG93LkVsZW1lbnQucHJvdG90eXBlIFtvYmplY3QgRWxlbWVudFByb3RvdHlwZV0KK3dpbmRv
dy5FbGVtZW50LnByb3RvdHlwZS5BTExPV19LRVlCT0FSRF9JTlBVVCBbbnVtYmVyXQogd2luZG93
LkVsZW1lbnQucHJvdG90eXBlLkFUVFJJQlVURV9OT0RFIFtudW1iZXJdCiB3aW5kb3cuRWxlbWVu
dC5wcm90b3R5cGUuQ0RBVEFfU0VDVElPTl9OT0RFIFtudW1iZXJdCiB3aW5kb3cuRWxlbWVudC5w
cm90b3R5cGUuQ09NTUVOVF9OT0RFIFtudW1iZXJdCkBAIC03ODAsNiArNzg1LDcgQEAgd2luZG93
LkVsZW1lbnQucHJvdG90eXBlLnNldEF0dHJpYnV0ZU5TIAogd2luZG93LkVsZW1lbnQucHJvdG90
eXBlLnNldEF0dHJpYnV0ZU5vZGUgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBl
LnNldEF0dHJpYnV0ZU5vZGVOUyBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUu
d2Via2l0TWF0Y2hlc1NlbGVjdG9yIFtmdW5jdGlvbl0KK3dpbmRvdy5FbGVtZW50LnByb3RvdHlw
ZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiBbZnVuY3Rpb25dCiB3aW5kb3cuRW50aXR5IFtvYmpl
Y3QgRW50aXR5Q29uc3RydWN0b3JdCiB3aW5kb3cuRW50aXR5LnByb3RvdHlwZSBbb2JqZWN0IEVu
dGl0eVByb3RvdHlwZV0KIHdpbmRvdy5FbnRpdHkucHJvdG90eXBlLkFUVFJJQlVURV9OT0RFIFtu
dW1iZXJdCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvZG9tTGlzdEVu
dW1lcmF0aW9uLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10
ZXN0cy9kb21MaXN0RW51bWVyYXRpb24uanMJKHJldmlzaW9uIDY1NDYzKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL2RvbUxpc3RFbnVtZXJhdGlvbi5qcwkod29ya2luZyBj
b3B5KQpAQCAtMTMwLDcgKzEzMCw2IEBAIHNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwg
Im5hbWVkTm8KIC8vIEhUTUxGb3JtRWxlbWVudAogdmFyIGh0bWxGb3JtRWxlbWVudCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdmb3JtJylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJh
dGVMaXN0KGh0bWxGb3JtRWxlbWVudCk7Ci1zaG91bGRCZSgicmVzdWx0QXJyYXkubGVuZ3RoIiwg
IjEzNiIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzBdLmkiLCAiJzAnIik7CiBzaG91bGRCZSgi
cmVzdWx0QXJyYXlbMF0uaXRlbSIsICJkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2Vs
ZWN0JylbMF0iKTsKIHNob3VsZEJlKCJyZXN1bHRBcnJheVsxXS5pIiwgIicxJyIpOwpAQCAtMTQx
LDcgKzE0MCw2IEBAIHNob3VsZEJlKCJyZXN1bHRBcnJheVsyXS5pdGVtIiwgImRvY3VtZW4KIC8v
IEhUTUxTZWxlY3RFbGVtZW50CiB2YXIgaHRtbFNlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnc2VsZWN0JylbMF07CiByZXN1bHRBcnJheSA9IGl0ZXJhdGVMaXN0
KGh0bWxTZWxlY3RFbGVtZW50KTsKLXNob3VsZEJlKCJyZXN1bHRBcnJheS5sZW5ndGgiLCAiMTQ0
Iik7CiBzaG91bGRCZSgicmVzdWx0QXJyYXlbMF0uaSIsICInMCciKTsKIHNob3VsZEJlKCJyZXN1
bHRBcnJheVswXS5pdGVtIiwgImRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvcHRpb24n
KVswXSIpOwogc2hvdWxkQmUoInJlc3VsdEFycmF5WzFdLmkiLCAiJzEnIik7CkluZGV4OiBMYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1hcGkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK0VYUEVDVEVEIChkb2N1
bWVudC53ZWJraXRGdWxsU2NyZWVuID09ICdmYWxzZScpIE9LCitFWFBFQ1RFRCAoZG9jdW1lbnQu
d2Via2l0Q2FuY2VsRnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VYUEVDVEVEIChkb2N1
bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ251bGwnKSBPSworRVhQRUNU
RUQgKGRvY3VtZW50Lm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA9PSAnbnVsbCcpIE9LCitFWFBF
Q1RFRCAoc3Bhbi53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiAhPSAndW5kZWZpbmVkJykgT0sKK0VY
UEVDVEVEIChzcGFuLm9ud2Via2l0ZnVsbHNjcmVlbmNoYW5nZSA9PSAnbnVsbCcpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWFwaS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tYXBp
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LWFwaS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8Ym9keT4KKyAgICA8c2Ny
aXB0IHNyYz0iZnVsbC1zY3JlZW4tdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3Bhbj48L3NwYW4+Cis8
c2NyaXB0PgorICAgIHNwYW4gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3Bhbicp
WzBdOworCXRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0RnVsbFNjcmVlbiIsIGZhbHNlKTsK
Kwl0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdENhbmNlbEZ1bGxTY3JlZW4iLCB1bmRlZmlu
ZWQsICIhPSIpOworCXRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50IiwgbnVsbCk7CisJdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5vbndlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UiLCBudWxsKQorCXRlc3RFeHBlY3RlZCgic3Bhbi53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbiIsIHVuZGVmaW5lZCwgIiE9Iik7CisJdGVzdEV4cGVjdGVkKCJzcGFuLm9ud2Via2l0
ZnVsbHNjcmVlbmNoYW5nZSIsIG51bGwpCQorCWVuZFRlc3QoKTsKKzwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tY3NzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
Y3NzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorRVhQRUNURUQg
KGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3BhbiwgbnVsbCkuZ2V0UHJv
cGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpICE9ICdyZ2IoMCwgMjU1LCAwKScpIE9LCitF
WFBFQ1RFRCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3In
KSAhPSAncmdiKDI1NSwgMCwgMCknKSBPSworRVhQRUNURUQgKGRvY3VtZW50LmRlZmF1bHRWaWV3
LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9w
ZXJ0eVZhbHVlKCdjb2xvcicpICE9ICdyZ2IoMCwgMCwgMjU1KScpIE9LCitFVkVOVCh3ZWJraXRm
dWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVhQRUNURUQgKGRvY3Vt
ZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoc3BhbiwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpID09ICdyZ2IoMCwgMjU1LCAwKScpIE9LCitFWFBFQ1RF
RCAoZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAn
cmdiKDI1NSwgMCwgMCknKSBPSworRVhQRUNURUQgKGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdjb2xvcicpID09ICdyZ2IoMCwgMCwgMjU1KScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxl
bWVudCA9PSAnW29iamVjdCBIVE1MSHRtbEVsZW1lbnRdJykgT0sKK0VYUEVDVEVEIChkb2N1bWVu
dC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwpLmdldFByb3BlcnR5VmFs
dWUoJ2JhY2tncm91bmQtY29sb3InKSA9PSAncmdiKDAsIDI1NSwgMCknKSBPSworRVhQRUNURUQg
KGRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykgIT0gJ3Jn
YigyNTUsIDAsIDApJykgT0sKK0VYUEVDVEVEIChkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21w
dXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1
ZSgnY29sb3InKSA9PSAncmdiKDAsIDAsIDI1NSknKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDog
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLWNzcy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1jc3MuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0OSBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4t
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c3R5bGU+CisgICAgOi13ZWJraXQtZnVsbC1zY3JlZW4geyBi
YWNrZ3JvdW5kOiBsaW1lOyB9CisgICAgOi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jdW1lbnQgeyBj
b2xvcjogYmx1ZTsgfQorICAgIDpyb290Oi13ZWJraXQtZnVsbC1zY3JlZW4tZG9jdW1lbnQ6bm90
KDotd2Via2l0LWZ1bGwtc2NyZWVuKSB7IGJhY2tncm91bmQ6IHJlZDsgfQorPC9zdHlsZT4KKzxz
cGFuPjwvc3Bhbj4KKzxzY3JpcHQ+CisgICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhlIGZ1bGwg
c2NyZWVuIEFQSSBpcyBub3QgZW5hYmxlZCBvciBpcyBtaXNzaW5nOgorICAgIGlmIChFbGVtZW50
LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpCisgICAgICAg
IGVuZFRlc3QoKTsKKyAgICBlbHNlIHsKKyAgICAgICAgdmFyIGNhbGxiYWNrOworICAgICAgICB2
YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBmdW5jdGlvbihldmVudCkKKyAgICAgICAgeworICAgICAg
ICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAg
ICAgICB9OworICAgICAgICB3YWl0Rm9yRXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVu
Y2hhbmdlJywgZnVsbHNjcmVlbkNoYW5nZWQpOworCisgICAgICAgIHZhciBzcGFuID0gZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NwYW4nKVswXTsKKyAgICAKKyAgICAgICAgdGVzdEV4
cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51bGwp
LmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSIsICJyZ2IoMCwgMjU1LCAwKSIs
ICIhPSIpOworICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENv
bXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZh
bHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAicmdiKDI1NSwgMCwgMCkiLCAiIT0iKTsKKyAgICAg
ICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGRv
Y3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnY29sb3InKSIs
ICJyZ2IoMCwgMCwgMjU1KSIsICIhPSIpOworICAgIAorICAgICAgICB2YXIgc3BhbkVudGVyZWRG
dWxsU2NyZWVuID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgi
ZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Iiwgc3Bhbik7CisgICAgICAg
ICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUo
c3BhbiwgbnVsbCkuZ2V0UHJvcGVydHlWYWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgInJnYigw
LCAyNTUsIDApIik7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LmRlZmF1bHRW
aWV3LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQ
cm9wZXJ0eVZhbHVlKCdiYWNrZ3JvdW5kLWNvbG9yJykiLCAicmdiKDI1NSwgMCwgMCkiKTsKKyAg
ICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJ2Nv
bG9yJykiLCAicmdiKDAsIDAsIDI1NSkiKTsKKyAgICAgICAgCisgICAgICAgICAgICBjYWxsYmFj
ayA9IGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgICAgICBkb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgfTsKKyAgICAK
KyAgICAgICAgdmFyIGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW4gPSBmdW5jdGlvbihldmVudCkg
eworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNj
cmVlbkVsZW1lbnQiLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOworICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHNwYW4sIG51
bGwpLmdldFByb3BlcnR5VmFsdWUoJ2JhY2tncm91bmQtY29sb3InKSIsICJyZ2IoMCwgMjU1LCAw
KSIpOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRD
b21wdXRlZFN0eWxlKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgbnVsbCkuZ2V0UHJvcGVydHlW
YWx1ZSgnYmFja2dyb3VuZC1jb2xvcicpIiwgInJnYigyNTUsIDAsIDApIiwgIiE9Iik7CisgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCdjb2xv
cicpIiwgInJnYigwLCAwLCAyNTUpIik7CisgICAgICAgICAgICBlbmRUZXN0KCk7CisgICAgICAg
IH07CisgICAgCisgICAgICAgIGNhbGxiYWNrID0gc3BhbkVudGVyZWRGdWxsU2NyZWVuOworICAg
ICAgICBzcGFuLndlYmtpdFJlcXVlc3RGdWxsU2NyZWVuKCk7CisgICAgfQorPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1hbmNlc3Rvci1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi1yZW1vdmUtYW5jZXN0b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0b3ItZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFu
Z2UpCitFWFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09
ICdbb2JqZWN0IEhUTUxFbGVtZW50XScpIE9LCitFVkVOVCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdl
KQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCA9PSAn
W29iamVjdCBIVE1MSHRtbEVsZW1lbnRdJykgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91
dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUtYW5jZXN0
b3IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3Jl
ZW4tcmVtb3ZlLWFuY2VzdG9yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxi
b2R5PgorPHNjcmlwdCBzcmM9ImZ1bGwtc2NyZWVuLXRlc3QuanMiPjwvc2NyaXB0PgorPGRpdj48
c3Bhbj48L3NwYW4+PC9kaXY+Cis8c2NyaXB0PgorICAgIC8vIEJhaWwgb3V0IGVhcmx5IGlmIHRo
ZSBmdWxsIHNjcmVlbiBBUEkgaXMgbm90IGVuYWJsZWQgb3IgaXMgbWlzc2luZzoKKyAgICBpZiAo
RWxlbWVudC5wcm90b3R5cGUud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4gPT0gdW5kZWZpbmVkKSAK
KyAgICAgICAgZW5kVGVzdCgpOworICAgIGVsc2UgeworICAgICAgICB2YXIgY2FsbGJhY2s7Cisg
ICAgICAgIHZhciBmdWxsc2NyZWVuQ2hhbmdlZCA9IGZ1bmN0aW9uKGV2ZW50KQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAoY2FsbGJhY2spCisgICAgICAgICAgICAgICAgY2FsbGJhY2soZXZl
bnQpCisgICAgICAgIH07CisgICAgICAgIHdhaXRGb3JFdmVudChkb2N1bWVudCwgJ3dlYmtpdGZ1
bGxzY3JlZW5jaGFuZ2UnLCBmdWxsc2NyZWVuQ2hhbmdlZCk7CisKKyAgICAgICAgdmFyIHNwYW4g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdOworICAgICAgICB2YXIg
ZGl2ID0gc3Bhbi5wYXJlbnROb2RlOworCisgICAgICAgIHZhciBzcGFuRW50ZXJlZEZ1bGxTY3Jl
ZW4gPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudEVu
dGVyZWRGdWxsU2NyZWVuOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCBzcGFuKTsKKyAgICAgICAgICAgIGRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQoZGl2KTsKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZG9jdW1l
bnRFbnRlcmVkRnVsbFNjcmVlbiA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICBjYWxs
YmFjayA9IG51bGw7CisgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoImRvY3VtZW50LndlYmtpdEN1
cnJlbnRGdWxsU2NyZWVuRWxlbWVudCIsIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCk7CisgICAg
ICAgICAgICBlbmRUZXN0KCk7CisgICAgICAgIH07CisKKyAgICAgICAgY2FsbGJhY2sgPSBzcGFu
RW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgIHNwYW4ud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4o
KTsKKyAgICB9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1z
Y3JlZW4tcmVtb3ZlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxs
c2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorRVZFTlQod2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkK
K0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tv
YmplY3QgSFRNTEVsZW1lbnRdJykgT0sKK0VWRU5UKHdlYmtpdGZ1bGxzY3JlZW5jaGFuZ2UpCitF
WFBFQ1RFRCAoZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50ID09ICdbb2Jq
ZWN0IEhUTUxIdG1sRWxlbWVudF0nKSBPSworRU5EIE9GIFRFU1QKKwpJbmRleDogTGF5b3V0VGVz
dHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUuaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlbW92ZS5odG1sCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZW1vdmUuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzNCBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz0iZnVsbC1zY3JlZW4t
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8ZGl2PjxzcGFuPjwvc3Bhbj48L2Rpdj4KKzxzY3JpcHQ+Cisg
ICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBub3QgZW5hYmxl
ZCBvciBpcyBtaXNzaW5nOgorICAgIGlmIChFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1ZXN0
RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICBlbHNlIHsK
KyAgICAgICAgdmFyIGNhbGxiYWNrOworICAgICAgICB2YXIgZnVsbHNjcmVlbkNoYW5nZWQgPSBm
dW5jdGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAg
ICAgICAgICAgICAgIGNhbGxiYWNrKGV2ZW50KQorICAgICAgICB9OworICAgICAgICB3YWl0Rm9y
RXZlbnQoZG9jdW1lbnQsICd3ZWJraXRmdWxsc2NyZWVuY2hhbmdlJywgZnVsbHNjcmVlbkNoYW5n
ZWQpOworICAgIAorICAgICAgICB2YXIgc3BhbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCdzcGFuJylbMF07CisgICAgCisgICAgICAgIHZhciBzcGFuRW50ZXJlZEZ1bGxTY3JlZW4g
PSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgY2FsbGJhY2sgPSBkb2N1bWVudEVudGVy
ZWRGdWxsU2NyZWVuOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJraXRD
dXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCBzcGFuKTsKKyAgICAgICAgICAgIHNwYW4ucGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChzcGFuKTsKKyAgICAgICAgfTsKKyAgICAKKyAgICAgICAgdmFyIGRv
Y3VtZW50RW50ZXJlZEZ1bGxTY3JlZW4gPSBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAg
Y2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJkb2N1bWVudC53ZWJr
aXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQiLCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOwor
ICAgICAgICAgICAgZW5kVGVzdCgpOworICAgICAgICB9OworICAgIAorICAgICAgICBjYWxsYmFj
ayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgc3Bhbi53ZWJraXRSZXF1ZXN0RnVs
bFNjcmVlbigpOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZnVsbHNjcmVl
bi9mdWxsLXNjcmVlbi1yZXF1ZXN0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVlc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi1yZXF1ZXN0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitFVkVOVCh3ZWJraXRmdWxsc2Ny
ZWVuY2hhbmdlKSBURVNUKGRvY3VtZW50LndlYmtpdEZ1bGxTY3JlZW49PXRydWUpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXJlcXVl
c3QuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXJlcXVlc3QuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVs
bC1zY3JlZW4tcmVxdWVzdC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8Ym9k
eT4KKzxzY3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+
CisgICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBpcyBub3QgZW5h
YmxlZCBvciBpcyBtaXNzaW5nOgorICAgIGlmIChFbGVtZW50LnByb3RvdHlwZS53ZWJraXRSZXF1
ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpCisgICAgICAgIGVuZFRlc3QoKTsKKyAgICBlbHNl
IHsKKyAgICAgICAgd2FpdEZvckV2ZW50VGVzdEFuZEVuZChkb2N1bWVudCwgJ3dlYmtpdGZ1bGxz
Y3JlZW5jaGFuZ2UnLCAiZG9jdW1lbnQud2Via2l0RnVsbFNjcmVlbj09dHJ1ZSIpOworICAgICAg
ICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAg
ICB9Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2Z1bGxzY3JlZW4vZnVsbC1zY3JlZW4t
dGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVu
LXRlc3QuanMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXRlc3QuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQxIEBACit2YXIgY29uc29sZSA9
IG51bGw7Cit2YXIgcHJpbnRGdWxsVGVzdERldGFpbHMgPSB0cnVlOyAvLyBUaGlzIGlzIG9wdGlv
bmFseSBzd2l0Y2hlZCBvZiBieSB0ZXN0IHdob3NlIHRlc3RlZCB2YWx1ZXMgY2FuIGRpZmZlci4g
KHNlZSBkaXNhYmxlRnVsbFRlc3REZXRhaWxzUHJpbnRpbmcoKSkKKworbG9nQ29uc29sZSgpOwor
CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRy
b2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERv
bmUoKTsKK30KKworZnVuY3Rpb24gbG9nQ29uc29sZSgpCit7CisgICAgaWYgKCFjb25zb2xlICYm
IGRvY3VtZW50LmJvZHkpIHsKKyAgICAgICAgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpOworICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwor
ICAgIH0KKyAgICByZXR1cm4gY29uc29sZTsKK30KKworZnVuY3Rpb24gdGVzdEFuZEVuZCh0ZXN0
RnVuY1N0cmluZykKK3sKKyAgICB0ZXN0KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVu
Y3Rpb24gdGVzdCh0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgbG9nUmVzdWx0KGV2YWwo
dGVzdEZ1bmNTdHJpbmcpLCAiVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIGlm
IChlbmRpdCkKKyAgICAgICAgZW5kVGVzdCgpOyAgCit9CisKK2Z1bmN0aW9uIHRlc3RFeHBlY3Rl
ZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQsIGNvbXBhcmlzb24pCit7CisgICAgdHJ5IHsKKyAg
ICAgICAgdmFyIG9ic2VydmVkID0gZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAo
ZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KyAgICAKKyAgICBpZiAoY29tcGFyaXNvbiA9PT0gdW5kZWZpbmVkKQorICAgICAgICBjb21wYXJp
c29uID0gJz09JzsKKworICAgIHZhciBzdWNjZXNzID0gZmFsc2U7CisgICAgc3dpdGNoIChjb21w
YXJpc29uKQorICAgIHsKKyAgICAgICAgY2FzZSAnPCc6ICAgc3VjY2VzcyA9IG9ic2VydmVkIDwg
IGV4cGVjdGVkOyBicmVhazsKKyAgICAgICAgY2FzZSAnPD0nOiBzdWNjZXNzID0gb2JzZXJ2ZWQg
PD0gZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+JzogICBzdWNjZXNzID0gb2JzZXJ2
ZWQgPiAgZXhwZWN0ZWQ7IGJyZWFrOworICAgICAgICBjYXNlICc+PSc6IHN1Y2Nlc3MgPSBvYnNl
cnZlZCA+PSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJyE9JzogIHN1Y2Nlc3MgPSBv
YnNlcnZlZCAhPSBleHBlY3RlZDsgYnJlYWs7CisgICAgICAgIGNhc2UgJz09Jzogc3VjY2VzcyA9
IG9ic2VydmVkID09IGV4cGVjdGVkOyBicmVhazsKKyAgICB9CisgICAgCisgICAgcmVwb3J0RXhw
ZWN0ZWQoc3VjY2VzcywgdGVzdEZ1bmNTdHJpbmcsIGNvbXBhcmlzb24sIGV4cGVjdGVkLCBvYnNl
cnZlZCkKK30KKwordmFyIHRlc3ROdW1iZXIgPSAwOworCitmdW5jdGlvbiByZXBvcnRFeHBlY3Rl
ZChzdWNjZXNzLCB0ZXN0RnVuY1N0cmluZywgY29tcGFyaXNvbiwgZXhwZWN0ZWQsIG9ic2VydmVk
KQoreworICAgIHRlc3ROdW1iZXIrKzsKKworICAgIHZhciBtc2cgPSAiVGVzdCAiICsgdGVzdE51
bWJlcjsKKworICAgIGlmIChwcmludEZ1bGxUZXN0RGV0YWlscyB8fCAhc3VjY2VzcykKKyAgICAg
ICAgbXNnID0gIkVYUEVDVEVEICg8ZW0+IiArIHRlc3RGdW5jU3RyaW5nICsgIiA8L2VtPiIgKyBj
b21wYXJpc29uICsgIiAnPGVtPiIgKyBleHBlY3RlZCArICI8L2VtPicpIjsKKworICAgIGlmICgh
c3VjY2VzcykKKyAgICAgICAgbXNnICs9ICAiLCBPQlNFUlZFRCAnPGVtPiIgKyBvYnNlcnZlZCAr
ICI8L2VtPiciOworCisgICAgbG9nUmVzdWx0KHN1Y2Nlc3MsIG1zZyk7Cit9CisKK2Z1bmN0aW9u
IHdhaXRGb3JFdmVudEFuZEVuZChldmVudE5hbWUsIGZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZv
ckV2ZW50KGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZv
ckV2ZW50KGVsZW1lbnQsIGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24g
X2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5U
KCIgKyBldmVudE5hbWUgKyAiKSIpOworCisgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAg
ZnVuYyhldmVudCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBl
bmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWUsIF9ldmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFu
ZEVuZChlbGVtZW50LCBldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JF
dmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9
CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEZhaWwoZWxlbWVudCwgZXZlbnROYW1lKQorewor
ICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZWxlbWVudCwgZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVl
KTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChlbGVtZW50LCBldmVudE5hbWUs
IHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhl
dmVudCkKKyAgICB7CisgICAgICAgIGxvZ1Jlc3VsdChldmFsKHRlc3RGdW5jU3RyaW5nKSwgIkVW
RU5UKCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7Cisg
ICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorICAg
IAorICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNr
KTsKK30KKwordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sK
KyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gbG9nUmVzdWx0KHN1
Y2Nlc3MsIHRleHQpCit7CisgICAgaWYgKHN1Y2Nlc3MpCisgICAgICAgIGNvbnNvbGVXcml0ZSh0
ZXh0ICsgIiA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgIGVsc2UK
KyAgICAgICAgY29uc29sZVdyaXRlKHRleHQgKyAiIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZB
SUw8L3NwYW4+Iik7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0ZXh0KQoreworICAgIGlm
ICh0ZXN0RW5kZWQpCisgICAgICAgIHJldHVybjsKKyAgICBsb2dDb25zb2xlKCkuaW5uZXJIVE1M
ICs9IHRleHQgKyAiPGJyPiI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
TGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10d2ljZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2Ny
ZWVuLXR3aWNlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACitFVkVO
VCh3ZWJraXRmdWxsc2NyZWVuY2hhbmdlKQorRVhQRUNURUQgKGRvY3VtZW50LndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCA9PSAnW29iamVjdCBIVE1MRWxlbWVudF0nKSBPSworRVZFTlQo
d2Via2l0ZnVsbHNjcmVlbmNoYW5nZSkKK0VYUEVDVEVEIChkb2N1bWVudC53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQgPT0gJ1tvYmplY3QgSFRNTEh0bWxFbGVtZW50XScpIE9LCitFTkQg
T0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9mdWxsc2NyZWVuL2Z1bGwtc2NyZWVuLXR3aWNl
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNjcmVlbi10
d2ljZS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZnVsbHNjcmVlbi9mdWxsLXNj
cmVlbi10d2ljZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACis8Ym9keT4KKzxz
Y3JpcHQgc3JjPSJmdWxsLXNjcmVlbi10ZXN0LmpzIj48L3NjcmlwdD4KKzxzcGFuPjwvc3Bhbj4K
KzxzY3JpcHQ+CisgICAgLy8gQmFpbCBvdXQgZWFybHkgaWYgdGhlIGZ1bGwgc2NyZWVuIEFQSSBp
cyBub3QgZW5hYmxlZCBvciBpcyBtaXNzaW5nOgorICAgIGlmIChFbGVtZW50LnByb3RvdHlwZS53
ZWJraXRSZXF1ZXN0RnVsbFNjcmVlbiA9PSB1bmRlZmluZWQpIAorICAgICAgICBlbmRUZXN0KCk7
CisgICAgZWxzZSB7CisgICAgICAgIHZhciBjYWxsYmFjazsKKyAgICAgICAgdmFyIGZ1bGxzY3Jl
ZW5DaGFuZ2VkID0gZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChj
YWxsYmFjaykKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhldmVudCkKKyAgICAgICAgfTsKKyAg
ICAgICAgd2FpdEZvckV2ZW50KGRvY3VtZW50LCAnd2Via2l0ZnVsbHNjcmVlbmNoYW5nZScsIGZ1
bGxzY3JlZW5DaGFuZ2VkKTsKKyAgICAKKyAgICAgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgnc3BhbicpWzBdOworCisgICAgICAgIHZhciBzcGFuRW50ZXJlZEZ1
bGxTY3JlZW4gPSBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1l
bnQud2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50Iiwgc3Bhbik7CisgICAgICAgICAgICBj
YWxsYmFjayA9IGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW47CisgICAgICAgICAgICBkb2N1bWVu
dC5kb2N1bWVudEVsZW1lbnQud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oKTsKKyAgICAgICAgfTsK
KyAgICAKKyAgICAgICAgdmFyIGRvY3VtZW50RW50ZXJlZEZ1bGxTY3JlZW4gPSBmdW5jdGlvbigp
IHsKKyAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgiZG9jdW1lbnQud2Via2l0Q3VycmVudEZ1bGxT
Y3JlZW5FbGVtZW50IiwgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KTsKKyAgICAgICAgICAgIGNh
bGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgfTsKKworICAg
ICAgICBjYWxsYmFjayA9IHNwYW5FbnRlcmVkRnVsbFNjcmVlbjsKKyAgICAgICAgc3Bhbi53ZWJr
aXRSZXF1ZXN0RnVsbFNjcmVlbigpOworICAgIH0KKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vYW5kcm9pZC12OC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2FuZHJvaWQtdjgvU2tpcHBlZAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL2FuZHJvaWQtdjgvU2tpcHBlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
ZnVsbHNjcmVlbi8KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2FuZHJvaWQvU2tpcHBlZAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9hbmRyb2lkL1NraXBwZWQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9hbmRyb2lkL1NraXBwZWQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK2Z1bGxzY3JlZW4vCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS1saW51eC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtLWxpbnV4L1NraXBwZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS1saW51eC9Ta2lwcGVkCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitmdWxsc2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0tbWFjL1Nr
aXBwZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS1tYWMv
U2tpcHBlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZnVsbHNjcmVlbi8KSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi12aXN0YS9Ta2lwcGVkCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi12aXN0YS9Ta2lwcGVkCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luLXZpc3RhL1NraXBw
ZWQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK2Z1bGxzY3JlZW4vCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4teHAvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4teHAvU2tpcHBlZAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi14cC9Ta2lwcGVkCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACitmdWxsc2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL1NraXBwZWQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS13aW4vU2tpcHBlZAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorZnVsbHNj
cmVlbi8KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vU2tpcHBlZAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1NraXBwZWQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEgQEAKK2Z1bGxzY3JlZW4vCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
b29nbGUtY2hyb21lLWxpbnV4NjQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9nb29nbGUtY2hyb21lLWxpbnV4NjQvU2tpcHBlZAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3BsYXRmb3JtL2dvb2dsZS1jaHJvbWUtbGludXg2NC9Ta2lwcGVkCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitmdWxsc2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQJKHJldmlzaW9uIDY1NDYzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBw
ZWQJKHdvcmtpbmcgY29weSkKQEAgLTU5MDksMyArNTkwOSw0IEBAIGZhc3QvanMvc3B1dG5pay9D
b25mb3JtYW5jZS8xNV9OYXRpdmVfT2IKIGZhc3QvanMvc3B1dG5pay9Vbmljb2RlL1VuaWNvZGVf
NTEwL1M3LjZfQTMuMi5odG1sCiBmYXN0L2pzL3NwdXRuaWsvVW5pY29kZS9Vbmljb2RlXzUxMC9T
Ny42X0E1LjNfVDEuaHRtbAogZmFzdC9qcy9zcHV0bmlrL1VuaWNvZGUvVW5pY29kZV81MTAvUzcu
Nl9BNS4zX1QyLmh0bWwKK2Z1bGxzY3JlZW4vCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC1saW51eC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0LWxp
bnV4L1NraXBwZWQJKHJldmlzaW9uIDY1NDYzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQt
bGludXgvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxIEBACitmdWxsc2NyZWVuLwpJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL1NraXBwZWQJKHJldmlzaW9uIDY1NDYzKQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw0IEBACiAKICMgVGhpcyB0ZXN0IHJlcXVpcmVzIG9nZyBjb2RlY3MKIG1lZGlhL21lZGlh
LWNhbi1wbGF5LW9nZy5odG1sCitmdWxsc2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQtd2luL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQt
d2luL1NraXBwZWQJKHJldmlzaW9uIDY1NDYzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQt
d2luL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw0IEBACiAKICMgVGhpcyB0ZXN0
IHJlcXVpcmVzIG9nZyBjb2RlY3MKIG1lZGlhL21lZGlhLWNhbi1wbGF5LW9nZy5odG1sCitmdWxs
c2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA2NTQ2MykKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTU1MDIs
MyArNTUwMiw0IEBAIGh0dHAvdGVzdHMvbG9jYWwvYmxvYi9zZW5kLWRhdGEtYmxvYi5odG0KICMg
W1F0XSBmYXN0L2RvbS9HZW9sb2NhdGlvbi9kaXNjb25uZWN0ZWQtZnJhbWUtcGVybWlzc2lvbi1k
ZW5pZWQuaHRtbCBmYWlscwogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDQwNTkKIGZhc3QvZG9tL0dlb2xvY2F0aW9uL2Rpc2Nvbm5lY3RlZC1mcmFtZS1wZXJtaXNz
aW9uLWRlbmllZC5odG1sCitmdWxsc2NyZWVuLwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
d2luLXdrMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3dpbi13
azIvU2tpcHBlZAkocmV2aXNpb24gNjU0NjMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4t
d2syL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMgKzMxLDQgQEAKICMgV2ViS2l0VGVz
dFJ1bm5lciBuZWVkcyB0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHktcmVsYXRlZCBEUlQgQVBJcwog
IyA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQyMTMxPgogcGxhdGZv
cm0vd2luL2FjY2Vzc2liaWxpdHkKK2Z1bGxzY3JlZW4vCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4v
U2tpcHBlZAkocmV2aXNpb24gNjU0NjMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtOTYxLDMgKzk2MSw0IEBAIGh0dHAvdGVzdHMvbWlzYy93
ZWJ0aW1pbmctdHdvLXJlZGlyZWN0cy4KICMgQXBwbGljYXRpb24gQ2FjaGUgUXVvdGFzCiAjIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzQ1OAogaHR0cC90ZXN0cy9h
cHBjYWNoZS9vcmlnaW4tcXVvdGEuaHRtbAorZnVsbHNjcmVlbi8K
</data>
<flag name="review"
          id="53679"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="54408"
          type_id="3"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65593</attachid>
            <date>2010-08-26 11:53:21 -0700</date>
            <delta_ts>2010-08-27 11:33:31 -0700</delta_ts>
            <desc>Part 6: FullScreen-WebKit</desc>
            <filename>FullScreen-WebKit.patch</filename>
            <type>text/plain</type>
            <size>13726</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDY1
NDYzKQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIzLDcgKzE2MjMsNiBAQAogCQkJaXNhID0gUEJYUHJvamVjdDsKIAkJCWJ1
aWxkQ29uZmlndXJhdGlvbkxpc3QgPSAxNDlDMjgzMjA4OTAyQjBGMDA4QTlFRkMgLyogQnVpbGQg
Y29uZmlndXJhdGlvbiBsaXN0IGZvciBQQlhQcm9qZWN0ICJXZWJLaXQiICovOwogCQkJY29tcGF0
aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3BtZW50UmVnaW9uID0gRW5n
bGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJa25vd25SZWdpb25zID0g
KAogCQkJCUVuZ2xpc2gsCkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJLaXQvbWFjL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM2IEBACisyMDEwLTA3LTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZCBKYXZhU2NyaXB0IEFQSSB0byBhbGxvdyBhIHBhZ2Ug
dG8gZ28gZnVsbHNjcmVlbi4KKyAgICAgICAgcmRhcjovL3Byb2JsZW0vNjg2Nzc5NQorCisgICAg
ICAgIEFkZGVkIGNocm9tZSBjbGllbnQgb3ZlcnJpZGVzIHdoaWNoIHN1cHBvcnQgZW50ZXJpbmcg
YW5kIGV4aXRpbmcgZnVsbCBzY3JlZW4uICBBIG5ldyBwcmVmZXJlbmNlIGhhcworICAgICAgICBi
ZWVuIGFkZGVkIChzZXRGdWxsU2NyZWVuRW5hYmxlZDopIHRvIGNvbnRyb2wgYXQgcnVudGltZSB3
aGV0aGVyIGZ1bGwgc2NyZWVuIHN1cHBvcnQgaXMgZW5hYmxlZCAKKyAgICAgICAgKGRlZmF1bHRz
IHRvIGRpc2FibGVkKS4gIEFkZGVkIGEgbmV3IFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciBjYWxs
YmFjayBvYmplY3Qgd2hpY2ggbm90aWZpZXMgV2ViQ29yZQorICAgICAgICB3aGVuIHRoZSBjaHJv
bWUgaGFzIHN0YXJ0ZWQvZmluaXNoZWQgaXRzIGZ1bGwgc2NyZWVuIGFuaW1hdGlvbi4KKworICAg
ICAgICAqIENvbmZpZ3VyYXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6c3VwcG9y
dHNGdWxsc2NyZWVuRm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OmVudGVy
RnVsbHNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVs
bHNjcmVlbkZvckVsZW1lbnQpOgorICAgICAgICAoLVtXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIg
aW5pdFdpdGhFbGVtZW50Ol0pOgorICAgICAgICAoLVtXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIg
d2Via2l0V2lsbEVudGVyRnVsbFNjcmVlbl0pOgorICAgICAgICAoLVtXZWJLaXRGdWxsU2NyZWVu
TGlzdGVuZXIgd2Via2l0RGlkRW50ZXJGdWxsU2NyZWVuXSk6CisgICAgICAgICgtW1dlYktpdEZ1
bGxTY3JlZW5MaXN0ZW5lciB3ZWJraXRXaWxsRXhpdEZ1bGxTY3JlZW5dKToKKyAgICAgICAgKC1b
V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyIHdlYmtpdERpZEV4aXRGdWxsU2NyZWVuXSk6CisgICAg
ICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaDoKKyAgICAgICAgKiBXZWJW
aWV3L1dlYlByZWZlcmVuY2VzLmg6CisgICAgICAgICogV2ViVmlldy9XZWJQcmVmZXJlbmNlcy5t
bToKKyAgICAgICAgKCtbV2ViUHJlZmVyZW5jZXMgaW5pdGlhbGl6ZV0pOgorICAgICAgICAoLVtX
ZWJQcmVmZXJlbmNlcyBzZXRGdWxsU2NyZWVuRW5hYmxlZDpdKToKKyAgICAgICAgKC1bV2ViUHJl
ZmVyZW5jZXMgZnVsbFNjcmVlbkVuYWJsZWRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlVJRGVs
ZWdhdGVQcml2YXRlLmg6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAo
LVtXZWJWaWV3IF9wcmVmZXJlbmNlc0NoYW5nZWROb3RpZmljYXRpb246XSk6CisKIDIwMTAtMDgt
MTQgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L21hYy9Db25maWd1cmF0aW9ucy9G
ZWF0dXJlRGVmaW5lcy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NvbmZpZ3Vy
YXRpb25zL0ZlYXR1cmVEZWZpbmVzLnhjY29uZmlnCShyZXZpc2lvbiA2NTQ2MykKKysrIFdlYktp
dC9tYWMvQ29uZmlndXJhdGlvbnMvRmVhdHVyZURlZmluZXMueGNjb25maWcJKHdvcmtpbmcgY29w
eSkKQEAgLTcxLDYgKzcxLDcgQEAgRU5BQkxFX0ZJTFRFUlNfbWFjb3N4ID0gRU5BQkxFX0ZJTFRF
UlM7CiAKIEVOQUJMRV9GSUxFX1dSSVRFUiA9IDsKIEVOQUJMRV9GSUxFX1NZU1RFTSA9IDsKK0VO
QUJMRV9GVUxMU0NSRUVOX0FQSSA9IEVOQUJMRV9GVUxMU0NSRUVOX0FQSTsKIEVOQUJMRV9HRU9M
T0NBVElPTiA9IEVOQUJMRV9HRU9MT0NBVElPTjsKIAogRU5BQkxFX0lDT05EQVRBQkFTRSA9ICQo
RU5BQkxFX0lDT05EQVRBQkFTRV8kKFJFQUxfUExBVEZPUk1fTkFNRSkpOwpAQCAtMTIwLDQgKzEy
MSw0IEBAIEVOQUJMRV9YSFRNTE1QID0gOwogRU5BQkxFX1hQQVRIID0gRU5BQkxFX1hQQVRIOwog
RU5BQkxFX1hTTFQgPSBFTkFCTEVfWFNMVDsKIAotRkVBVFVSRV9ERUZJTkVTID0gJChFTkFCTEVf
TElOS19QUkVGRVRDSCkgJChFTkFCTEVfM0RfQ0FOVkFTKSAkKEVOQUJMRV8zRF9SRU5ERVJJTkcp
ICQoRU5BQkxFX0JMT0IpICQoRU5BQkxFX0NIQU5ORUxfTUVTU0FHSU5HKSAkKEVOQUJMRV9DTElF
TlRfQkFTRURfR0VPTE9DQVRJT04pICQoRU5BQkxFX0RBVEFCQVNFKSAkKEVOQUJMRV9EQVRBR1JJ
RCkgJChFTkFCTEVfREFUQUxJU1QpICQoRU5BQkxFX0RFVklDRV9PUklFTlRBVElPTikgJChFTkFC
TEVfRElSRUNUT1JZX1VQTE9BRCkgJChFTkFCTEVfRE9NX1NUT1JBR0UpICQoRU5BQkxFX0VWRU5U
U09VUkNFKSAkKEVOQUJMRV9GSUxURVJTKSAkKEVOQUJMRV9GSUxFX1dSSVRFUikgJChFTkFCTEVf
RklMRV9TWVNURU0pICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09OREFUQUJBU0Up
ICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJBU0UpICQoRU5B
QkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikgJChFTkFCTEVf
TUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElPTlMpICQoRU5B
QkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1NfVEFHKSAkKEVO
QUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09SS0VSUykgJChF
TkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdfQVNfSU1BR0Up
ICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZPTlRTKSAkKEVO
QUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5BQkxFX1ZJREVP
KSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChFTkFCTEVfV01M
KSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9YUEFUSCkgJChF
TkFCTEVfWFNMVCk7CitGRUFUVVJFX0RFRklORVMgPSAkKEVOQUJMRV9MSU5LX1BSRUZFVENIKSAk
KEVOQUJMRV8zRF9DQU5WQVMpICQoRU5BQkxFXzNEX1JFTkRFUklORykgJChFTkFCTEVfQkxPQikg
JChFTkFCTEVfQ0hBTk5FTF9NRVNTQUdJTkcpICQoRU5BQkxFX0NMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikgJChFTkFCTEVfREFUQUJBU0UpICQoRU5BQkxFX0RBVEFHUklEKSAkKEVOQUJMRV9EQVRB
TElTVCkgJChFTkFCTEVfREVWSUNFX09SSUVOVEFUSU9OKSAkKEVOQUJMRV9ESVJFQ1RPUllfVVBM
T0FEKSAkKEVOQUJMRV9ET01fU1RPUkFHRSkgJChFTkFCTEVfRVZFTlRTT1VSQ0UpICQoRU5BQkxF
X0ZJTFRFUlMpICQoRU5BQkxFX0ZJTEVfV1JJVEVSKSAkKEVOQUJMRV9GSUxFX1NZU1RFTSkgJChF
TkFCTEVfRlVMTFNDUkVFTl9BUEkpICQoRU5BQkxFX0dFT0xPQ0FUSU9OKSAkKEVOQUJMRV9JQ09O
REFUQUJBU0UpICQoRU5BQkxFX0lNQUdFX1JFU0laRVIpICQoRU5BQkxFX0lOREVYRURfREFUQUJB
U0UpICQoRU5BQkxFX0lOUFVUX1NQRUVDSCkgJChFTkFCTEVfSkFWQVNDUklQVF9ERUJVR0dFUikg
JChFTkFCTEVfTUFUSE1MKSAkKEVOQUJMRV9NRVRFUl9UQUcpICQoRU5BQkxFX05PVElGSUNBVElP
TlMpICQoRU5BQkxFX09GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykgJChFTkFCTEVfUFJPR1JFU1Nf
VEFHKSAkKEVOQUJMRV9SVUJZKSAkKEVOQUJMRV9TQU5EQk9YKSAkKEVOQUJMRV9TSEFSRURfV09S
S0VSUykgJChFTkFCTEVfU1ZHKSAkKEVOQUJMRV9TVkdfQU5JTUFUSU9OKSAkKEVOQUJMRV9TVkdf
QVNfSU1BR0UpICQoRU5BQkxFX1NWR19ET01fT0JKQ19CSU5ESU5HUykgJChFTkFCTEVfU1ZHX0ZP
TlRTKSAkKEVOQUJMRV9TVkdfRk9SRUlHTl9PQkpFQ1QpICQoRU5BQkxFX1NWR19VU0UpICQoRU5B
QkxFX1ZJREVPKSAkKEVOQUJMRV9XRUJfU09DS0VUUykgJChFTkFCTEVfV0VCX1RJTUlORykgJChF
TkFCTEVfV01MKSAkKEVOQUJMRV9XT1JLRVJTKSAkKEVOQUJMRV9YSFRNTE1QKSAkKEVOQUJMRV9Y
UEFUSCkgJChFTkFCTEVfWFNMVCk7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmgJKHJldmlzaW9uIDY1NDYzKQorKysgV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTY0LDYgKzE2NCwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVudGVyRnVsbHNjcmVlbkZvck5vZGUoV2Vi
Q29yZTo6Tm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBleGl0RnVsbHNjcmVlbkZvck5vZGUoV2Vi
Q29yZTo6Tm9kZSopOwogI2VuZGlmCisgICAgCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQor
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IFdlYkNv
cmU6OkVsZW1lbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVu
dChXZWJDb3JlOjpFbGVtZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudChXZWJDb3JlOjpFbGVtZW50Kik7CisjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJD
b3JlOjpHZW9sb2NhdGlvbiopOwogICAgIHZpcnR1YWwgdm9pZCBjYW5jZWxHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0Rm9yRnJhbWUoV2ViQ29yZTo6RnJhbWUqLCBXZWJDb3JlOjpHZW9sb2Nh
dGlvbiopIHsgfQpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0JKHJldmlzaW9uIDY1NDYzKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJDaHJvbWVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsMTYgQEAgQGlu
dGVyZmFjZSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyIAogLSAoaWQpaW5pdFdpdGhHZW9s
b2NhdGlvbjooR2VvbG9jYXRpb24qKWdlb2xvY2F0aW9uOwogQGVuZAogCisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQorQGludGVyZmFjZSBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgOiBOU09i
amVjdCA8V2ViS2l0RnVsbFNjcmVlbkxpc3RlbmVyPgoreworICAgIFJlZlB0cjxFbGVtZW50PiBf
ZWxlbWVudDsKK30KKworLSAoaWQpaW5pdFdpdGhFbGVtZW50OihFbGVtZW50KillbGVtZW50Owor
QGVuZAorI2VuZGlmCisKIFdlYkNocm9tZUNsaWVudDo6V2ViQ2hyb21lQ2xpZW50KFdlYlZpZXcg
KndlYlZpZXcpIAogICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCiB7CkBAIC04MTUsNiArODI1LDI5
IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbHNjcmVlbkZvck4KIAogI2VuZGlmCiAK
KyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCisKK2Jvb2wgV2ViQ2hyb21lQ2xpZW50OjpzdXBw
b3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50KGNvbnN0IEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
cmV0dXJuIENhbGxVSURlbGVnYXRlUmV0dXJuaW5nQm9vbGVhbihmYWxzZSwgbV93ZWJWaWV3LCBA
c2VsZWN0b3Iod2ViVmlldzpzdXBwb3J0c0Z1bGxTY3JlZW5Gb3JFbGVtZW50OiksIGtpdChjb25z
dF9jYXN0PFdlYkNvcmU6OkVsZW1lbnQqPihlbGVtZW50KSkpOworfQorCit2b2lkIFdlYkNocm9t
ZUNsaWVudDo6ZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorewor
ICAgIFdlYktpdEZ1bGxTY3JlZW5MaXN0ZW5lciogbGlzdGVuZXIgPSBbW1dlYktpdEZ1bGxTY3Jl
ZW5MaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhFbGVtZW50OmVsZW1lbnRdOworICAgIENhbGxVSURl
bGVnYXRlKG1fd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZW50ZXJGdWxsU2NyZWVuRm9yRWxl
bWVudDpsaXN0ZW5lcjopLCBraXQoZWxlbWVudCksIGxpc3RlbmVyKTsKKyAgICBbbGlzdGVuZXIg
cmVsZWFzZV07Cit9CisKK3ZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGl0RnVsbFNjcmVlbkZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIq
IGxpc3RlbmVyID0gW1tXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXIgYWxsb2NdIGluaXRXaXRoRWxl
bWVudDplbGVtZW50XTsKKyAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIEBzZWxlY3Rvcih3
ZWJWaWV3OmV4aXRGdWxsU2NyZWVuRm9yRWxlbWVudDpsaXN0ZW5lcjopLCBraXQoZWxlbWVudCks
IGxpc3RlbmVyKTsKKyAgICBbbGlzdGVuZXIgcmVsZWFzZV07Cit9CisKKyNlbmRpZgorCiB2b2lk
IFdlYkNocm9tZUNsaWVudDo6cmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZvckZyYW1lKEZy
YW1lKiBmcmFtZSwgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKQogewogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKQEAgLTkxOSwzICs5NTIsNDEgQEAgLSAodm9pZClkZW55CiB9CiAK
IEBlbmQKKworI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKK0BpbXBsZW1lbnRhdGlvbiBXZWJL
aXRGdWxsU2NyZWVuTGlzdGVuZXIKKy0gKGlkKWluaXRXaXRoRWxlbWVudDooRWxlbWVudCopZWxl
bWVudAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4g
bmlsOworICAgIAorICAgIF9lbGVtZW50ID0gZWxlbWVudDsKKyAgICByZXR1cm4gc2VsZjsKK30K
KworLSAodm9pZCl3ZWJraXRXaWxsRW50ZXJGdWxsU2NyZWVuCit7CisgICAgaWYgKF9lbGVtZW50
KQorICAgICAgICBfZWxlbWVudC0+ZG9jdW1lbnQoKS0+d2Via2l0V2lsbEVudGVyRnVsbFNjcmVl
bkZvckVsZW1lbnQoX2VsZW1lbnQuZ2V0KCkpOworfQorCistICh2b2lkKXdlYmtpdERpZEVudGVy
RnVsbFNjcmVlbgoreworICAgIGlmIChfZWxlbWVudCkKKyAgICAgICAgX2VsZW1lbnQtPmRvY3Vt
ZW50KCktPndlYmtpdERpZEVudGVyRnVsbFNjcmVlbkZvckVsZW1lbnQoX2VsZW1lbnQuZ2V0KCkp
OworfQorCistICh2b2lkKXdlYmtpdFdpbGxFeGl0RnVsbFNjcmVlbgoreworICAgIGlmIChfZWxl
bWVudCkKKyAgICAgICAgX2VsZW1lbnQtPmRvY3VtZW50KCktPndlYmtpdFdpbGxFeGl0RnVsbFNj
cmVlbkZvckVsZW1lbnQoX2VsZW1lbnQuZ2V0KCkpOworfQorCistICh2b2lkKXdlYmtpdERpZEV4
aXRGdWxsU2NyZWVuCit7CisgICAgaWYgKF9lbGVtZW50KQorICAgICAgICBfZWxlbWVudC0+ZG9j
dW1lbnQoKS0+d2Via2l0RGlkRXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50KF9lbGVtZW50LmdldCgp
KTsKK30KKworQGVuZAorI2VuZGlmCkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
YlN5c3RlbUludGVyZmFjZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYlN5c3RlbUludGVyZmFjZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
ODQsNiArODQsNyBAQCB2b2lkIEluaXRXZWJDb3JlU3lzdGVtSW50ZXJmYWNlKHZvaWQpCiAgICAg
SU5JVChTaWduYWxDRlJlYWRTdHJlYW1IYXNCeXRlcyk7CiAgICAgSU5JVChRVEluY2x1ZGVPbmx5
TW9kZXJuTWVkaWFGaWxlVHlwZXMpOwogICAgIElOSVQoUVRNb3ZpZURhdGFSYXRlKTsKKyAgICBJ
TklUKFFUTW92aWVEaXNhYmxlQ29tcG9uZW50KTsKICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9h
ZGVkKTsKICAgICBJTklUKFFUTW92aWVNYXhUaW1lTG9hZGVkQ2hhbmdlTm90aWZpY2F0aW9uKTsK
ICAgICBJTklUKFFUTW92aWVNYXhUaW1lU2Vla2FibGUpOwpJbmRleDogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlByZWZlcmVuY2VLZXlzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViVmlldy9XZWJQcmVmZXJlbmNlS2V5c1ByaXZhdGUuaAkocmV2aXNpb24gNjU0NjMpCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZUtleXNQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTk5LDYgKzk5LDcgQEAKICNkZWZpbmUgV2ViS2l0SFRNTDVUcmVlQnVpbGRlckVuYWJs
ZWRQcmVmZXJlbmNlS2V5IEAiV2ViS2l0SFRNTDVUcmVlQnVpbGRlckVuYWJsZWQiIC8vIFRlbXBv
cmFyeSwgZG8gbm90IHVzZS4KICNkZWZpbmUgV2ViS2l0UGFnaW5hdGVEdXJpbmdMYXlvdXRFbmFi
bGVkUHJlZmVyZW5jZUtleSBAIldlYktpdFBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZCIKICNk
ZWZpbmUgV2ViS2l0RE5TUHJlZmV0Y2hpbmdFbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdERO
U1ByZWZldGNoaW5nRW5hYmxlZCIKKyNkZWZpbmUgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVm
ZXJlbmNlS2V5IEAiV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWQiCiAjZGVmaW5lIFdlYktpdE1lbW9y
eUluZm9FbmFibGVkUHJlZmVyZW5jZUtleSBAIldlYktpdE1lbW9yeUluZm9FbmFibGVkIgogCiAv
LyBUaGVzZSBhcmUgcHJpdmF0ZSBib3RoIGJlY2F1c2UgY2FsbGVycyBzaG91bGQgYmUgdXNpbmcg
dGhlIGNvdmVyIG1ldGhvZHMgYW5kIGJlY2F1c2UgdGhlCkluZGV4OiBXZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViUHJlZmVyZW5jZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlByZWZlcmVuY2VzLm1tCShyZXZpc2lvbiA2NTQ2MykKKysrIFdlYktpdC9tYWMvV2ViVmlldy9X
ZWJQcmVmZXJlbmNlcy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzY3LDYgKzM2Nyw3IEBAICsgKHZv
aWQpaW5pdGlhbGl6ZQogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdl
YktpdEhUTUw1UGFyc2VyRW5hYmxlZFByZWZlcmVuY2VLZXksCiAgICAgICAgIFtOU051bWJlciBu
dW1iZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0SFRNTDVUcmVlQnVpbGRlckVuYWJsZWRQcmVmZXJl
bmNlS2V5LAogICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVTXSwgIFdlYktpdERO
U1ByZWZldGNoaW5nRW5hYmxlZFByZWZlcmVuY2VLZXksCisgICAgICAgIFtOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpOT10sICAgV2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5LAog
ICAgICAgICBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6Tk9dLCAgIFdlYktpdE1lbW9yeUluZm9F
bmFibGVkUHJlZmVyZW5jZUtleSwKICAgICAgICAgW05TTnVtYmVyIG51bWJlcldpdGhMb25nTG9u
ZzpXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6bm9RdW90YSgpXSwgV2ViS2l0QXBw
bGljYXRpb25DYWNoZVRvdGFsUXVvdGEsCiAgICAgICAgIFtOU051bWJlciBudW1iZXJXaXRoTG9u
Z0xvbmc6V2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6Om5vUXVvdGEoKV0sIFdlYktp
dEFwcGxpY2F0aW9uQ2FjaGVEZWZhdWx0T3JpZ2luUXVvdGEsCkBAIC0xMzY4LDYgKzEzNjksMTYg
QEAgLSAodm9pZClfc2V0UHJlZmVyZW5jZUZvclRlc3RXaXRoVmFsdWU6KAogICAgIFtzZWxmIF9z
ZXRTdHJpbmdWYWx1ZTp2YWx1ZSBmb3JLZXk6a2V5XTsKIH0KIAorLSAodm9pZClzZXRGdWxsU2Ny
ZWVuRW5hYmxlZDooQk9PTClmbGFnCit7CisgICAgW3NlbGYgX3NldEJvb2xWYWx1ZTpmbGFnIGZv
cktleTpXZWJLaXRGdWxsU2NyZWVuRW5hYmxlZFByZWZlcmVuY2VLZXldOworfQorCistIChCT09M
KWZ1bGxTY3JlZW5FbmFibGVkCit7CisgICAgcmV0dXJuIFtzZWxmIF9ib29sVmFsdWVGb3JLZXk6
V2ViS2l0RnVsbFNjcmVlbkVuYWJsZWRQcmVmZXJlbmNlS2V5XTsKK30KKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV2ViUHJlZmVyZW5jZXMgKFdlYkludGVybmFsKQpJbmRleDogV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlByZWZlcmVuY2VzUHJpdmF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9t
YWMvV2ViVmlldy9XZWJQcmVmZXJlbmNlc1ByaXZhdGUuaAkocmV2aXNpb24gNjU0NjMpCisrKyBX
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUHJlZmVyZW5jZXNQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIxMyw0ICsyMTMsMTAgQEAgQGludGVyZmFjZSBXZWJQcmVmZXJlbmNlcyAoV2ViUHJpdmF0
ZSkKIC8vIEZvciBXZWJWaWV3J3MgdXNlIG9ubHkuCiAtICh2b2lkKXdpbGxBZGRUb1dlYlZpZXc7
CiAtICh2b2lkKWRpZFJlbW92ZUZyb21XZWJWaWV3OworCisvLyBGdWxsIHNjcmVlbiBzdXBwb3J0
IGlzIGRlcGVuZGVudCBvbiBXZWJDb3JlL1dlYktpdCBiZWluZworLy8gY29tcGlsZWQgd2l0aCBF
TkFCTEVfRlVMTFNDUkVFTl9BUEkuIAorLSAodm9pZClzZXRGdWxsU2NyZWVuRW5hYmxlZDooQk9P
TClmbGFnOworLSAoQk9PTClmdWxsU2NyZWVuRW5hYmxlZDsKKwogQGVuZApJbmRleDogV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDY1NDYzKQorKysg
V2ViS2l0L21hYy9XZWJWaWV3L1dlYlVJRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTk1LDYgKzk1LDE1IEBAIGVudW0geyAKIC0gKHZvaWQpZGVueTsKIEBlbmQKIAorI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKK0Bwcm90b2NvbCBXZWJLaXRGdWxsU2NyZWVuTGlzdGVuZXI8
TlNPYmplY3Q+CistICh2b2lkKXdlYmtpdFdpbGxFbnRlckZ1bGxTY3JlZW47CistICh2b2lkKXdl
YmtpdERpZEVudGVyRnVsbFNjcmVlbjsKKy0gKHZvaWQpd2Via2l0V2lsbEV4aXRGdWxsU2NyZWVu
OworLSAodm9pZCl3ZWJraXREaWRFeGl0RnVsbFNjcmVlbjsKK0BlbmQKKyNlbmRpZgorCiBAaW50
ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURlbGVnYXRlUHJpdmF0ZSkKIAogLSAodm9pZCl3ZWJWaWV3
OihXZWJWaWV3ICopd2ViVmlldyBhZGRNZXNzYWdlVG9Db25zb2xlOihOU0RpY3Rpb25hcnkgKilt
ZXNzYWdlOwpAQCAtMTY0LDQgKzE3MywxMCBAQCBAaW50ZXJmYWNlIE5TT2JqZWN0IChXZWJVSURl
bGVnYXRlUHJpdmF0CiAqLwogLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHByaW50
RnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CiAKKyNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCist
IChCT09MKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgc3VwcG9ydHNGdWxsU2NyZWVuRm9yRWxl
bWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7CistICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilz
ZW5kZXIgZW50ZXJGdWxsU2NyZWVuRm9yRWxlbWVudDooRE9NRWxlbWVudCAqKWVsZW1lbnQ7Cist
ICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZXhpdEZ1bGxTY3JlZW5Gb3JFbGVtZW50
OihET01FbGVtZW50ICopZWxlbWVudDsKKyNlbmRpZgorCiBAZW5kCkluZGV4OiBXZWJLaXQvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gNjU0NjMpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTQ0MCw2ICsxNDQwLDkgQEAgLSAodm9pZClfcHJlZmVyZW5j
ZXNDaGFuZ2VkTm90aWZpY2F0aW9uOgogICAgIHNldHRpbmdzLT5zZXRIVE1MNVBhcnNlckVuYWJs
ZWQoW3ByZWZlcmVuY2VzIGh0bWw1UGFyc2VyRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRI
VE1MNVRyZWVCdWlsZGVyRW5hYmxlZF9ET19OT1RfVVNFKFtwcmVmZXJlbmNlcyBodG1sNVRyZWVC
dWlsZGVyRW5hYmxlZF0pOwogICAgIHNldHRpbmdzLT5zZXRQYWdpbmF0ZUR1cmluZ0xheW91dEVu
YWJsZWQoW3ByZWZlcmVuY2VzIHBhZ2luYXRlRHVyaW5nTGF5b3V0RW5hYmxlZF0pOworI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKKyAgICBzZXR0aW5ncy0+c2V0RnVsbFNjcmVlbkVuYWJsZWQo
W3ByZWZlcmVuY2VzIGZ1bGxTY3JlZW5FbmFibGVkXSk7CisjZW5kaWYKICAgICBzZXR0aW5ncy0+
c2V0TWVtb3J5SW5mb0VuYWJsZWQoW3ByZWZlcmVuY2VzIG1lbW9yeUluZm9FbmFibGVkXSk7CiAK
ICAgICAvLyBBcHBsaWNhdGlvbiBDYWNoZSBQcmVmZXJlbmNlcyBhcmUgc3RvcmVkIG9uIHRoZSBn
bG9iYWwgY2FjaGUgc3RvcmFnZSBtYW5hZ2VyLCBub3QgaW4gU2V0dGluZ3MuCg==
</data>
<flag name="review"
          id="54407"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
    <flag name="commit-queue"
          id="54600"
          type_id="3"
          status="-"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>