<?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>36562</bug_id>
          
          <creation_ts>2010-03-24 15:29:01 -0700</creation_ts>
          <short_desc>[Chromium] Implement WebFormControlElement and WebSelectElement</short_desc>
          <delta_ts>2010-03-26 12:41:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="James Hawkins">jhawkins</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>203652</commentid>
    <comment_count>0</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-24 15:29:01 -0700</bug_when>
    <thetext>Patch will follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203655</commentid>
    <comment_count>1</comment_count>
      <attachid>51560</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-24 15:36:57 -0700</bug_when>
    <thetext>Created attachment 51560
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203658</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-24 15:38:19 -0700</bug_when>
    <thetext>Attachment 51560 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebInputElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebInputElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebFormElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
Total errors found: 3 in 8 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>203660</commentid>
    <comment_count>3</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-24 15:41:24 -0700</bug_when>
    <thetext>I&apos;m ignoring the style errors, as the new code matches the old.  Let me know if
I should update the entire file to fix the style errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203669</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-24 16:06:13 -0700</bug_when>
    <thetext>Attachment 51560 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1284011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203671</commentid>
    <comment_count>5</comment_count>
      <attachid>51563</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-24 16:14:16 -0700</bug_when>
    <thetext>Created attachment 51563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203675</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-24 16:21:05 -0700</bug_when>
    <thetext>Attachment 51563 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebFormControlElement.h:44:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebFormControlElement.h:49:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebFormElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebSelectElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebSelectElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebInputElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebInputElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 7 in 12 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>203677</commentid>
    <comment_count>7</comment_count>
      <attachid>51564</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-24 16:27:54 -0700</bug_when>
    <thetext>Created attachment 51564
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>203680</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-24 16:32:28 -0700</bug_when>
    <thetext>Attachment 51564 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebFormControlElement.h:49:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebFormElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebSelectElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebInputElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebInputElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 12 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>204252</commentid>
    <comment_count>9</comment_count>
      <attachid>51564</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-25 15:20:07 -0700</bug_when>
    <thetext>Comment on attachment 51564
Patch

&gt; Index: WebKit/chromium/public/WebElement.h
...
&gt; +        WEBKIT_API bool isEnabledFormControl() const;

I wonder... could this just be isFormControl()?  Then, on
WebFormControlElement, could we have an isEnabled() method?

I realize that you are just replicating what WebCore does.
Would it be hard to support the interface I&apos;m recommending?
It seems cleaner to me.


&gt; Index: WebKit/chromium/public/WebFormControlElement.h

&gt; +    WebFormControlElement(const WebFormControlElement&amp; n) : WebElement(n) { }
&gt; +
&gt; +    WebFormControlElement&amp; operator=(const WebFormControlElement&amp; n) { WebElement::assign(n); return *this; }
&gt; +    WEBKIT_API void assign(const WebFormControlElement&amp; n) { WebElement::assign(n); }

nit: n -&gt; e (&quot;e for element&quot;)


&gt; +    WEBKIT_API WebString formControlName() const;
&gt; +    WEBKIT_API WebString formControlType() const;
&gt; +    // Returns the name that should be used for the specified |element| when

nit: insert a new line above this comment


&gt; Index: WebKit/chromium/public/WebInputElement.h
...
&gt; +        WebInputElement(const WebInputElement&amp; n) : WebFormControlElement(n) { }
&gt;  
&gt; +        WebInputElement&amp; operator=(const WebInputElement&amp; n) { WebFormControlElement::assign(n); return *this; }
&gt; +        WEBKIT_API void assign(const WebInputElement&amp; n) { WebFormControlElement::assign(n); }

nit: n -&gt; e (&quot;e for element&quot;)


&gt; Index: WebKit/chromium/public/WebSelectElement.h

&gt; +    WebSelectElement(const WebSelectElement&amp; n) : WebFormControlElement(n) { }
&gt; +
&gt; +    WebSelectElement&amp; operator=(const WebSelectElement&amp; n) { WebFormControlElement::assign(n); return *this; }
&gt; +    WEBKIT_API void assign(const WebSelectElement&amp; n) { WebFormControlElement::assign(n); }

nit: n -&gt; e (&quot;e for element&quot;)


&gt; +
&gt; +    WEBKIT_API void setValue(const WebString&amp; value);

nit: webkit style says to not name the parameter here since the name
doesn&apos;t add information.


&gt; Index: WebKit/chromium/src/WebSelectElement.cpp

&gt; +void WebSelectElement::setAutofilled(bool)
&gt; +{
&gt; +
&gt; +}

^^^ should this have an implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204257</commentid>
    <comment_count>10</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-25 15:36:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 51564 [details])
&gt; &gt; Index: WebKit/chromium/public/WebElement.h
&gt; ...
&gt; &gt; +        WEBKIT_API bool isEnabledFormControl() const;
&gt; 
&gt; I wonder... could this just be isFormControl()?  Then, on
&gt; WebFormControlElement, could we have an isEnabled() method?
&gt; 
&gt; I realize that you are just replicating what WebCore does.
&gt; Would it be hard to support the interface I&apos;m recommending?
&gt; It seems cleaner to me.
&gt; 

Yes, I agree with you.  I&apos;ve made this change.

&gt; &gt; Index: WebKit/chromium/public/WebFormControlElement.h
&gt; 
&gt; &gt; +    WebFormControlElement(const WebFormControlElement&amp; n) : WebElement(n) { }
&gt; &gt; +
&gt; &gt; +    WebFormControlElement&amp; operator=(const WebFormControlElement&amp; n) { WebElement::assign(n); return *this; }
&gt; &gt; +    WEBKIT_API void assign(const WebFormControlElement&amp; n) { WebElement::assign(n); }
&gt; 
&gt; nit: n -&gt; e (&quot;e for element&quot;)
&gt; 

Done.

&gt; &gt; +    WEBKIT_API WebString formControlName() const;
&gt; &gt; +    WEBKIT_API WebString formControlType() const;
&gt; &gt; +    // Returns the name that should be used for the specified |element| when
&gt; 
&gt; nit: insert a new line above this comment
&gt; 

Done.

&gt; &gt; Index: WebKit/chromium/public/WebInputElement.h
&gt; ...
&gt; &gt; +        WebInputElement(const WebInputElement&amp; n) : WebFormControlElement(n) { }
&gt; &gt;  
&gt; &gt; +        WebInputElement&amp; operator=(const WebInputElement&amp; n) { WebFormControlElement::assign(n); return *this; }
&gt; &gt; +        WEBKIT_API void assign(const WebInputElement&amp; n) { WebFormControlElement::assign(n); }
&gt; 
&gt; nit: n -&gt; e (&quot;e for element&quot;)
&gt; 

Done.

&gt; &gt; Index: WebKit/chromium/public/WebSelectElement.h
&gt; 
&gt; &gt; +    WebSelectElement(const WebSelectElement&amp; n) : WebFormControlElement(n) { }
&gt; &gt; +
&gt; &gt; +    WebSelectElement&amp; operator=(const WebSelectElement&amp; n) { WebFormControlElement::assign(n); return *this; }
&gt; &gt; +    WEBKIT_API void assign(const WebSelectElement&amp; n) { WebFormControlElement::assign(n); }
&gt; 
&gt; nit: n -&gt; e (&quot;e for element&quot;)
&gt; 

Done.

&gt; 
&gt; &gt; +
&gt; &gt; +    WEBKIT_API void setValue(const WebString&amp; value);
&gt; 
&gt; nit: webkit style says to not name the parameter here since the name
&gt; doesn&apos;t add information.
&gt; 

This is the style rule I really need to ingrain in my head.  Done.

&gt; 
&gt; &gt; Index: WebKit/chromium/src/WebSelectElement.cpp
&gt; 
&gt; &gt; +void WebSelectElement::setAutofilled(bool)
&gt; &gt; +{
&gt; &gt; +
&gt; &gt; +}
&gt; 
&gt; ^^^ should this have an implementation?

I removed the method, as I&apos;m not sure it&apos;s necessary, nor do I know how it would be implemented (in the UX sense) if it were.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204258</commentid>
    <comment_count>11</comment_count>
      <attachid>51684</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-25 15:37:29 -0700</bug_when>
    <thetext>Created attachment 51684
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204260</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-25 15:43:34 -0700</bug_when>
    <thetext>Attachment 51684 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebFormControlElement.h:49:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebFormElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebSelectElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebInputElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebInputElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 12 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>204269</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-25 15:53:17 -0700</bug_when>
    <thetext>Attachment 51684 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1337006</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204273</commentid>
    <comment_count>14</comment_count>
      <attachid>51686</attachid>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-25 15:58:46 -0700</bug_when>
    <thetext>Created attachment 51686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204277</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-25 16:04:54 -0700</bug_when>
    <thetext>Attachment 51686 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/chromium/public/WebFormControlElement.h:49:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebFormElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebSelectElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
WebKit/chromium/public/WebInputElement.h:43:  Code inside a namespace should not be indented.  [whitespace/indent] [4]
WebKit/chromium/public/WebInputElement.h:48:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 5 in 12 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>204430</commentid>
    <comment_count>16</comment_count>
      <attachid>51686</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-03-25 23:16:17 -0700</bug_when>
    <thetext>Comment on attachment 51686
Patch

&gt; Index: WebKit/chromium/public/WebFormControlElement.h
...
&gt; +    WebFormControlElement&amp; operator=(const WebFormControlElement&amp; e) { WebElement::assign(e); return *this; }

The style bot is saying that this should be rewritten as:

    WebFormControlElement&amp; operator=(const WebFormControlElement&amp; e)
    {
        WebElement::assign(e);
        return *this;
    }

R=me otherwise</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>204718</commentid>
    <comment_count>17</comment_count>
    <who name="James Hawkins">jhawkins</who>
    <bug_when>2010-03-26 12:41:09 -0700</bug_when>
    <thetext>Committed r56637: &lt;http://trac.webkit.org/changeset/56637&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51560</attachid>
            <date>2010-03-24 15:36:57 -0700</date>
            <delta_ts>2010-03-24 16:14:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36562-20100324153656.patch</filename>
            <type>text/plain</type>
            <size>9772</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDMtMjQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViRm9ybUNv
bnRyb2xFbGVtZW50IGFuZCBXZWJTZWxlY3RFbGVtZW50LiAgQWRkCisgICAgICAgIGEgZ2V0Rm9y
bUNvbnRyb2xFbGVtZW50cyBtZXRob2QgdG8gV2ViRm9ybUVsZW1lbnQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTYyCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYkZvcm1FbGVtZW50Lmg6CisgICAgICAgICogcHVibGljL1dlYklucHV0RWxlbWVudC5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJJbnB1dEVsZW1lbnQ6OldlYklucHV0RWxlbWVudCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6b3BlcmF0b3I9KToKKyAgICAgICAgKFdl
YktpdDo6V2ViSW5wdXRFbGVtZW50Ojphc3NpZ24pOgorICAgICAgICAqIHNyYy9XZWJFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRWxlbWVudDo6aXNFbmFibGVkRm9ybUNvbnRyb2wp
OgorICAgICAgICAqIHNyYy9XZWJGb3JtRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJvbEVsZW1lbnRzKToKKyAgICAgICAgKiBzcmMvV2Vi
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpXZWJJ
bnB1dEVsZW1lbnQpOgorCiAyMDEwLTAzLTI0ICBKb2huIEFiZC1FbC1NYWxlayAgPGphbUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gRmlzaGVyLgpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsNyBAQAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViRnJhbWUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJGcmFtZUNsaWVudC5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNoZS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViR2x5
cGhDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNE
LmgnLApAQCAtMTcyLDYgKzE3Myw3IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWFy
Y2hhYmxlRm9ybURhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eU9y
aWdpbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNlY3VyaXR5UG9saWN5LmgnLAor
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VsZWN0RWxlbWVudC5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNldHRpbmdzLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2hh
cmVkV29ya2VyLmgnLApAQCAtMzEwLDYgKzMxMiw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2Vi
Rm9udENhY2hlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJGb3JtQ29udHJvbEVsZW1l
bnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvcm1FbGVtZW50LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYkZyYW1lSW1wbC5oJywKQEAgLTM1Nyw2ICszNjAsNyBAQAogICAgICAgICAgICAgICAgICdz
cmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJT
ZWN1cml0eU9yaWdpbi5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VjdXJpdHlQb2xp
Y3kuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTZXR0aW5nc0ltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQu
aAkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAg
ICAgICAgV2ViRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYkVsZW1lbnQmIGUpIHsgV2ViTm9k
ZTo6YXNzaWduKGUpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAgdm9pZCBhc3NpZ24oY29uc3Qg
V2ViRWxlbWVudCYgZSkgeyBXZWJOb2RlOjphc3NpZ24oZSk7IH0KIAorICAgICAgICBXRUJLSVRf
QVBJIGJvb2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQ
SSBXZWJTdHJpbmcgdGFnTmFtZSgpIGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIGJvb2wgaGFz
VGFnTmFtZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSBib29s
IGhhc0F0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAjaWZuZGVmIFdlYkZvcm1FbGVtZW50X2gKICNkZWZpbmUgV2ViRm9ybUVsZW1lbnRf
aAogCi0jaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCkBA
IC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEhUTUxGb3JtRWxlbWVu
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisKKyAgICBjbGFzcyBXZWJJbnB1dEVsZW1l
bnQ7CisgICAgY2xhc3MgV2ViRm9ybUNvbnRyb2xFbGVtZW50OworCiAgICAgLy8gQSBjb250YWlu
ZXIgZm9yIHBhc3NpbmcgYXJvdW5kIGEgcmVmZXJlbmNlIHRvIGEgZm9ybSBlbGVtZW50LiAgUHJv
dmlkZXMKICAgICAvLyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtLgogICAgIGNsYXNz
IFdlYkZvcm1FbGVtZW50IDogcHVibGljIFdlYkVsZW1lbnQgewpAQCAtNjIsNyArNjYsOSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHN1Ym1pdCgpOwogICAg
ICAgICAvLyBGSVhNRTogRGVwcmVjYXRlIGFuZCByZXBsYWNlIHdpdGggV2ViVmVjdG9yPFdlYkVs
ZW1lbnQ+LgogICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZ2V0TmFtZWRFbGVtZW50cyhjb25zdCBX
ZWJTdHJpbmcmLCBXZWJWZWN0b3I8V2ViTm9kZT4mKTsKKyAgICAgICAgLy8gREVQUkVDQVRFRDog
UmVwbGFjZWQgYnkgZ2V0Rm9ybUNvbnRyb2xFbGVtZW50cy4KICAgICAgICAgV0VCS0lUX0FQSSB2
b2lkIGdldElucHV0RWxlbWVudHMoV2ViVmVjdG9yPFdlYklucHV0RWxlbWVudD4mKSBjb25zdDsK
KyAgICAgICAgV0VCS0lUX0FQSSB2b2lkIGdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9y
PFdlYkZvcm1Db250cm9sRWxlbWVudD4mKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgICAgICBXZWJGb3JtRWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50PiYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
bnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RWxlbWVudC5oCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgV2ViSW5wdXRFbGVtZW50X2gKICNkZWZpbmUgV2ViSW5wdXRFbGVtZW50X2gKIAotI2luY2x1
ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGb3JtQ29udHJvbEVsZW1lbnQuaCIKIAog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1M
SW5wdXRFbGVtZW50OyB9CkBAIC00MCwxMyArNDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBIVE1MSW5wdXRFbGVtZQogbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAvLyBQcm92aWRl
cyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGlucHV0IGVsZW1l
bnQgbm9kZS4KLSAgICBjbGFzcyBXZWJJbnB1dEVsZW1lbnQgOiBwdWJsaWMgV2ViRWxlbWVudCB7
CisgICAgY2xhc3MgV2ViSW5wdXRFbGVtZW50IDogcHVibGljIFdlYkZvcm1Db250cm9sRWxlbWVu
dCB7CiAgICAgcHVibGljOgotICAgICAgICBXZWJJbnB1dEVsZW1lbnQoKSA6IFdlYkVsZW1lbnQo
KSB7IH0KLSAgICAgICAgV2ViSW5wdXRFbGVtZW50KGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikg
OiBXZWJFbGVtZW50KG4pIHsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQoKSA6IFdlYkZvcm1D
b250cm9sRWxlbWVudCgpIHsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQoY29uc3QgV2ViSW5w
dXRFbGVtZW50JiBuKSA6IFdlYkZvcm1Db250cm9sRWxlbWVudChuKSB7IH0KIAotICAgICAgICBX
ZWJJbnB1dEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2Vi
RWxlbWVudDo6YXNzaWduKG4pOyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgV0VCS0lUX0FQSSB2
b2lkIGFzc2lnbihjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2ViRWxlbWVudDo6YXNzaWdu
KG4pOyB9CisgICAgICAgIFdlYklucHV0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYklucHV0
RWxlbWVudCYgbikgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihuKTsgcmV0dXJuICp0
aGlzOyB9CisgICAgICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW5wdXRFbGVt
ZW50JiBuKSB7IFdlYkZvcm1Db250cm9sRWxlbWVudDo6YXNzaWduKG4pOyB9CiAKICAgICAgICAg
ZW51bSBJbnB1dFR5cGUgewogICAgICAgICAgICAgVGV4dCA9IDAsCkBAIC03OCw3ICs3OCw2IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRfQVBJIGJvb2wgYXV0b0NvbXBsZXRl
KCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIElucHV0VHlwZSBpbnB1dFR5cGUoKSBjb25zdDsK
LSAgICAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAg
ICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0OwogICAgICAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpOwogICAgICAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0VmFsdWUoY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CkBAIC04NiwxMCAr
ODUsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRB
dXRvZmlsbGVkKGJvb2wpOwogICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZGlzcGF0Y2hGb3JtQ29u
dHJvbENoYW5nZUV2ZW50KCk7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRTZWxlY3Rpb25S
YW5nZShpbnQsIGludCk7CisgICAgICAgIC8vIERFUFJFQ0FURUQ6IFRoZSBmb2xsb3dpbmcgdHdv
IG1ldGhvZHMgaGF2ZSBiZWVuIG1vdmVkIHRvIFdlYkZvcm1Db250cm9sRWxlbWVudC4KICAgICAg
ICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgICAgICAvLyBSZXR1cm5z
IHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgfGVsZW1lbnR8
IHdoZW4KLSAgICAgICAgLy8gc3RvcmluZyBhdXRvZmlsbCBkYXRhLiAgVGhpcyBpcyBlaXRoZXIg
dGhlIGZpZWxkIG5hbWUgb3IgaXRzIGlkLCBhbiBlbXB0eQotICAgICAgICAvLyBzdHJpbmcgaWYg
aXQgaGFzIG5vIG5hbWUgYW5kIG5vIGlkLgorICAgICAgICAvLyBzdG9yaW5nIEF1dG9GaWxsIGRh
dGEuICBUaGlzIGlzIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciBpdHMgaWQsIGFuCisgICAgICAg
IC8vIGVtcHR5IHN0cmluZyBpZiBpdCBoYXMgbm8gbmFtZSBhbmQgbm8gaWQuCiAgICAgICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIG5hbWVGb3JBdXRvZmlsbCgpIGNvbnN0OwogCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAJKHJldmlz
aW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkVsZW1lbnQ6OmlzRW5hYmxlZEZvcm1Db250cm9s
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVudD4oKS0+aXNFbmFibGVk
Rm9ybUNvbnRyb2woKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnRhZ05hbWUoKSBjb25z
dAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVtZW50PigpLT50YWdOYW1lKCk7CkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gNTY0NjIpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzUsNiArMzUsOCBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUg
IkhUTUxJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJX
ZWJGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNp
bmNsdWRlICJXZWJTdHJpbmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgpAQCAtODgsNiArOTAsMTggQEAgdm9pZCBXZWJGb3JtRWxlbWVudDo6Z2V0
SW5wdXRFbGVtZW50cyhXZQogICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3Zv
aWQgV2ViRm9ybUVsZW1lbnQ6OmdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9yPFdlYkZv
cm1Db250cm9sRWxlbWVudD4mIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRm9ybUVs
ZW1lbnQqIGZvcm0gPSBjb25zdFVud3JhcDxIVE1MRm9ybUVsZW1lbnQ+KCk7CisgICAgVmVjdG9y
PFJlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiA+IHRlbXBWZWN0b3I7CisgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBmb3JtLT5mb3JtRWxlbWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAg
ICAgaWYgKGZvcm0tPmZvcm1FbGVtZW50c1tpXS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6aW5w
dXRUYWcpCisgICAgICAgICAgICB8fCBmb3JtLT5mb3JtRWxlbWVudHNbaV0tPmhhc0xvY2FsTmFt
ZShIVE1MTmFtZXM6OnNlbGVjdFRhZykpCisgICAgICAgICAgICB0ZW1wVmVjdG9yLmFwcGVuZChm
b3JtLT5mb3JtRWxlbWVudHNbaV0pOworICAgIH0KKyAgICByZXN1bHQuYXNzaWduKHRlbXBWZWN0
b3IpOworfQorCiBXZWJGb3JtRWxlbWVudDo6V2ViRm9ybUVsZW1lbnQoY29uc3QgUGFzc1JlZlB0
cjxIVE1MRm9ybUVsZW1lbnQ+JiBlKQogICAgIDogV2ViRWxlbWVudChlKQogewpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gNTY0NjIpCisrKyBX
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTU1LDExICs1NSw2IEBAIFdlYklucHV0RWxlbWVudDo6SW5wdXRUeXBlIFdlYklucHV0RWxlbWUK
ICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SW5wdXRUeXBlPihjb25zdFVud3JhcDxIVE1MSW5wdXRF
bGVtZW50PigpLT5pbnB1dFR5cGUoKSk7CiB9CiAKLVdlYlN0cmluZyBXZWJJbnB1dEVsZW1lbnQ6
OmZvcm1Db250cm9sVHlwZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxJ
bnB1dEVsZW1lbnQ+KCktPmZvcm1Db250cm9sVHlwZSgpOwotfQotCiBib29sIFdlYklucHV0RWxl
bWVudDo6aXNBY3RpdmF0ZWRTdWJtaXQoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3Jh
cDxIVE1MSW5wdXRFbGVtZW50PigpLT5pc0FjdGl2YXRlZFN1Ym1pdCgpOwpAQCAtMTE0LDcgKzEw
OSw3IEBAIFdlYlN0cmluZyBXZWJJbnB1dEVsZW1lbnQ6Om5hbWVGb3JBdXRvZmkKIH0KIAogV2Vi
SW5wdXRFbGVtZW50OjpXZWJJbnB1dEVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MSW5wdXRF
bGVtZW50PiYgZWxlbSkKLSAgICA6IFdlYkVsZW1lbnQoZWxlbSkKKyAgICA6IFdlYkZvcm1Db250
cm9sRWxlbWVudChlbGVtKQogewogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51563</attachid>
            <date>2010-03-24 16:14:16 -0700</date>
            <delta_ts>2010-03-24 16:27:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36562-20100324161415.patch</filename>
            <type>text/plain</type>
            <size>22896</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMjQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViRm9ybUNv
bnRyb2xFbGVtZW50IGFuZCBXZWJTZWxlY3RFbGVtZW50LiAgQWRkCisgICAgICAgIGEgZ2V0Rm9y
bUNvbnRyb2xFbGVtZW50cyBtZXRob2QgdG8gV2ViRm9ybUVsZW1lbnQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTYyCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6V2ViSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnB1dEVsZW1lbnQ6OmFzc2lnbik6CisgICAgICAgICogcHVibGljL1dlYlNlbGVjdEVsZW1l
bnQuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJv
bEVsZW1lbnRzKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpXZWJJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHNy
Yy9XZWJTZWxlY3RFbGVtZW50LmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMjQgIEpvaG4gQWJkLUVs
LU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGcmFtZS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hl
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHbHlwaENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCcsCkBAIC0xNzIsNiArMTczLDcgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNlY3VyaXR5T3JpZ2luLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2Vj
dXJpdHlQb2xpY3kuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaCcsCkBAIC0zMTAsNiArMzEyLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJGb250Q2FjaGUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLApAQCAtMzU3LDYgKzM2MCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU2VsZWN0
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICBXZWJFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViRWxl
bWVudCYgZSkgeyBXZWJOb2RlOjphc3NpZ24oZSk7IHJldHVybiAqdGhpczsgfQogICAgICAgICB2
b2lkIGFzc2lnbihjb25zdCBXZWJFbGVtZW50JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgfQog
CisgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0Owog
ICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CiAgICAgICAgIFdF
QktJVF9BUEkgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwogICAgICAg
ICBXRUJLSVRfQVBJIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9ybUNvbnRy
b2xFbGVtZW50X2gKKyNkZWZpbmUgV2ViRm9ybUNvbnRyb2xFbGVtZW50X2gKKworI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyAgICAvLyBQcm92aWRlcyBy
ZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGZvcm0gY29udHJvbCBl
bGVtZW50IG5vZGUuCisgICAgY2xhc3MgV2ViRm9ybUNvbnRyb2xFbGVtZW50IDogcHVibGljIFdl
YkVsZW1lbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgV2ViRm9ybUNvbnRyb2xFbGVtZW50KCkg
OiBXZWJFbGVtZW50KCkgeyB9CisgICAgICAgIFdlYkZvcm1Db250cm9sRWxlbWVudChjb25zdCBX
ZWJGb3JtQ29udHJvbEVsZW1lbnQmIG4pIDogV2ViRWxlbWVudChuKSB7IH0KKworICAgICAgICBX
ZWJGb3JtQ29udHJvbEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXZWJGb3JtQ29udHJvbEVsZW1l
bnQmIG4pIHsgV2ViRWxlbWVudDo6YXNzaWduKG4pOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAg
V0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIG4pIHsg
V2ViRWxlbWVudDo6YXNzaWduKG4pOyB9CisKKyAgICAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcg
Zm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7CisgICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0OworICAgICAgICAvLyBSZXR1cm5zIHRoZSBuYW1lIHRoYXQg
c2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgfGVsZW1lbnR8IHdoZW4KKyAgICAgICAg
Ly8gc3RvcmluZyBhdXRvZmlsbCBkYXRhLiAgVGhpcyBpcyBlaXRoZXIgdGhlIGZpZWxkIG5hbWUg
b3IgaXRzIGlkLCBhbiBlbXB0eQorICAgICAgICAvLyBzdHJpbmcgaWYgaXQgaGFzIG5vIG5hbWUg
YW5kIG5vIGlkLgorICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lRm9yQXV0b2ZpbGwo
KSBjb25zdDsKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgICAgICBXZWJGb3JtQ29u
dHJvbEVsZW1lbnQoY29uc3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtQ29udHJv
bEVsZW1lbnQ+Jik7CisgICAgICAgIFdlYkZvcm1Db250cm9sRWxlbWVudCYgb3BlcmF0b3I9KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiYpOwor
ICAgICAgICBvcGVyYXRvciBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9s
RWxlbWVudD4oKSBjb25zdDsKKyNlbmRpZgorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYktp
dAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViRm9ybUNvbnRyb2xFbGVtZW50LmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAg
ICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCShyZXZp
c2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRlZiBXZWJGb3JtRWxlbWVudF9o
CiAjZGVmaW5lIFdlYkZvcm1FbGVtZW50X2gKIAotI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5o
IgorI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJWZWN0b3IuaCIKIAogI2lm
IFdFQktJVF9JTVBMRU1FTlRBVElPTgpAQCAtMzksNiArMzksMTAgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgeyBjbGFzcyBIVE1MRm9ybUVsZW1lbgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewor
CisgICAgY2xhc3MgV2ViSW5wdXRFbGVtZW50OworICAgIGNsYXNzIFdlYkZvcm1Db250cm9sRWxl
bWVudDsKKwogICAgIC8vIEEgY29udGFpbmVyIGZvciBwYXNzaW5nIGFyb3VuZCBhIHJlZmVyZW5j
ZSB0byBhIGZvcm0gZWxlbWVudC4gIFByb3ZpZGVzCiAgICAgLy8gc29tZSBpbmZvcm1hdGlvbiBh
Ym91dCB0aGUgZm9ybS4KICAgICBjbGFzcyBXZWJGb3JtRWxlbWVudCA6IHB1YmxpYyBXZWJFbGVt
ZW50IHsKQEAgLTYyLDcgKzY2LDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJ
VF9BUEkgdm9pZCBzdWJtaXQoKTsKICAgICAgICAgLy8gRklYTUU6IERlcHJlY2F0ZSBhbmQgcmVw
bGFjZSB3aXRoIFdlYlZlY3RvcjxXZWJFbGVtZW50Pi4KICAgICAgICAgV0VCS0lUX0FQSSB2b2lk
IGdldE5hbWVkRWxlbWVudHMoY29uc3QgV2ViU3RyaW5nJiwgV2ViVmVjdG9yPFdlYk5vZGU+Jik7
CisgICAgICAgIC8vIERFUFJFQ0FURUQ6IFJlcGxhY2VkIGJ5IGdldEZvcm1Db250cm9sRWxlbWVu
dHMuCiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBnZXRJbnB1dEVsZW1lbnRzKFdlYlZlY3RvcjxX
ZWJJbnB1dEVsZW1lbnQ+JikgY29uc3Q7CisgICAgICAgIFdFQktJVF9BUEkgdm9pZCBnZXRGb3Jt
Q29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29udHJvbEVsZW1lbnQ+JikgY29uc3Q7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICAgICAgV2ViRm9ybUVsZW1lbnQoY29u
c3QgV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OkhUTUxGb3JtRWxlbWVudD4mKTsKSW5kZXg6IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gNTY0NjIpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0zMSw3ICszMSw3IEBACiAjaWZuZGVmIFdlYklucHV0RWxlbWVudF9oCiAjZGVmaW5lIFdl
YklucHV0RWxlbWVudF9oCiAKLSNpbmNsdWRlICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2Vi
Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KIG5hbWVz
cGFjZSBXZWJDb3JlIHsgY2xhc3MgSFRNTElucHV0RWxlbWVudDsgfQpAQCAtNDAsMTMgKzQwLDEz
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSFRNTElucHV0RWxlbWUKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiAgICAgLy8gUHJvdmlkZXMgcmVhZG9ubHkgYWNjZXNzIHRvIHNvbWUgcHJvcGVy
dGllcyBvZiBhIERPTSBpbnB1dCBlbGVtZW50IG5vZGUuCi0gICAgY2xhc3MgV2ViSW5wdXRFbGVt
ZW50IDogcHVibGljIFdlYkVsZW1lbnQgeworICAgIGNsYXNzIFdlYklucHV0RWxlbWVudCA6IHB1
YmxpYyBXZWJGb3JtQ29udHJvbEVsZW1lbnQgewogICAgIHB1YmxpYzoKLSAgICAgICAgV2ViSW5w
dXRFbGVtZW50KCkgOiBXZWJFbGVtZW50KCkgeyB9Ci0gICAgICAgIFdlYklucHV0RWxlbWVudChj
b25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIDogV2ViRWxlbWVudChuKSB7IH0KKyAgICAgICAgV2Vi
SW5wdXRFbGVtZW50KCkgOiBXZWJGb3JtQ29udHJvbEVsZW1lbnQoKSB7IH0KKyAgICAgICAgV2Vi
SW5wdXRFbGVtZW50KGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikgOiBXZWJGb3JtQ29udHJvbEVs
ZW1lbnQobikgeyB9CiAKLSAgICAgICAgV2ViSW5wdXRFbGVtZW50JiBvcGVyYXRvcj0oY29uc3Qg
V2ViSW5wdXRFbGVtZW50JiBuKSB7IFdlYkVsZW1lbnQ6OmFzc2lnbihuKTsgcmV0dXJuICp0aGlz
OyB9Ci0gICAgICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW5wdXRFbGVtZW50
JiBuKSB7IFdlYkVsZW1lbnQ6OmFzc2lnbihuKTsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQm
IG9wZXJhdG9yPShjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2ViRm9ybUNvbnRyb2xFbGVt
ZW50Ojphc3NpZ24obik7IHJldHVybiAqdGhpczsgfQorICAgICAgICBXRUJLSVRfQVBJIHZvaWQg
YXNzaWduKGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6
OmFzc2lnbihuKTsgfQogCiAgICAgICAgIGVudW0gSW5wdXRUeXBlIHsKICAgICAgICAgICAgIFRl
eHQgPSAwLApAQCAtNzgsNyArNzgsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VC
S0lUX0FQSSBib29sIGF1dG9Db21wbGV0ZSgpIGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIGJv
b2wgaXNFbmFibGVkRm9ybUNvbnRyb2woKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSBJbnB1
dFR5cGUgaW5wdXRUeXBlKCkgY29uc3Q7Ci0gICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGZv
cm1Db250cm9sVHlwZSgpIGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIGJvb2wgaXNBY3RpdmF0
ZWRTdWJtaXQoKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHNldEFjdGl2YXRlZFN1
Ym1pdChib29sKTsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHNldFZhbHVlKGNvbnN0IFdlYlN0
cmluZyYgdmFsdWUpOwpAQCAtODYsMTAgKzg1LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICBXRUJLSVRfQVBJIHZvaWQgc2V0QXV0b2ZpbGxlZChib29sKTsKICAgICAgICAgV0VCS0lU
X0FQSSB2b2lkIGRpc3BhdGNoRm9ybUNvbnRyb2xDaGFuZ2VFdmVudCgpOwogICAgICAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0U2VsZWN0aW9uUmFuZ2UoaW50LCBpbnQpOworICAgICAgICAvLyBERVBS
RUNBVEVEOiBUaGUgZm9sbG93aW5nIHR3byBtZXRob2RzIGhhdmUgYmVlbiBtb3ZlZCB0byBXZWJG
b3JtQ29udHJvbEVsZW1lbnQuCiAgICAgICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIG5hbWUoKSBj
b25zdDsKICAgICAgICAgLy8gUmV0dXJucyB0aGUgbmFtZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZv
ciB0aGUgc3BlY2lmaWVkIHxlbGVtZW50fCB3aGVuCi0gICAgICAgIC8vIHN0b3JpbmcgYXV0b2Zp
bGwgZGF0YS4gIFRoaXMgaXMgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIGl0cyBpZCwgYW4gZW1w
dHkKLSAgICAgICAgLy8gc3RyaW5nIGlmIGl0IGhhcyBubyBuYW1lIGFuZCBubyBpZC4KKyAgICAg
ICAgLy8gc3RvcmluZyBBdXRvRmlsbCBkYXRhLiAgVGhpcyBpcyBlaXRoZXIgdGhlIGZpZWxkIG5h
bWUgb3IgaXRzIGlkLCBhbgorICAgICAgICAvLyBlbXB0eSBzdHJpbmcgaWYgaXQgaGFzIG5vIG5h
bWUgYW5kIG5vIGlkLgogICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lRm9yQXV0b2Zp
bGwoKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgpJbmRleDogV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDApCisrKyBXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViU2VsZWN0RWxlbWVudF9oCisjZGVmaW5lIFdlYlNlbGVjdEVsZW1l
bnRfaAorCisjaW5jbHVkZSAiV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgiCisKKyNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSFRNTFNlbGVjdEVsZW1l
bnQ7IH0KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworICAgIC8vIFByb3ZpZGVzIHJl
YWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gc2VsZWN0IGVsZW1lbnQg
bm9kZS4KKyAgICBjbGFzcyBXZWJTZWxlY3RFbGVtZW50IDogcHVibGljIFdlYkZvcm1Db250cm9s
RWxlbWVudCB7CisgICAgcHVibGljOgorICAgICAgICBXZWJTZWxlY3RFbGVtZW50KCkgOiBXZWJG
b3JtQ29udHJvbEVsZW1lbnQoKSB7IH0KKyAgICAgICAgV2ViU2VsZWN0RWxlbWVudChjb25zdCBX
ZWJTZWxlY3RFbGVtZW50JiBuKSA6IFdlYkZvcm1Db250cm9sRWxlbWVudChuKSB7IH0KKworICAg
ICAgICBXZWJTZWxlY3RFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViU2VsZWN0RWxlbWVudCYg
bikgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihuKTsgcmV0dXJuICp0aGlzOyB9Cisg
ICAgICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2VsZWN0RWxlbWVudCYgbikg
eyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihuKTsgfQorCisgICAgICAgIFdFQktJVF9B
UEkgdm9pZCBzZXRWYWx1ZShjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKKyAgICAgICAgV0VCS0lU
X0FQSSBXZWJTdHJpbmcgdmFsdWUoKTsKKyAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHNldEF1dG9m
aWxsZWQoYm9vbCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICAgICAgV2ViU2Vs
ZWN0RWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1l
bnQ+Jik7CisgICAgICAgIFdlYlNlbGVjdEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBh
c3NSZWZQdHI8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ+Jik7CisgICAgICAgIG9wZXJhdG9y
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4oKSBjb25zdDsKKyNl
bmRpZgorICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5
IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VsZWN0RWxlbWVudC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDExIEBAIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorYm9vbCBXZWJFbGVtZW50
Ojppc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFw
PEVsZW1lbnQ+KCktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Cit9CisKIFdlYlN0cmluZyBXZWJF
bGVtZW50Ojp0YWdOYW1lKCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVu
dD4oKS0+dGFnTmFtZSgpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNv
bnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Rm9ybUNvbnRyb2xFbGVtZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4MCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJGb3JtQ29udHJvbEVsZW1lbnQuaCIKKworI2lu
Y2x1ZGUgIkhUTUxGb3JtQ29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K1dlYlN0cmluZyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Db250cm9sTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmZv
cm1Db250cm9sTmFtZSgpOworfQorCitXZWJTdHJpbmcgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PigpLT5mb3JtQ29udHJvbFR5cGUoKTsKK30KKworV2ViU3RyaW5nIFdl
YkZvcm1Db250cm9sRWxlbWVudDo6bmFtZUZvckF1dG9maWxsKCkgY29uc3QKK3sKKyAgICBTdHJp
bmcgbmFtZSA9IGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPm5hbWUoKTsK
KyAgICBTdHJpbmcgdHJpbW1lZE5hbWUgPSBuYW1lLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGlm
ICghdHJpbW1lZE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJpbW1lZE5hbWU7Cisg
ICAgbmFtZSA9IGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmlkQXR0cik7CisgICAgdHJpbW1lZE5hbWUgPSBuYW1lLnN0cmlwV2hp
dGVTcGFjZSgpOworICAgIGlmICghdHJpbW1lZE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdHJpbW1lZE5hbWU7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitXZWJGb3JtQ29udHJv
bEVsZW1lbnQ6OldlYkZvcm1Db250cm9sRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+JiBlbGVtKQorICAgIDogV2ViRWxlbWVudChlbGVtKQoreworfQorCitX
ZWJGb3JtQ29udHJvbEVsZW1lbnQmIFdlYkZvcm1Db250cm9sRWxlbWVudDo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4mIGVsZW0pCit7CisgICAgbV9w
cml2YXRlID0gZWxlbTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkZvcm1Db250cm9sRWxl
bWVudDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX3By
aXZhdGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBA
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIldlYkZvcm1Db250cm9sRWxl
bWVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC04OCw2ICs5MCwxOCBAQCB2b2lkIFdlYkZvcm1FbGVtZW50OjpnZXRJbnB1dEVsZW1lbnRzKFdl
CiAgICAgcmVzdWx0LmFzc2lnbih0ZW1wVmVjdG9yKTsKIH0KIAordm9pZCBXZWJGb3JtRWxlbWVu
dDo6Z2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xFbGVtZW50
PiYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGNv
bnN0VW53cmFwPEhUTUxGb3JtRWxlbWVudD4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+ID4gdGVtcFZlY3RvcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZvcm0tPmZvcm1FbGVtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoZm9ybS0+Zm9y
bUVsZW1lbnRzW2ldLT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykKKyAgICAgICAg
ICAgIHx8IGZvcm0tPmZvcm1FbGVtZW50c1tpXS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6c2Vs
ZWN0VGFnKSkKKyAgICAgICAgICAgIHRlbXBWZWN0b3IuYXBwZW5kKGZvcm0tPmZvcm1FbGVtZW50
c1tpXSk7CisgICAgfQorICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7Cit9CisKIFdlYkZv
cm1FbGVtZW50OjpXZWJGb3JtRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4mIGUpCiAgICAgOiBXZWJFbGVtZW50KGUpCiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTEgKzU1LDYgQEAg
V2ViSW5wdXRFbGVtZW50OjpJbnB1dFR5cGUgV2ViSW5wdXRFbGVtZQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbnB1dFR5cGU+KGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1lbnQ+KCktPmlucHV0
VHlwZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdlYklucHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29uc3RVbndyYXA8SFRNTElucHV0RWxlbWVudD4oKS0+
Zm9ybUNvbnRyb2xUeXBlKCk7Ci19Ci0KIGJvb2wgV2ViSW5wdXRFbGVtZW50Ojppc0FjdGl2YXRl
ZFN1Ym1pdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1l
bnQ+KCktPmlzQWN0aXZhdGVkU3VibWl0KCk7CkBAIC0xMTQsNyArMTA5LDcgQEAgV2ViU3RyaW5n
IFdlYklucHV0RWxlbWVudDo6bmFtZUZvckF1dG9maQogfQogCiBXZWJJbnB1dEVsZW1lbnQ6Oldl
YklucHV0RWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+JiBlbGVtKQot
ICAgIDogV2ViRWxlbWVudChlbGVtKQorICAgIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KGVsZW0p
CiB7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViU2VsZWN0RWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
U2VsZWN0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1
bndyYXA8SFRNTFNlbGVjdEVsZW1lbnQ+KCktPnNldFZhbHVlKHZhbHVlKTsKK30KKworV2ViU3Ry
aW5nIFdlYlNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkKK3sKKyAgICByZXR1cm4gdW53cmFwPEhUTUxT
ZWxlY3RFbGVtZW50PigpLT52YWx1ZSgpOworfQorCit2b2lkIFdlYlNlbGVjdEVsZW1lbnQ6OnNl
dEF1dG9maWxsZWQoYm9vbCkKK3sKKworfQorCitXZWJTZWxlY3RFbGVtZW50OjpXZWJTZWxlY3RF
bGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+JiBlbGVtKQorICAgIDog
V2ViRm9ybUNvbnRyb2xFbGVtZW50KGVsZW0pCit7Cit9CisKK1dlYlNlbGVjdEVsZW1lbnQmIFdl
YlNlbGVjdEVsZW1lbnQ6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVt
ZW50PiYgZWxlbSkKK3sKKyAgICBtX3ByaXZhdGUgPSBlbGVtOworICAgIHJldHVybiAqdGhpczsK
K30KKworV2ViU2VsZWN0RWxlbWVudDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxl
bWVudD4oKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVu
dCo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51564</attachid>
            <date>2010-03-24 16:27:54 -0700</date>
            <delta_ts>2010-03-25 15:37:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36562-20100324162753.patch</filename>
            <type>text/plain</type>
            <size>22772</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMjQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViRm9ybUNv
bnRyb2xFbGVtZW50IGFuZCBXZWJTZWxlY3RFbGVtZW50LiAgQWRkCisgICAgICAgIGEgZ2V0Rm9y
bUNvbnRyb2xFbGVtZW50cyBtZXRob2QgdG8gV2ViRm9ybUVsZW1lbnQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTYyCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6V2ViSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnB1dEVsZW1lbnQ6OmFzc2lnbik6CisgICAgICAgICogcHVibGljL1dlYlNlbGVjdEVsZW1l
bnQuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJv
bEVsZW1lbnRzKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpXZWJJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHNy
Yy9XZWJTZWxlY3RFbGVtZW50LmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMjQgIEpvaG4gQWJkLUVs
LU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGcmFtZS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hl
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHbHlwaENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCcsCkBAIC0xNzIsNiArMTczLDcgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNlY3VyaXR5T3JpZ2luLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2Vj
dXJpdHlQb2xpY3kuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaCcsCkBAIC0zMTAsNiArMzEyLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJGb250Q2FjaGUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLApAQCAtMzU3LDYgKzM2MCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU2VsZWN0
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICBXZWJFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViRWxl
bWVudCYgZSkgeyBXZWJOb2RlOjphc3NpZ24oZSk7IHJldHVybiAqdGhpczsgfQogICAgICAgICB2
b2lkIGFzc2lnbihjb25zdCBXZWJFbGVtZW50JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgfQog
CisgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgpIGNvbnN0Owog
ICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CiAgICAgICAgIFdF
QktJVF9BUEkgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwogICAgICAg
ICBXRUJLSVRfQVBJIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9ybUNvbnRy
b2xFbGVtZW50X2gKKyNkZWZpbmUgV2ViRm9ybUNvbnRyb2xFbGVtZW50X2gKKworI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFByb3ZpZGVzIHJlYWRv
bmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gZm9ybSBjb250cm9sIGVsZW1l
bnQgbm9kZS4KK2NsYXNzIFdlYkZvcm1Db250cm9sRWxlbWVudCA6IHB1YmxpYyBXZWJFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQoKSA6IFdlYkVsZW1lbnQoKSB7
IH0KKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgV2ViRm9ybUNvbnRyb2xFbGVtZW50
JiBuKSA6IFdlYkVsZW1lbnQobikgeyB9CisKKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIG9w
ZXJhdG9yPShjb25zdCBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIG4pIHsgV2ViRWxlbWVudDo6YXNz
aWduKG4pOyByZXR1cm4gKnRoaXM7IH0KKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0
IFdlYkZvcm1Db250cm9sRWxlbWVudCYgbikgeyBXZWJFbGVtZW50Ojphc3NpZ24obik7IH0KKwor
ICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIGZvcm1Db250cm9sTmFtZSgpIGNvbnN0OworICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0OworICAgIC8vIFJldHVy
bnMgdGhlIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB8ZWxlbWVu
dHwgd2hlbgorICAgIC8vIHN0b3JpbmcgYXV0b2ZpbGwgZGF0YS4gIFRoaXMgaXMgZWl0aGVyIHRo
ZSBmaWVsZCBuYW1lIG9yIGl0cyBpZCwgYW4gZW1wdHkKKyAgICAvLyBzdHJpbmcgaWYgaXQgaGFz
IG5vIG5hbWUgYW5kIG5vIGlkLgorICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIG5hbWVGb3JBdXRv
ZmlsbCgpIGNvbnN0OworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRm9ybUNv
bnRyb2xFbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRy
b2xFbGVtZW50PiYpOworICAgIFdlYkZvcm1Db250cm9sRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0
IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiYpOworICAg
IG9wZXJhdG9yIFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50
PigpIGNvbnN0OworI2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1Db250
cm9sRWxlbWVudC5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRl
eDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gNTY0NjIp
CisrKyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5kZWYgV2ViRm9ybUVsZW1lbnRfaAogI2RlZmluZSBX
ZWJGb3JtRWxlbWVudF9oCiAKLSNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJXZWJFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKICNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KQEAgLTM5LDYgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3Mg
SFRNTEZvcm1FbGVtZW4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKworICAgIGNsYXNz
IFdlYklucHV0RWxlbWVudDsKKyAgICBjbGFzcyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ7CisKICAg
ICAvLyBBIGNvbnRhaW5lciBmb3IgcGFzc2luZyBhcm91bmQgYSByZWZlcmVuY2UgdG8gYSBmb3Jt
IGVsZW1lbnQuICBQcm92aWRlcwogICAgIC8vIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZv
cm0uCiAgICAgY2xhc3MgV2ViRm9ybUVsZW1lbnQgOiBwdWJsaWMgV2ViRWxlbWVudCB7CkBAIC02
Miw3ICs2Niw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRfQVBJIHZvaWQg
c3VibWl0KCk7CiAgICAgICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgYW5kIHJlcGxhY2Ugd2l0aCBX
ZWJWZWN0b3I8V2ViRWxlbWVudD4uCiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBnZXROYW1lZEVs
ZW1lbnRzKGNvbnN0IFdlYlN0cmluZyYsIFdlYlZlY3RvcjxXZWJOb2RlPiYpOworICAgICAgICAv
LyBERVBSRUNBVEVEOiBSZXBsYWNlZCBieSBnZXRGb3JtQ29udHJvbEVsZW1lbnRzLgogICAgICAg
ICBXRUJLSVRfQVBJIHZvaWQgZ2V0SW5wdXRFbGVtZW50cyhXZWJWZWN0b3I8V2ViSW5wdXRFbGVt
ZW50PiYpIGNvbnN0OworICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZ2V0Rm9ybUNvbnRyb2xFbGVt
ZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xFbGVtZW50PiYpIGNvbnN0OwogCiAjaWYgV0VC
S0lUX0lNUExFTUVOVEFUSU9OCiAgICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdURjo6UGFz
c1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUVsZW1lbnQ+Jik7CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklucHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyAr
MzEsNyBAQAogI2lmbmRlZiBXZWJJbnB1dEVsZW1lbnRfaAogI2RlZmluZSBXZWJJbnB1dEVsZW1l
bnRfaAogCi0jaW5jbHVkZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZvcm1Db250cm9s
RWxlbWVudC5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7IGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7IH0KQEAgLTQwLDEzICs0MCwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7IGNsYXNzIEhUTUxJbnB1dEVsZW1lCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
ICAgIC8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBE
T00gaW5wdXQgZWxlbWVudCBub2RlLgotICAgIGNsYXNzIFdlYklucHV0RWxlbWVudCA6IHB1Ymxp
YyBXZWJFbGVtZW50IHsKKyAgICBjbGFzcyBXZWJJbnB1dEVsZW1lbnQgOiBwdWJsaWMgV2ViRm9y
bUNvbnRyb2xFbGVtZW50IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdlYklucHV0RWxlbWVudCgp
IDogV2ViRWxlbWVudCgpIHsgfQotICAgICAgICBXZWJJbnB1dEVsZW1lbnQoY29uc3QgV2ViSW5w
dXRFbGVtZW50JiBuKSA6IFdlYkVsZW1lbnQobikgeyB9CisgICAgICAgIFdlYklucHV0RWxlbWVu
dCgpIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KCkgeyB9CisgICAgICAgIFdlYklucHV0RWxlbWVu
dChjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KG4pIHsg
fQogCi0gICAgICAgIFdlYklucHV0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYklucHV0RWxl
bWVudCYgbikgeyBXZWJFbGVtZW50Ojphc3NpZ24obik7IHJldHVybiAqdGhpczsgfQotICAgICAg
ICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikgeyBXZWJF
bGVtZW50Ojphc3NpZ24obik7IH0KKyAgICAgICAgV2ViSW5wdXRFbGVtZW50JiBvcGVyYXRvcj0o
Y29uc3QgV2ViSW5wdXRFbGVtZW50JiBuKSB7IFdlYkZvcm1Db250cm9sRWxlbWVudDo6YXNzaWdu
KG4pOyByZXR1cm4gKnRoaXM7IH0KKyAgICAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25z
dCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojphc3NpZ24obik7
IH0KIAogICAgICAgICBlbnVtIElucHV0VHlwZSB7CiAgICAgICAgICAgICBUZXh0ID0gMCwKQEAg
LTc4LDcgKzc4LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgYm9v
bCBhdXRvQ29tcGxldGUoKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSBib29sIGlzRW5hYmxl
ZEZvcm1Db250cm9sKCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgSW5wdXRUeXBlIGlucHV0
VHlwZSgpIGNvbnN0OwotICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBmb3JtQ29udHJvbFR5
cGUoKSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkg
Y29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCk7
CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRWYWx1ZShjb25zdCBXZWJTdHJpbmcmIHZhbHVl
KTsKQEAgLTg2LDEwICs4NSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VCS0lU
X0FQSSB2b2lkIHNldEF1dG9maWxsZWQoYm9vbCk7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBk
aXNwYXRjaEZvcm1Db250cm9sQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lk
IHNldFNlbGVjdGlvblJhbmdlKGludCwgaW50KTsKKyAgICAgICAgLy8gREVQUkVDQVRFRDogVGhl
IGZvbGxvd2luZyB0d28gbWV0aG9kcyBoYXZlIGJlZW4gbW92ZWQgdG8gV2ViRm9ybUNvbnRyb2xF
bGVtZW50LgogICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAg
ICAgIC8vIFJldHVybnMgdGhlIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNwZWNp
ZmllZCB8ZWxlbWVudHwgd2hlbgotICAgICAgICAvLyBzdG9yaW5nIGF1dG9maWxsIGRhdGEuICBU
aGlzIGlzIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciBpdHMgaWQsIGFuIGVtcHR5Ci0gICAgICAg
IC8vIHN0cmluZyBpZiBpdCBoYXMgbm8gbmFtZSBhbmQgbm8gaWQuCisgICAgICAgIC8vIHN0b3Jp
bmcgQXV0b0ZpbGwgZGF0YS4gIFRoaXMgaXMgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIGl0cyBp
ZCwgYW4KKyAgICAgICAgLy8gZW1wdHkgc3RyaW5nIGlmIGl0IGhhcyBubyBuYW1lIGFuZCBubyBp
ZC4KICAgICAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbmFtZUZvckF1dG9maWxsKCkgY29uc3Q7
CiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZWxlY3RFbGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICog
ZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAq
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIFdlYlNlbGVjdEVsZW1lbnRfaAorI2RlZmluZSBXZWJTZWxlY3RFbGVtZW50X2gKKworI2lu
Y2x1ZGUgIldlYkZvcm1Db250cm9sRWxlbWVudC5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCituYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OyB9CisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0
byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gc2VsZWN0IGVsZW1lbnQgbm9kZS4KK2NsYXNzIFdl
YlNlbGVjdEVsZW1lbnQgOiBwdWJsaWMgV2ViRm9ybUNvbnRyb2xFbGVtZW50IHsKK3B1YmxpYzoK
KyAgICBXZWJTZWxlY3RFbGVtZW50KCkgOiBXZWJGb3JtQ29udHJvbEVsZW1lbnQoKSB7IH0KKyAg
ICBXZWJTZWxlY3RFbGVtZW50KGNvbnN0IFdlYlNlbGVjdEVsZW1lbnQmIG4pIDogV2ViRm9ybUNv
bnRyb2xFbGVtZW50KG4pIHsgfQorCisgICAgV2ViU2VsZWN0RWxlbWVudCYgb3BlcmF0b3I9KGNv
bnN0IFdlYlNlbGVjdEVsZW1lbnQmIG4pIHsgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojphc3NpZ24o
bik7IHJldHVybiAqdGhpczsgfQorICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2Vi
U2VsZWN0RWxlbWVudCYgbikgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihuKTsgfQor
CisgICAgV0VCS0lUX0FQSSB2b2lkIHNldFZhbHVlKGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpOwor
ICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIHZhbHVlKCk7CisgICAgV0VCS0lUX0FQSSB2b2lkIHNl
dEF1dG9maWxsZWQoYm9vbCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJT
ZWxlY3RFbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxl
bWVudD4mKTsKKyAgICBXZWJTZWxlY3RFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNz
UmVmUHRyPFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50PiYpOworICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4oKSBjb25zdDsKKyNlbmRpZgor
fTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBv
bjogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50LmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkVsZW1lbnQ6OmlzRW5hYmxl
ZEZvcm1Db250cm9sKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVudD4o
KS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnRh
Z05hbWUoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVtZW50PigpLT50YWdO
YW1lKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJv
bEVsZW1lbnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIldlYkZvcm1Db250cm9sRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRN
TEZvcm1Db250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3Vz
aW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViU3RyaW5n
IFdlYkZvcm1Db250cm9sRWxlbWVudDo6Zm9ybUNvbnRyb2xOYW1lKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gY29uc3RVbndyYXA8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKS0+Zm9ybUNvbnRyb2xO
YW1lKCk7Cit9CisKK1dlYlN0cmluZyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Db250cm9s
VHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVs
ZW1lbnQ+KCktPmZvcm1Db250cm9sVHlwZSgpOworfQorCitXZWJTdHJpbmcgV2ViRm9ybUNvbnRy
b2xFbGVtZW50OjpuYW1lRm9yQXV0b2ZpbGwoKSBjb25zdAoreworICAgIFN0cmluZyBuYW1lID0g
Y29uc3RVbndyYXA8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKS0+bmFtZSgpOworICAgIFN0cmlu
ZyB0cmltbWVkTmFtZSA9IG5hbWUuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgaWYgKCF0cmltbWVk
TmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cmltbWVkTmFtZTsKKyAgICBuYW1lID0g
Y29uc3RVbndyYXA8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKS0+Z2V0QXR0cmlidXRlKEhUTUxO
YW1lczo6aWRBdHRyKTsKKyAgICB0cmltbWVkTmFtZSA9IG5hbWUuc3RyaXBXaGl0ZVNwYWNlKCk7
CisgICAgaWYgKCF0cmltbWVkTmFtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cmltbWVk
TmFtZTsKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1dlYkZvcm1Db250cm9sRWxlbWVudDo6
V2ViRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4mIGVsZW0pCisgICAgOiBXZWJFbGVtZW50KGVsZW0pCit7Cit9CisKK1dlYkZvcm1Db250
cm9sRWxlbWVudCYgV2ViRm9ybUNvbnRyb2xFbGVtZW50OjpvcGVyYXRvcj0oY29uc3QgUGFzc1Jl
ZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiYgZWxlbSkKK3sKKyAgICBtX3ByaXZhdGUgPSBl
bGVtOworICAgIHJldHVybiAqdGhpczsKK30KKworV2ViRm9ybUNvbnRyb2xFbGVtZW50OjpvcGVy
YXRvciBQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTEZvcm1Db250cm9sRWxlbWVudCo+KG1fcHJpdmF0ZS5nZXQo
KSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuY3BwCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
b3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3Jt
RWxlbWVudC5jcHAJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJG
b3JtRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAKICNpbmNsdWRl
ICJIVE1MRm9ybUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgiCisj
aW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCiAjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCiAjaW5j
bHVkZSAiV2ViVVJMLmgiCiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAgLTg4LDYgKzkw
LDE4IEBAIHZvaWQgV2ViRm9ybUVsZW1lbnQ6OmdldElucHV0RWxlbWVudHMoV2UKICAgICByZXN1
bHQuYXNzaWduKHRlbXBWZWN0b3IpOwogfQogCit2b2lkIFdlYkZvcm1FbGVtZW50OjpnZXRGb3Jt
Q29udHJvbEVsZW1lbnRzKFdlYlZlY3RvcjxXZWJGb3JtQ29udHJvbEVsZW1lbnQ+JiByZXN1bHQp
IGNvbnN0Cit7CisgICAgY29uc3QgSFRNTEZvcm1FbGVtZW50KiBmb3JtID0gY29uc3RVbndyYXA8
SFRNTEZvcm1FbGVtZW50PigpOworICAgIFZlY3RvcjxSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxl
bWVudD4gPiB0ZW1wVmVjdG9yOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZm9ybS0+Zm9y
bUVsZW1lbnRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChmb3JtLT5mb3JtRWxlbWVudHNb
aV0tPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OmlucHV0VGFnKQorICAgICAgICAgICAgfHwgZm9y
bS0+Zm9ybUVsZW1lbnRzW2ldLT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjpzZWxlY3RUYWcpKQor
ICAgICAgICAgICAgdGVtcFZlY3Rvci5hcHBlbmQoZm9ybS0+Zm9ybUVsZW1lbnRzW2ldKTsKKyAg
ICB9CisgICAgcmVzdWx0LmFzc2lnbih0ZW1wVmVjdG9yKTsKK30KKwogV2ViRm9ybUVsZW1lbnQ6
OldlYkZvcm1FbGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1FbGVtZW50PiYgZSkKICAg
ICA6IFdlYkVsZW1lbnQoZSkKIHsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5wdXRF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RWxl
bWVudC5jcHAJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSwxMSArNTUsNiBAQCBXZWJJbnB1dEVs
ZW1lbnQ6OklucHV0VHlwZSBXZWJJbnB1dEVsZW1lCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PElu
cHV0VHlwZT4oY29uc3RVbndyYXA8SFRNTElucHV0RWxlbWVudD4oKS0+aW5wdXRUeXBlKCkpOwog
fQogCi1XZWJTdHJpbmcgV2ViSW5wdXRFbGVtZW50Ojpmb3JtQ29udHJvbFR5cGUoKSBjb25zdAot
ewotICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MSW5wdXRFbGVtZW50PigpLT5mb3JtQ29udHJv
bFR5cGUoKTsKLX0KLQogYm9vbCBXZWJJbnB1dEVsZW1lbnQ6OmlzQWN0aXZhdGVkU3VibWl0KCkg
Y29uc3QKIHsKICAgICByZXR1cm4gY29uc3RVbndyYXA8SFRNTElucHV0RWxlbWVudD4oKS0+aXNB
Y3RpdmF0ZWRTdWJtaXQoKTsKQEAgLTExNCw3ICsxMDksNyBAQCBXZWJTdHJpbmcgV2ViSW5wdXRF
bGVtZW50OjpuYW1lRm9yQXV0b2ZpCiB9CiAKIFdlYklucHV0RWxlbWVudDo6V2ViSW5wdXRFbGVt
ZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4mIGVsZW0pCi0gICAgOiBXZWJF
bGVtZW50KGVsZW0pCisgICAgOiBXZWJGb3JtQ29udHJvbEVsZW1lbnQoZWxlbSkKIHsKIH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJTZWxl
Y3RFbGVtZW50LmgiCisKKyNpbmNsdWRlICJIVE1MU2VsZWN0RWxlbWVudC5oIgorI2luY2x1ZGUg
IldlYlN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKwordm9pZCBXZWJTZWxlY3RFbGVt
ZW50OjpzZXRWYWx1ZShjb25zdCBXZWJTdHJpbmcmIHZhbHVlKQoreworICAgIHVud3JhcDxIVE1M
U2VsZWN0RWxlbWVudD4oKS0+c2V0VmFsdWUodmFsdWUpOworfQorCitXZWJTdHJpbmcgV2ViU2Vs
ZWN0RWxlbWVudDo6dmFsdWUoKQoreworICAgIHJldHVybiB1bndyYXA8SFRNTFNlbGVjdEVsZW1l
bnQ+KCktPnZhbHVlKCk7Cit9CisKK3ZvaWQgV2ViU2VsZWN0RWxlbWVudDo6c2V0QXV0b2ZpbGxl
ZChib29sKQoreworCit9CisKK1dlYlNlbGVjdEVsZW1lbnQ6OldlYlNlbGVjdEVsZW1lbnQoY29u
c3QgUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxlbWVudD4mIGVsZW0pCisgICAgOiBXZWJGb3JtQ29u
dHJvbEVsZW1lbnQoZWxlbSkKK3sKK30KKworV2ViU2VsZWN0RWxlbWVudCYgV2ViU2VsZWN0RWxl
bWVudDo6b3BlcmF0b3I9KGNvbnN0IFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+JiBlbGVt
KQoreworICAgIG1fcHJpdmF0ZSA9IGVsZW07CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJT
ZWxlY3RFbGVtZW50OjpvcGVyYXRvciBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxTZWxlY3RFbGVtZW50Kj4obV9wcml2
YXRlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFuZ2Vz
IG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3BwCl9fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K
TmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51684</attachid>
            <date>2010-03-25 15:37:29 -0700</date>
            <delta_ts>2010-03-25 15:58:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36562-20100325153727.patch</filename>
            <type>text/plain</type>
            <size>22896</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY0NjYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMjQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViRm9ybUNv
bnRyb2xFbGVtZW50IGFuZCBXZWJTZWxlY3RFbGVtZW50LiAgQWRkCisgICAgICAgIGEgZ2V0Rm9y
bUNvbnRyb2xFbGVtZW50cyBtZXRob2QgdG8gV2ViRm9ybUVsZW1lbnQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTYyCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6V2ViSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnB1dEVsZW1lbnQ6OmFzc2lnbik6CisgICAgICAgICogcHVibGljL1dlYlNlbGVjdEVsZW1l
bnQuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJv
bEVsZW1lbnRzKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpXZWJJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHNy
Yy9XZWJTZWxlY3RFbGVtZW50LmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMjQgIEpvaG4gQWJkLUVs
LU1hbGVrICA8amFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBG
aXNoZXIuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hy
b21pdW0vV2ViS2l0Lmd5cAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDYgKzEyMCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3B1YmxpYy9XZWJGcmFtZS5oJywKICAgICAgICAgICAgICAgICAncHVibGlj
L1dlYkZyYW1lQ2xpZW50LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9udENhY2hl
LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViRm9ybUVsZW1lbnQuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJHbHlwaENhY2hlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
R3JhcGhpY3NDb250ZXh0M0QuaCcsCkBAIC0xNzIsNiArMTczLDcgQEAKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlNlYXJjaGFibGVGb3JtRGF0YS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNlY3VyaXR5T3JpZ2luLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2Vj
dXJpdHlQb2xpY3kuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2V0dGluZ3MuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaCcsCkBAIC0zMTAsNiArMzEyLDcgQEAKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuY3BwJywKICAgICAg
ICAgICAgICAgICAnc3JjL1dlYkZpbGVDaG9vc2VyQ29tcGxldGlvbkltcGwuaCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJGb250Q2FjaGUuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViRm9ybUVs
ZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViRnJhbWVJbXBsLmgnLApAQCAtMzU3LDYgKzM2MCw3IEBACiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuY3BwJywKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYlNlY3VyaXR5T3JpZ2luLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3Ny
Yy9XZWJTZWN1cml0eVBvbGljeS5jcHAnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViU2VsZWN0
RWxlbWVudC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYlNldHRpbmdzSW1wbC5oJywKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogICAgICAgICBXZWJFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViRWxl
bWVudCYgZSkgeyBXZWJOb2RlOjphc3NpZ24oZSk7IHJldHVybiAqdGhpczsgfQogICAgICAgICB2
b2lkIGFzc2lnbihjb25zdCBXZWJFbGVtZW50JiBlKSB7IFdlYk5vZGU6OmFzc2lnbihlKTsgfQog
CisgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0Zvcm1Db250cm9sRWxlbWVudCgpIGNvbnN0Owog
ICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyB0YWdOYW1lKCkgY29uc3Q7CiAgICAgICAgIFdF
QktJVF9BUEkgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwogICAgICAg
ICBXRUJLSVRfQVBJIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFdlYlN0cmluZyYpIGNvbnN0OwpJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5o
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVs
ZW1lbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRm9ybUNvbnRy
b2xFbGVtZW50X2gKKyNkZWZpbmUgV2ViRm9ybUNvbnRyb2xFbGVtZW50X2gKKworI2luY2x1ZGUg
IldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKworI2lmIFdFQktJVF9JTVBM
RU1FTlRBVElPTgorbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1MRm9ybUNvbnRyb2xFbGVt
ZW50OyB9CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIFByb3ZpZGVzIHJlYWRv
bmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gZm9ybSBjb250cm9sIGVsZW1l
bnQgbm9kZS4KK2NsYXNzIFdlYkZvcm1Db250cm9sRWxlbWVudCA6IHB1YmxpYyBXZWJFbGVtZW50
IHsKK3B1YmxpYzoKKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQoKSA6IFdlYkVsZW1lbnQoKSB7
IH0KKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgV2ViRm9ybUNvbnRyb2xFbGVtZW50
JiBlKSA6IFdlYkVsZW1lbnQoZSkgeyB9CisKKyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIG9w
ZXJhdG9yPShjb25zdCBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIGUpIHsgV2ViRWxlbWVudDo6YXNz
aWduKGUpOyByZXR1cm4gKnRoaXM7IH0KKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0
IFdlYkZvcm1Db250cm9sRWxlbWVudCYgZSkgeyBXZWJFbGVtZW50Ojphc3NpZ24oZSk7IH0KKwor
ICAgIFdFQktJVF9BUEkgYm9vbCBpc0VuYWJsZWQoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdl
YlN0cmluZyBmb3JtQ29udHJvbE5hbWUoKSBjb25zdDsKKyAgICBXRUJLSVRfQVBJIFdlYlN0cmlu
ZyBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKKworICAgIC8vIFJldHVybnMgdGhlIG5hbWUgdGhh
dCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB8ZWxlbWVudHwgd2hlbgorICAgIC8v
IHN0b3JpbmcgYXV0b2ZpbGwgZGF0YS4gIFRoaXMgaXMgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9y
IGl0cyBpZCwgYW4gZW1wdHkKKyAgICAvLyBzdHJpbmcgaWYgaXQgaGFzIG5vIG5hbWUgYW5kIG5v
IGlkLgorICAgIFdFQktJVF9BUEkgV2ViU3RyaW5nIG5hbWVGb3JBdXRvZmlsbCgpIGNvbnN0Owor
CisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViRm9ybUNvbnRyb2xFbGVtZW50KGNv
bnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiYpOwor
ICAgIFdlYkZvcm1Db250cm9sRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PiYpOworICAgIG9wZXJhdG9yIFdURjo6
UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpIGNvbnN0OworI2Vu
ZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oCl9f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAkocmV2aXNpb24gNTY0NjIpCisrKyBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMx
LDcgQEAKICNpZm5kZWYgV2ViRm9ybUVsZW1lbnRfaAogI2RlZmluZSBXZWJGb3JtRWxlbWVudF9o
CiAKLSNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCiAKICNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KQEAg
LTM5LDYgKzM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSFRNTEZvcm1FbGVtZW4K
ICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKKworICAgIGNsYXNzIFdlYklucHV0RWxlbWVu
dDsKKyAgICBjbGFzcyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ7CisKICAgICAvLyBBIGNvbnRhaW5l
ciBmb3IgcGFzc2luZyBhcm91bmQgYSByZWZlcmVuY2UgdG8gYSBmb3JtIGVsZW1lbnQuICBQcm92
aWRlcwogICAgIC8vIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm0uCiAgICAgY2xhc3Mg
V2ViRm9ybUVsZW1lbnQgOiBwdWJsaWMgV2ViRWxlbWVudCB7CkBAIC02Miw3ICs2Niw5IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRfQVBJIHZvaWQgc3VibWl0KCk7CiAgICAg
ICAgIC8vIEZJWE1FOiBEZXByZWNhdGUgYW5kIHJlcGxhY2Ugd2l0aCBXZWJWZWN0b3I8V2ViRWxl
bWVudD4uCiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBnZXROYW1lZEVsZW1lbnRzKGNvbnN0IFdl
YlN0cmluZyYsIFdlYlZlY3RvcjxXZWJOb2RlPiYpOworICAgICAgICAvLyBERVBSRUNBVEVEOiBS
ZXBsYWNlZCBieSBnZXRGb3JtQ29udHJvbEVsZW1lbnRzLgogICAgICAgICBXRUJLSVRfQVBJIHZv
aWQgZ2V0SW5wdXRFbGVtZW50cyhXZWJWZWN0b3I8V2ViSW5wdXRFbGVtZW50PiYpIGNvbnN0Owor
ICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZ2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8
V2ViRm9ybUNvbnRyb2xFbGVtZW50PiYpIGNvbnN0OwogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFU
SU9OCiAgICAgICAgIFdlYkZvcm1FbGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3Jl
OjpIVE1MRm9ybUVsZW1lbnQ+Jik7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5w
dXRFbGVtZW50LmgJKHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJJbnB1dEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsNyArMzEsNyBAQAogI2lmbmRl
ZiBXZWJJbnB1dEVsZW1lbnRfaAogI2RlZmluZSBXZWJJbnB1dEVsZW1lbnRfaAogCi0jaW5jbHVk
ZSAiV2ViRWxlbWVudC5oIgorI2luY2x1ZGUgIldlYkZvcm1Db250cm9sRWxlbWVudC5oIgogCiAj
aWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCiBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEhUTUxJ
bnB1dEVsZW1lbnQ7IH0KQEAgLTQwLDEzICs0MCwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNs
YXNzIEhUTUxJbnB1dEVsZW1lCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogICAgIC8vIFByb3ZpZGVz
IHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRpZXMgb2YgYSBET00gaW5wdXQgZWxlbWVu
dCBub2RlLgotICAgIGNsYXNzIFdlYklucHV0RWxlbWVudCA6IHB1YmxpYyBXZWJFbGVtZW50IHsK
KyAgICBjbGFzcyBXZWJJbnB1dEVsZW1lbnQgOiBwdWJsaWMgV2ViRm9ybUNvbnRyb2xFbGVtZW50
IHsKICAgICBwdWJsaWM6Ci0gICAgICAgIFdlYklucHV0RWxlbWVudCgpIDogV2ViRWxlbWVudCgp
IHsgfQotICAgICAgICBXZWJJbnB1dEVsZW1lbnQoY29uc3QgV2ViSW5wdXRFbGVtZW50JiBuKSA6
IFdlYkVsZW1lbnQobikgeyB9CisgICAgICAgIFdlYklucHV0RWxlbWVudCgpIDogV2ViRm9ybUNv
bnRyb2xFbGVtZW50KCkgeyB9CisgICAgICAgIFdlYklucHV0RWxlbWVudChjb25zdCBXZWJJbnB1
dEVsZW1lbnQmIGUpIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KGUpIHsgfQogCi0gICAgICAgIFdl
YklucHV0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikgeyBXZWJF
bGVtZW50Ojphc3NpZ24obik7IHJldHVybiAqdGhpczsgfQotICAgICAgICBXRUJLSVRfQVBJIHZv
aWQgYXNzaWduKGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikgeyBXZWJFbGVtZW50Ojphc3NpZ24o
bik7IH0KKyAgICAgICAgV2ViSW5wdXRFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV2ViSW5wdXRF
bGVtZW50JiBlKSB7IFdlYkZvcm1Db250cm9sRWxlbWVudDo6YXNzaWduKGUpOyByZXR1cm4gKnRo
aXM7IH0KKyAgICAgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25zdCBXZWJJbnB1dEVsZW1l
bnQmIGUpIHsgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojphc3NpZ24oZSk7IH0KIAogICAgICAgICBl
bnVtIElucHV0VHlwZSB7CiAgICAgICAgICAgICBUZXh0ID0gMCwKQEAgLTc4LDcgKzc4LDYgQEAg
bmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBhdXRvQ29tcGxldGUo
KSBjb25zdDsKICAgICAgICAgV0VCS0lUX0FQSSBib29sIGlzRW5hYmxlZEZvcm1Db250cm9sKCkg
Y29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgSW5wdXRUeXBlIGlucHV0VHlwZSgpIGNvbnN0Owot
ICAgICAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBmb3JtQ29udHJvbFR5cGUoKSBjb25zdDsKICAg
ICAgICAgV0VCS0lUX0FQSSBib29sIGlzQWN0aXZhdGVkU3VibWl0KCkgY29uc3Q7CiAgICAgICAg
IFdFQktJVF9BUEkgdm9pZCBzZXRBY3RpdmF0ZWRTdWJtaXQoYm9vbCk7CiAgICAgICAgIFdFQktJ
VF9BUEkgdm9pZCBzZXRWYWx1ZShjb25zdCBXZWJTdHJpbmcmIHZhbHVlKTsKQEAgLTg2LDEwICs4
NSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHNldEF1
dG9maWxsZWQoYm9vbCk7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBkaXNwYXRjaEZvcm1Db250
cm9sQ2hhbmdlRXZlbnQoKTsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHNldFNlbGVjdGlvblJh
bmdlKGludCwgaW50KTsKKyAgICAgICAgLy8gREVQUkVDQVRFRDogVGhlIGZvbGxvd2luZyB0d28g
bWV0aG9kcyBoYXZlIGJlZW4gbW92ZWQgdG8gV2ViRm9ybUNvbnRyb2xFbGVtZW50LgogICAgICAg
ICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lKCkgY29uc3Q7CiAgICAgICAgIC8vIFJldHVybnMg
dGhlIG5hbWUgdGhhdCBzaG91bGQgYmUgdXNlZCBmb3IgdGhlIHNwZWNpZmllZCB8ZWxlbWVudHwg
d2hlbgotICAgICAgICAvLyBzdG9yaW5nIGF1dG9maWxsIGRhdGEuICBUaGlzIGlzIGVpdGhlciB0
aGUgZmllbGQgbmFtZSBvciBpdHMgaWQsIGFuIGVtcHR5Ci0gICAgICAgIC8vIHN0cmluZyBpZiBp
dCBoYXMgbm8gbmFtZSBhbmQgbm8gaWQuCisgICAgICAgIC8vIHN0b3JpbmcgQXV0b0ZpbGwgZGF0
YS4gIFRoaXMgaXMgZWl0aGVyIHRoZSBmaWVsZCBuYW1lIG9yIGl0cyBpZCwgYW4KKyAgICAgICAg
Ly8gZW1wdHkgc3RyaW5nIGlmIGl0IGhhcyBubyBuYW1lIGFuZCBubyBpZC4KICAgICAgICAgV0VC
S0lUX0FQSSBXZWJTdHJpbmcgbmFtZUZvckF1dG9maWxsKCkgY29uc3Q7CiAKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VsZWN0RWxl
bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VsZWN0RWxl
bWVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZWxlY3RF
bGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlNlbGVjdEVs
ZW1lbnRfaAorI2RlZmluZSBXZWJTZWxlY3RFbGVtZW50X2gKKworI2luY2x1ZGUgIldlYkZvcm1D
b250cm9sRWxlbWVudC5oIgorCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCituYW1lc3BhY2Ug
V2ViQ29yZSB7IGNsYXNzIEhUTUxTZWxlY3RFbGVtZW50OyB9CisjZW5kaWYKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIFByb3ZpZGVzIHJlYWRvbmx5IGFjY2VzcyB0byBzb21lIHByb3BlcnRp
ZXMgb2YgYSBET00gc2VsZWN0IGVsZW1lbnQgbm9kZS4KK2NsYXNzIFdlYlNlbGVjdEVsZW1lbnQg
OiBwdWJsaWMgV2ViRm9ybUNvbnRyb2xFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBXZWJTZWxlY3RF
bGVtZW50KCkgOiBXZWJGb3JtQ29udHJvbEVsZW1lbnQoKSB7IH0KKyAgICBXZWJTZWxlY3RFbGVt
ZW50KGNvbnN0IFdlYlNlbGVjdEVsZW1lbnQmIGUpIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KGUp
IHsgfQorCisgICAgV2ViU2VsZWN0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYlNlbGVjdEVs
ZW1lbnQmIGUpIHsgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojphc3NpZ24oZSk7IHJldHVybiAqdGhp
czsgfQorICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViU2VsZWN0RWxlbWVudCYg
ZSkgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihlKTsgfQorCisgICAgV0VCS0lUX0FQ
SSB2b2lkIHNldFZhbHVlKGNvbnN0IFdlYlN0cmluZyYpOworICAgIFdFQktJVF9BUEkgV2ViU3Ry
aW5nIHZhbHVlKCk7CisKKyNpZiBXRUJLSVRfSU1QTEVNRU5UQVRJT04KKyAgICBXZWJTZWxlY3RF
bGVtZW50KGNvbnN0IFdURjo6UGFzc1JlZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4m
KTsKKyAgICBXZWJTZWxlY3RFbGVtZW50JiBvcGVyYXRvcj0oY29uc3QgV1RGOjpQYXNzUmVmUHRy
PFdlYkNvcmU6OkhUTUxTZWxlY3RFbGVtZW50PiYpOworICAgIG9wZXJhdG9yIFdURjo6UGFzc1Jl
ZlB0cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4oKSBjb25zdDsKKyNlbmRpZgorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdlcyBvbjogV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZWxlY3RFbGVtZW50LmgKX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBz
dm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDU2NDYyKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsMTEgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitib29sIFdlYkVsZW1lbnQ6OmlzRm9ybUNvbnRyb2xF
bGVtZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVudD4oKS0+aXNG
b3JtQ29udHJvbEVsZW1lbnQoKTsKK30KKwogV2ViU3RyaW5nIFdlYkVsZW1lbnQ6OnRhZ05hbWUo
KSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxFbGVtZW50PigpLT50YWdOYW1lKCk7
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1l
bnQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAq
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIldlYkZvcm1Db250cm9sRWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTEZvcm1D
b250cm9sRWxlbWVudC5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworYm9vbCBXZWJGb3JtQ29u
dHJvbEVsZW1lbnQ6OmlzRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFw
PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmlzRW5hYmxlZEZvcm1Db250cm9sKCk7Cit9CisK
K1dlYlN0cmluZyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmZvcm1Db250cm9sTmFtZSgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmZv
cm1Db250cm9sTmFtZSgpOworfQorCitXZWJTdHJpbmcgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojpm
b3JtQ29udHJvbFR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PigpLT5mb3JtQ29udHJvbFR5cGUoKTsKK30KKworV2ViU3RyaW5nIFdl
YkZvcm1Db250cm9sRWxlbWVudDo6bmFtZUZvckF1dG9maWxsKCkgY29uc3QKK3sKKyAgICBTdHJp
bmcgbmFtZSA9IGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPm5hbWUoKTsK
KyAgICBTdHJpbmcgdHJpbW1lZE5hbWUgPSBuYW1lLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGlm
ICghdHJpbW1lZE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJpbW1lZE5hbWU7Cisg
ICAgbmFtZSA9IGNvbnN0VW53cmFwPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+KCktPmdldEF0dHJp
YnV0ZShIVE1MTmFtZXM6OmlkQXR0cik7CisgICAgdHJpbW1lZE5hbWUgPSBuYW1lLnN0cmlwV2hp
dGVTcGFjZSgpOworICAgIGlmICghdHJpbW1lZE5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1
cm4gdHJpbW1lZE5hbWU7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitXZWJGb3JtQ29udHJv
bEVsZW1lbnQ6OldlYkZvcm1Db250cm9sRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+JiBlbGVtKQorICAgIDogV2ViRWxlbWVudChlbGVtKQoreworfQorCitX
ZWJGb3JtQ29udHJvbEVsZW1lbnQmIFdlYkZvcm1Db250cm9sRWxlbWVudDo6b3BlcmF0b3I9KGNv
bnN0IFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4mIGVsZW0pCit7CisgICAgbV9w
cml2YXRlID0gZWxlbTsKKyAgICByZXR1cm4gKnRoaXM7Cit9CisKK1dlYkZvcm1Db250cm9sRWxl
bWVudDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEhUTUxGb3JtQ29udHJvbEVsZW1lbnQqPihtX3By
aXZhdGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClByb3BlcnR5IGNoYW5n
ZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNwcApfX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViRm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1
bS9zcmMvV2ViRm9ybUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw4IEBA
CiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIldlYkZvcm1Db250cm9sRWxl
bWVudC5oIgorI2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYlN0cmlu
Zy5oIgogI2luY2x1ZGUgIldlYlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC04OCw2ICs5MCwxOCBAQCB2b2lkIFdlYkZvcm1FbGVtZW50OjpnZXRJbnB1dEVsZW1lbnRzKFdl
CiAgICAgcmVzdWx0LmFzc2lnbih0ZW1wVmVjdG9yKTsKIH0KIAordm9pZCBXZWJGb3JtRWxlbWVu
dDo6Z2V0Rm9ybUNvbnRyb2xFbGVtZW50cyhXZWJWZWN0b3I8V2ViRm9ybUNvbnRyb2xFbGVtZW50
PiYgcmVzdWx0KSBjb25zdAoreworICAgIGNvbnN0IEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGNv
bnN0VW53cmFwPEhUTUxGb3JtRWxlbWVudD4oKTsKKyAgICBWZWN0b3I8UmVmUHRyPEhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQ+ID4gdGVtcFZlY3RvcjsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGZvcm0tPmZvcm1FbGVtZW50cy5zaXplKCk7IGkrKykgeworICAgICAgICBpZiAoZm9ybS0+Zm9y
bUVsZW1lbnRzW2ldLT5oYXNMb2NhbE5hbWUoSFRNTE5hbWVzOjppbnB1dFRhZykKKyAgICAgICAg
ICAgIHx8IGZvcm0tPmZvcm1FbGVtZW50c1tpXS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6c2Vs
ZWN0VGFnKSkKKyAgICAgICAgICAgIHRlbXBWZWN0b3IuYXBwZW5kKGZvcm0tPmZvcm1FbGVtZW50
c1tpXSk7CisgICAgfQorICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7Cit9CisKIFdlYkZv
cm1FbGVtZW50OjpXZWJGb3JtRWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtRWxlbWVu
dD4mIGUpCiAgICAgOiBXZWJFbGVtZW50KGUpCiB7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklucHV0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJJbnB1dEVsZW1lbnQuY3BwCShyZXZpc2lvbiA1NjQ2MikKKysrIFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViSW5wdXRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTEgKzU1LDYgQEAg
V2ViSW5wdXRFbGVtZW50OjpJbnB1dFR5cGUgV2ViSW5wdXRFbGVtZQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxJbnB1dFR5cGU+KGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1lbnQ+KCktPmlucHV0
VHlwZSgpKTsKIH0KIAotV2ViU3RyaW5nIFdlYklucHV0RWxlbWVudDo6Zm9ybUNvbnRyb2xUeXBl
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gY29uc3RVbndyYXA8SFRNTElucHV0RWxlbWVudD4oKS0+
Zm9ybUNvbnRyb2xUeXBlKCk7Ci19Ci0KIGJvb2wgV2ViSW5wdXRFbGVtZW50Ojppc0FjdGl2YXRl
ZFN1Ym1pdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1l
bnQ+KCktPmlzQWN0aXZhdGVkU3VibWl0KCk7CkBAIC0xMTQsNyArMTA5LDcgQEAgV2ViU3RyaW5n
IFdlYklucHV0RWxlbWVudDo6bmFtZUZvckF1dG9maQogfQogCiBXZWJJbnB1dEVsZW1lbnQ6Oldl
YklucHV0RWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+JiBlbGVtKQot
ICAgIDogV2ViRWxlbWVudChlbGVtKQorICAgIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KGVsZW0p
CiB7CiB9CiAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiV2ViU2VsZWN0RWxlbWVudC5oIgorCisjaW5jbHVkZSAiSFRNTFNlbGVjdEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJXZWJTdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3ZvaWQgV2Vi
U2VsZWN0RWxlbWVudDo6c2V0VmFsdWUoY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICB1
bndyYXA8SFRNTFNlbGVjdEVsZW1lbnQ+KCktPnNldFZhbHVlKHZhbHVlKTsKK30KKworV2ViU3Ry
aW5nIFdlYlNlbGVjdEVsZW1lbnQ6OnZhbHVlKCkKK3sKKyAgICByZXR1cm4gdW53cmFwPEhUTUxT
ZWxlY3RFbGVtZW50PigpLT52YWx1ZSgpOworfQorCit2b2lkIFdlYlNlbGVjdEVsZW1lbnQ6OnNl
dEF1dG9maWxsZWQoYm9vbCkKK3sKKworfQorCitXZWJTZWxlY3RFbGVtZW50OjpXZWJTZWxlY3RF
bGVtZW50KGNvbnN0IFBhc3NSZWZQdHI8SFRNTFNlbGVjdEVsZW1lbnQ+JiBlbGVtKQorICAgIDog
V2ViRm9ybUNvbnRyb2xFbGVtZW50KGVsZW0pCit7Cit9CisKK1dlYlNlbGVjdEVsZW1lbnQmIFdl
YlNlbGVjdEVsZW1lbnQ6Om9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVt
ZW50PiYgZWxlbSkKK3sKKyAgICBtX3ByaXZhdGUgPSBlbGVtOworICAgIHJldHVybiAqdGhpczsK
K30KKworV2ViU2VsZWN0RWxlbWVudDo6b3BlcmF0b3IgUGFzc1JlZlB0cjxIVE1MU2VsZWN0RWxl
bWVudD4oKSBjb25zdAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MU2VsZWN0RWxlbWVu
dCo+KG1fcHJpdmF0ZS5nZXQoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAoKUHJvcGVy
dHkgY2hhbmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZWxlY3RFbGVtZW50LmNwcApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51686</attachid>
            <date>2010-03-25 15:58:46 -0700</date>
            <delta_ts>2010-03-25 23:16:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36562-20100325155845.patch</filename>
            <type>text/plain</type>
            <size>22843</size>
            <attacher name="James Hawkins">jhawkins</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTY1NzMpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTAtMDMtMjQgIEphbWVz
IEhhd2tpbnMgIDxqaGF3a2luc0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBJbXBsZW1lbnQgV2ViRm9ybUNv
bnRyb2xFbGVtZW50IGFuZCBXZWJTZWxlY3RFbGVtZW50LiAgQWRkCisgICAgICAgIGEgZ2V0Rm9y
bUNvbnRyb2xFbGVtZW50cyBtZXRob2QgdG8gV2ViRm9ybUVsZW1lbnQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM2NTYyCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJFbGVtZW50Lmg6CisgICAgICAgICogcHVi
bGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oOiBBZGRlZC4KKyAgICAgICAgKiBwdWJsaWMvV2Vi
Rm9ybUVsZW1lbnQuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFbGVtZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYklucHV0RWxlbWVudDo6V2ViSW5wdXRFbGVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViS2l0OjpX
ZWJJbnB1dEVsZW1lbnQ6OmFzc2lnbik6CisgICAgICAgICogcHVibGljL1dlYlNlbGVjdEVsZW1l
bnQuaDogQWRkZWQuCisgICAgICAgICogc3JjL1dlYkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJFbGVtZW50Ojppc0VuYWJsZWRGb3JtQ29udHJvbCk6CisgICAgICAgICogc3JjL1dl
YkZvcm1Db250cm9sRWxlbWVudC5jcHA6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJGb3JtRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZvcm1FbGVtZW50OjpnZXRGb3JtQ29udHJv
bEVsZW1lbnRzKToKKyAgICAgICAgKiBzcmMvV2ViSW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5wdXRFbGVtZW50OjpXZWJJbnB1dEVsZW1lbnQpOgorICAgICAgICAqIHNy
Yy9XZWJTZWxlY3RFbGVtZW50LmNwcDogQWRkZWQuCisKIDIwMTAtMDMtMjUgIEpvY2hlbiBFaXNp
bmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAJKHJldmlzaW9uIDU2NTczKQorKysgV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw2ICsxMjAsNyBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViRnJhbWUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvbnRDYWNo
ZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1Db250cm9sRWxlbWVudC5oJywK
ICAgICAgICAgICAgICAgICAncHVibGljL1dlYkZvcm1FbGVtZW50LmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViR2x5cGhDYWNoZS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dl
YkdyYXBoaWNzQ29udGV4dDNELmgnLApAQCAtMTcyLDYgKzE3Myw3IEBACiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJTZWFyY2hhYmxlRm9ybURhdGEuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJTZWN1cml0eU9yaWdpbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNl
Y3VyaXR5UG9saWN5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU2VsZWN0RWxlbWVu
dC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNldHRpbmdzLmgnLAogICAgICAgICAgICAg
ICAgICdwdWJsaWMvV2ViU2hhcmVkV29ya2VyLmgnLApAQCAtMzEwLDYgKzMxMiw3IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJGaWxlQ2hvb3NlckNvbXBsZXRpb25JbXBsLmgnLAogICAgICAg
ICAgICAgICAgICdzcmMvV2ViRm9udENhY2hlLmNwcCcsCisgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJGb3JtQ29udHJvbEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkZvcm1F
bGVtZW50LmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJGcmFtZUltcGwuY3BwJywKICAg
ICAgICAgICAgICAgICAnc3JjL1dlYkZyYW1lSW1wbC5oJywKQEAgLTM1Nyw2ICszNjAsNyBAQAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViU2VhcmNoYWJsZUZvcm1EYXRhLmNwcCcsCiAgICAgICAg
ICAgICAgICAgJ3NyYy9XZWJTZWN1cml0eU9yaWdpbi5jcHAnLAogICAgICAgICAgICAgICAgICdz
cmMvV2ViU2VjdXJpdHlQb2xpY3kuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlNlbGVj
dEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCcsCiAg
ICAgICAgICAgICAgICAgJ3NyYy9XZWJTZXR0aW5nc0ltcGwuaCcsCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkVsZW1lbnQuaAkocmV2aXNpb24gNTY1NzMpCisrKyBXZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgV2ViRWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYkVs
ZW1lbnQmIGUpIHsgV2ViTm9kZTo6YXNzaWduKGUpOyByZXR1cm4gKnRoaXM7IH0KICAgICAgICAg
dm9pZCBhc3NpZ24oY29uc3QgV2ViRWxlbWVudCYgZSkgeyBXZWJOb2RlOjphc3NpZ24oZSk7IH0K
IAorICAgICAgICBXRUJLSVRfQVBJIGJvb2wgaXNGb3JtQ29udHJvbEVsZW1lbnQoKSBjb25zdDsK
ICAgICAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgdGFnTmFtZSgpIGNvbnN0OwogICAgICAgICBX
RUJLSVRfQVBJIGJvb2wgaGFzVGFnTmFtZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsKICAgICAg
ICAgV0VCS0lUX0FQSSBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBXZWJTdHJpbmcmKSBjb25zdDsK
SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQu
aAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRm9ybUNvbnRyb2xF
bGVtZW50LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgor
ICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
KyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYkZvcm1Db250
cm9sRWxlbWVudF9oCisjZGVmaW5lIFdlYkZvcm1Db250cm9sRWxlbWVudF9oCisKKyNpbmNsdWRl
ICJXZWJFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisKKyNpZiBXRUJLSVRfSU1Q
TEVNRU5UQVRJT04KK25hbWVzcGFjZSBXZWJDb3JlIHsgY2xhc3MgSFRNTEZvcm1Db250cm9sRWxl
bWVudDsgfQorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBQcm92aWRlcyByZWFk
b25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGZvcm0gY29udHJvbCBlbGVt
ZW50IG5vZGUuCitjbGFzcyBXZWJGb3JtQ29udHJvbEVsZW1lbnQgOiBwdWJsaWMgV2ViRWxlbWVu
dCB7CitwdWJsaWM6CisgICAgV2ViRm9ybUNvbnRyb2xFbGVtZW50KCkgOiBXZWJFbGVtZW50KCkg
eyB9CisgICAgV2ViRm9ybUNvbnRyb2xFbGVtZW50KGNvbnN0IFdlYkZvcm1Db250cm9sRWxlbWVu
dCYgZSkgOiBXZWJFbGVtZW50KGUpIHsgfQorCisgICAgV2ViRm9ybUNvbnRyb2xFbGVtZW50JiBv
cGVyYXRvcj0oY29uc3QgV2ViRm9ybUNvbnRyb2xFbGVtZW50JiBlKSB7IFdlYkVsZW1lbnQ6OmFz
c2lnbihlKTsgcmV0dXJuICp0aGlzOyB9CisgICAgV0VCS0lUX0FQSSB2b2lkIGFzc2lnbihjb25z
dCBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIGUpIHsgV2ViRWxlbWVudDo6YXNzaWduKGUpOyB9CisK
KyAgICBXRUJLSVRfQVBJIGJvb2wgaXNFbmFibGVkKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBX
ZWJTdHJpbmcgZm9ybUNvbnRyb2xOYW1lKCkgY29uc3Q7CisgICAgV0VCS0lUX0FQSSBXZWJTdHJp
bmcgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBuYW1lIHRo
YXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgfGVsZW1lbnR8IHdoZW4KKyAgICAv
LyBzdG9yaW5nIGF1dG9maWxsIGRhdGEuICBUaGlzIGlzIGVpdGhlciB0aGUgZmllbGQgbmFtZSBv
ciBpdHMgaWQsIGFuIGVtcHR5CisgICAgLy8gc3RyaW5nIGlmIGl0IGhhcyBubyBuYW1lIGFuZCBu
byBpZC4KKyAgICBXRUJLSVRfQVBJIFdlYlN0cmluZyBuYW1lRm9yQXV0b2ZpbGwoKSBjb25zdDsK
KworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorICAgIFdlYkZvcm1Db250cm9sRWxlbWVudChj
b25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4mKTsK
KyAgICBXZWJGb3JtQ29udHJvbEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXVEY6OlBhc3NSZWZQ
dHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4mKTsKKyAgICBvcGVyYXRvciBXVEY6
OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKSBjb25zdDsKKyNl
bmRpZgorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgoKUHJvcGVydHkgY2hh
bmdlcyBvbjogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuaApf
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBMRgoKSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRm9ybUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZvcm1FbGVtZW50LmgJKHJldmlzaW9uIDU2NTczKQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGb3JtRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICsz
MSw3IEBACiAjaWZuZGVmIFdlYkZvcm1FbGVtZW50X2gKICNkZWZpbmUgV2ViRm9ybUVsZW1lbnRf
aAogCi0jaW5jbHVkZSAiV2ViSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSAiV2ViRWxlbWVudC5o
IgogI2luY2x1ZGUgIldlYlZlY3Rvci5oIgogCiAjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCkBA
IC0zOSw2ICszOSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7IGNsYXNzIEhUTUxGb3JtRWxlbWVu
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CisKKyAgICBjbGFzcyBXZWJJbnB1dEVsZW1l
bnQ7CisgICAgY2xhc3MgV2ViRm9ybUNvbnRyb2xFbGVtZW50OworCiAgICAgLy8gQSBjb250YWlu
ZXIgZm9yIHBhc3NpbmcgYXJvdW5kIGEgcmVmZXJlbmNlIHRvIGEgZm9ybSBlbGVtZW50LiAgUHJv
dmlkZXMKICAgICAvLyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHRoZSBmb3JtLgogICAgIGNsYXNz
IFdlYkZvcm1FbGVtZW50IDogcHVibGljIFdlYkVsZW1lbnQgewpAQCAtNjIsNyArNjYsOSBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgV0VCS0lUX0FQSSB2b2lkIHN1Ym1pdCgpOwogICAg
ICAgICAvLyBGSVhNRTogRGVwcmVjYXRlIGFuZCByZXBsYWNlIHdpdGggV2ViVmVjdG9yPFdlYkVs
ZW1lbnQ+LgogICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZ2V0TmFtZWRFbGVtZW50cyhjb25zdCBX
ZWJTdHJpbmcmLCBXZWJWZWN0b3I8V2ViTm9kZT4mKTsKKyAgICAgICAgLy8gREVQUkVDQVRFRDog
UmVwbGFjZWQgYnkgZ2V0Rm9ybUNvbnRyb2xFbGVtZW50cy4KICAgICAgICAgV0VCS0lUX0FQSSB2
b2lkIGdldElucHV0RWxlbWVudHMoV2ViVmVjdG9yPFdlYklucHV0RWxlbWVudD4mKSBjb25zdDsK
KyAgICAgICAgV0VCS0lUX0FQSSB2b2lkIGdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9y
PFdlYkZvcm1Db250cm9sRWxlbWVudD4mKSBjb25zdDsKIAogI2lmIFdFQktJVF9JTVBMRU1FTlRB
VElPTgogICAgICAgICBXZWJGb3JtRWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29y
ZTo6SFRNTEZvcm1FbGVtZW50PiYpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
bnB1dEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklu
cHV0RWxlbWVudC5oCShyZXZpc2lvbiA1NjU3MykKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKICNpZm5k
ZWYgV2ViSW5wdXRFbGVtZW50X2gKICNkZWZpbmUgV2ViSW5wdXRFbGVtZW50X2gKIAotI2luY2x1
ZGUgIldlYkVsZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJGb3JtQ29udHJvbEVsZW1lbnQuaCIKIAog
I2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgogbmFtZXNwYWNlIFdlYkNvcmUgeyBjbGFzcyBIVE1M
SW5wdXRFbGVtZW50OyB9CkBAIC00MCwxMyArNDAsMTMgQEAgbmFtZXNwYWNlIFdlYkNvcmUgeyBj
bGFzcyBIVE1MSW5wdXRFbGVtZQogbmFtZXNwYWNlIFdlYktpdCB7CiAKICAgICAvLyBQcm92aWRl
cyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0aWVzIG9mIGEgRE9NIGlucHV0IGVsZW1l
bnQgbm9kZS4KLSAgICBjbGFzcyBXZWJJbnB1dEVsZW1lbnQgOiBwdWJsaWMgV2ViRWxlbWVudCB7
CisgICAgY2xhc3MgV2ViSW5wdXRFbGVtZW50IDogcHVibGljIFdlYkZvcm1Db250cm9sRWxlbWVu
dCB7CiAgICAgcHVibGljOgotICAgICAgICBXZWJJbnB1dEVsZW1lbnQoKSA6IFdlYkVsZW1lbnQo
KSB7IH0KLSAgICAgICAgV2ViSW5wdXRFbGVtZW50KGNvbnN0IFdlYklucHV0RWxlbWVudCYgbikg
OiBXZWJFbGVtZW50KG4pIHsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQoKSA6IFdlYkZvcm1D
b250cm9sRWxlbWVudCgpIHsgfQorICAgICAgICBXZWJJbnB1dEVsZW1lbnQoY29uc3QgV2ViSW5w
dXRFbGVtZW50JiBlKSA6IFdlYkZvcm1Db250cm9sRWxlbWVudChlKSB7IH0KIAotICAgICAgICBX
ZWJJbnB1dEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2Vi
RWxlbWVudDo6YXNzaWduKG4pOyByZXR1cm4gKnRoaXM7IH0KLSAgICAgICAgV0VCS0lUX0FQSSB2
b2lkIGFzc2lnbihjb25zdCBXZWJJbnB1dEVsZW1lbnQmIG4pIHsgV2ViRWxlbWVudDo6YXNzaWdu
KG4pOyB9CisgICAgICAgIFdlYklucHV0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdlYklucHV0
RWxlbWVudCYgZSkgeyBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6OmFzc2lnbihlKTsgcmV0dXJuICp0
aGlzOyB9CisgICAgICAgIFdFQktJVF9BUEkgdm9pZCBhc3NpZ24oY29uc3QgV2ViSW5wdXRFbGVt
ZW50JiBlKSB7IFdlYkZvcm1Db250cm9sRWxlbWVudDo6YXNzaWduKGUpOyB9CiAKICAgICAgICAg
ZW51bSBJbnB1dFR5cGUgewogICAgICAgICAgICAgVGV4dCA9IDAsCkBAIC03OCw3ICs3OCw2IEBA
IG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICBXRUJLSVRfQVBJIGJvb2wgYXV0b0NvbXBsZXRl
KCkgY29uc3Q7CiAgICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0VuYWJsZWRGb3JtQ29udHJvbCgp
IGNvbnN0OwogICAgICAgICBXRUJLSVRfQVBJIElucHV0VHlwZSBpbnB1dFR5cGUoKSBjb25zdDsK
LSAgICAgICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CiAg
ICAgICAgIFdFQktJVF9BUEkgYm9vbCBpc0FjdGl2YXRlZFN1Ym1pdCgpIGNvbnN0OwogICAgICAg
ICBXRUJLSVRfQVBJIHZvaWQgc2V0QWN0aXZhdGVkU3VibWl0KGJvb2wpOwogICAgICAgICBXRUJL
SVRfQVBJIHZvaWQgc2V0VmFsdWUoY29uc3QgV2ViU3RyaW5nJiB2YWx1ZSk7CkBAIC04NiwxMCAr
ODUsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRB
dXRvZmlsbGVkKGJvb2wpOwogICAgICAgICBXRUJLSVRfQVBJIHZvaWQgZGlzcGF0Y2hGb3JtQ29u
dHJvbENoYW5nZUV2ZW50KCk7CiAgICAgICAgIFdFQktJVF9BUEkgdm9pZCBzZXRTZWxlY3Rpb25S
YW5nZShpbnQsIGludCk7CisgICAgICAgIC8vIERFUFJFQ0FURUQ6IFRoZSBmb2xsb3dpbmcgdHdv
IG1ldGhvZHMgaGF2ZSBiZWVuIG1vdmVkIHRvIFdlYkZvcm1Db250cm9sRWxlbWVudC4KICAgICAg
ICAgV0VCS0lUX0FQSSBXZWJTdHJpbmcgbmFtZSgpIGNvbnN0OwogICAgICAgICAvLyBSZXR1cm5z
IHRoZSBuYW1lIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoZSBzcGVjaWZpZWQgfGVsZW1lbnR8
IHdoZW4KLSAgICAgICAgLy8gc3RvcmluZyBhdXRvZmlsbCBkYXRhLiAgVGhpcyBpcyBlaXRoZXIg
dGhlIGZpZWxkIG5hbWUgb3IgaXRzIGlkLCBhbiBlbXB0eQotICAgICAgICAvLyBzdHJpbmcgaWYg
aXQgaGFzIG5vIG5hbWUgYW5kIG5vIGlkLgorICAgICAgICAvLyBzdG9yaW5nIEF1dG9GaWxsIGRh
dGEuICBUaGlzIGlzIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciBpdHMgaWQsIGFuCisgICAgICAg
IC8vIGVtcHR5IHN0cmluZyBpZiBpdCBoYXMgbm8gbmFtZSBhbmQgbm8gaWQuCiAgICAgICAgIFdF
QktJVF9BUEkgV2ViU3RyaW5nIG5hbWVGb3JBdXRvZmlsbCgpIGNvbnN0OwogCiAjaWYgV0VCS0lU
X0lNUExFTUVOVEFUSU9OCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlbGVjdEVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNlbGVjdEVs
ZW1lbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VsZWN0
RWxlbWVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJTZWxlY3RF
bGVtZW50X2gKKyNkZWZpbmUgV2ViU2VsZWN0RWxlbWVudF9oCisKKyNpbmNsdWRlICJXZWJGb3Jt
Q29udHJvbEVsZW1lbnQuaCIKKworI2lmIFdFQktJVF9JTVBMRU1FTlRBVElPTgorbmFtZXNwYWNl
IFdlYkNvcmUgeyBjbGFzcyBIVE1MU2VsZWN0RWxlbWVudDsgfQorI2VuZGlmCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBQcm92aWRlcyByZWFkb25seSBhY2Nlc3MgdG8gc29tZSBwcm9wZXJ0
aWVzIG9mIGEgRE9NIHNlbGVjdCBlbGVtZW50IG5vZGUuCitjbGFzcyBXZWJTZWxlY3RFbGVtZW50
IDogcHVibGljIFdlYkZvcm1Db250cm9sRWxlbWVudCB7CitwdWJsaWM6CisgICAgV2ViU2VsZWN0
RWxlbWVudCgpIDogV2ViRm9ybUNvbnRyb2xFbGVtZW50KCkgeyB9CisgICAgV2ViU2VsZWN0RWxl
bWVudChjb25zdCBXZWJTZWxlY3RFbGVtZW50JiBlKSA6IFdlYkZvcm1Db250cm9sRWxlbWVudChl
KSB7IH0KKworICAgIFdlYlNlbGVjdEVsZW1lbnQmIG9wZXJhdG9yPShjb25zdCBXZWJTZWxlY3RF
bGVtZW50JiBlKSB7IFdlYkZvcm1Db250cm9sRWxlbWVudDo6YXNzaWduKGUpOyByZXR1cm4gKnRo
aXM7IH0KKyAgICBXRUJLSVRfQVBJIHZvaWQgYXNzaWduKGNvbnN0IFdlYlNlbGVjdEVsZW1lbnQm
IGUpIHsgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojphc3NpZ24oZSk7IH0KKworICAgIFdFQktJVF9B
UEkgdm9pZCBzZXRWYWx1ZShjb25zdCBXZWJTdHJpbmcmKTsKKyAgICBXRUJLSVRfQVBJIFdlYlN0
cmluZyB2YWx1ZSgpOworCisjaWYgV0VCS0lUX0lNUExFTUVOVEFUSU9OCisgICAgV2ViU2VsZWN0
RWxlbWVudChjb25zdCBXVEY6OlBhc3NSZWZQdHI8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ+
Jik7CisgICAgV2ViU2VsZWN0RWxlbWVudCYgb3BlcmF0b3I9KGNvbnN0IFdURjo6UGFzc1JlZlB0
cjxXZWJDb3JlOjpIVE1MU2VsZWN0RWxlbWVudD4mKTsKKyAgICBvcGVyYXRvciBXVEY6OlBhc3NS
ZWZQdHI8V2ViQ29yZTo6SFRNTFNlbGVjdEVsZW1lbnQ+KCkgY29uc3Q7CisjZW5kaWYKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKClByb3BlcnR5IGNoYW5nZXMgb246IFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2VsZWN0RWxlbWVudC5oCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTog
c3ZuOmVvbC1zdHlsZQogICArIExGCgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA1NjU3MykKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDExIEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorYm9vbCBXZWJFbGVtZW50Ojppc0Zvcm1Db250cm9s
RWxlbWVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNvbnN0VW53cmFwPEVsZW1lbnQ+KCktPmlz
Rm9ybUNvbnRyb2xFbGVtZW50KCk7Cit9CisKIFdlYlN0cmluZyBXZWJFbGVtZW50Ojp0YWdOYW1l
KCkgY29uc3QKIHsKICAgICByZXR1cm4gY29uc3RVbndyYXA8RWxlbWVudD4oKS0+dGFnTmFtZSgp
OwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGb3JtQ29udHJvbEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVtZW50LmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViRm9ybUNvbnRyb2xFbGVt
ZW50LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisg
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJXZWJGb3JtQ29udHJvbEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxGb3Jt
Q29udHJvbEVsZW1lbnQuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorCit1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2Jvb2wgV2ViRm9ybUNv
bnRyb2xFbGVtZW50Ojppc0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBjb25zdFVud3Jh
cDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpLT5pc0VuYWJsZWRGb3JtQ29udHJvbCgpOworfQor
CitXZWJTdHJpbmcgV2ViRm9ybUNvbnRyb2xFbGVtZW50Ojpmb3JtQ29udHJvbE5hbWUoKSBjb25z
dAoreworICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpLT5m
b3JtQ29udHJvbE5hbWUoKTsKK30KKworV2ViU3RyaW5nIFdlYkZvcm1Db250cm9sRWxlbWVudDo6
Zm9ybUNvbnRyb2xUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY29uc3RVbndyYXA8SFRNTEZv
cm1Db250cm9sRWxlbWVudD4oKS0+Zm9ybUNvbnRyb2xUeXBlKCk7Cit9CisKK1dlYlN0cmluZyBX
ZWJGb3JtQ29udHJvbEVsZW1lbnQ6Om5hbWVGb3JBdXRvZmlsbCgpIGNvbnN0Cit7CisgICAgU3Ry
aW5nIG5hbWUgPSBjb25zdFVud3JhcDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpLT5uYW1lKCk7
CisgICAgU3RyaW5nIHRyaW1tZWROYW1lID0gbmFtZS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBp
ZiAoIXRyaW1tZWROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRyaW1tZWROYW1lOwor
ICAgIG5hbWUgPSBjb25zdFVud3JhcDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50PigpLT5nZXRBdHRy
aWJ1dGUoSFRNTE5hbWVzOjppZEF0dHIpOworICAgIHRyaW1tZWROYW1lID0gbmFtZS5zdHJpcFdo
aXRlU3BhY2UoKTsKKyAgICBpZiAoIXRyaW1tZWROYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIHRyaW1tZWROYW1lOworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworV2ViRm9ybUNvbnRy
b2xFbGVtZW50OjpXZWJGb3JtQ29udHJvbEVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PiYgZWxlbSkKKyAgICA6IFdlYkVsZW1lbnQoZWxlbSkKK3sKK30KKwor
V2ViRm9ybUNvbnRyb2xFbGVtZW50JiBXZWJGb3JtQ29udHJvbEVsZW1lbnQ6Om9wZXJhdG9yPShj
b25zdCBQYXNzUmVmUHRyPEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ+JiBlbGVtKQoreworICAgIG1f
cHJpdmF0ZSA9IGVsZW07CisgICAgcmV0dXJuICp0aGlzOworfQorCitXZWJGb3JtQ29udHJvbEVs
ZW1lbnQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SFRNTEZvcm1Db250cm9sRWxlbWVudD4oKSBjb25z
dAoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDxIVE1MRm9ybUNvbnRyb2xFbGVtZW50Kj4obV9w
cml2YXRlLmdldCgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CgpQcm9wZXJ0eSBjaGFu
Z2VzIG9uOiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZvcm1Db250cm9sRWxlbWVudC5jcHAKX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkZvcm1FbGVtZW50LmNwcAkocmV2aXNpb24gNTY1NzMpCisrKyBXZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZvcm1FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBA
QAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJXZWJGb3JtQ29udHJvbEVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNsdWRlICJXZWJTdHJp
bmcuaCIKICNpbmNsdWRlICJXZWJVUkwuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpA
QCAtODgsNiArOTAsMTggQEAgdm9pZCBXZWJGb3JtRWxlbWVudDo6Z2V0SW5wdXRFbGVtZW50cyhX
ZQogICAgIHJlc3VsdC5hc3NpZ24odGVtcFZlY3Rvcik7CiB9CiAKK3ZvaWQgV2ViRm9ybUVsZW1l
bnQ6OmdldEZvcm1Db250cm9sRWxlbWVudHMoV2ViVmVjdG9yPFdlYkZvcm1Db250cm9sRWxlbWVu
dD4mIHJlc3VsdCkgY29uc3QKK3sKKyAgICBjb25zdCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSBj
b25zdFVud3JhcDxIVE1MRm9ybUVsZW1lbnQ+KCk7CisgICAgVmVjdG9yPFJlZlB0cjxIVE1MRm9y
bUNvbnRyb2xFbGVtZW50PiA+IHRlbXBWZWN0b3I7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmb3JtLT5mb3JtRWxlbWVudHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgaWYgKGZvcm0tPmZv
cm1FbGVtZW50c1tpXS0+aGFzTG9jYWxOYW1lKEhUTUxOYW1lczo6aW5wdXRUYWcpCisgICAgICAg
ICAgICB8fCBmb3JtLT5mb3JtRWxlbWVudHNbaV0tPmhhc0xvY2FsTmFtZShIVE1MTmFtZXM6OnNl
bGVjdFRhZykpCisgICAgICAgICAgICB0ZW1wVmVjdG9yLmFwcGVuZChmb3JtLT5mb3JtRWxlbWVu
dHNbaV0pOworICAgIH0KKyAgICByZXN1bHQuYXNzaWduKHRlbXBWZWN0b3IpOworfQorCiBXZWJG
b3JtRWxlbWVudDo6V2ViRm9ybUVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MRm9ybUVsZW1l
bnQ+JiBlKQogICAgIDogV2ViRWxlbWVudChlKQogewpJbmRleDogV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJbnB1dEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSW5wdXRFbGVtZW50LmNwcAkocmV2aXNpb24gNTY1NzMpCisrKyBXZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklucHV0RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU1LDExICs1NSw2IEBA
IFdlYklucHV0RWxlbWVudDo6SW5wdXRUeXBlIFdlYklucHV0RWxlbWUKICAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8SW5wdXRUeXBlPihjb25zdFVud3JhcDxIVE1MSW5wdXRFbGVtZW50PigpLT5pbnB1
dFR5cGUoKSk7CiB9CiAKLVdlYlN0cmluZyBXZWJJbnB1dEVsZW1lbnQ6OmZvcm1Db250cm9sVHlw
ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNvbnN0VW53cmFwPEhUTUxJbnB1dEVsZW1lbnQ+KCkt
PmZvcm1Db250cm9sVHlwZSgpOwotfQotCiBib29sIFdlYklucHV0RWxlbWVudDo6aXNBY3RpdmF0
ZWRTdWJtaXQoKSBjb25zdAogewogICAgIHJldHVybiBjb25zdFVud3JhcDxIVE1MSW5wdXRFbGVt
ZW50PigpLT5pc0FjdGl2YXRlZFN1Ym1pdCgpOwpAQCAtMTE0LDcgKzEwOSw3IEBAIFdlYlN0cmlu
ZyBXZWJJbnB1dEVsZW1lbnQ6Om5hbWVGb3JBdXRvZmkKIH0KIAogV2ViSW5wdXRFbGVtZW50OjpX
ZWJJbnB1dEVsZW1lbnQoY29uc3QgUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiYgZWxlbSkK
LSAgICA6IFdlYkVsZW1lbnQoZWxlbSkKKyAgICA6IFdlYkZvcm1Db250cm9sRWxlbWVudChlbGVt
KQogewogfQogCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNlbGVjdEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIldlYlNlbGVjdEVsZW1lbnQuaCIKKworI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50Lmgi
CisjaW5jbHVkZSAiV2ViU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKwor
dXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit2b2lkIFdl
YlNlbGVjdEVsZW1lbnQ6OnNldFZhbHVlKGNvbnN0IFdlYlN0cmluZyYgdmFsdWUpCit7CisgICAg
dW53cmFwPEhUTUxTZWxlY3RFbGVtZW50PigpLT5zZXRWYWx1ZSh2YWx1ZSk7Cit9CisKK1dlYlN0
cmluZyBXZWJTZWxlY3RFbGVtZW50Ojp2YWx1ZSgpCit7CisgICAgcmV0dXJuIHVud3JhcDxIVE1M
U2VsZWN0RWxlbWVudD4oKS0+dmFsdWUoKTsKK30KKworV2ViU2VsZWN0RWxlbWVudDo6V2ViU2Vs
ZWN0RWxlbWVudChjb25zdCBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiYgZWxlbSkKKyAg
ICA6IFdlYkZvcm1Db250cm9sRWxlbWVudChlbGVtKQoreworfQorCitXZWJTZWxlY3RFbGVtZW50
JiBXZWJTZWxlY3RFbGVtZW50OjpvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxIVE1MU2VsZWN0
RWxlbWVudD4mIGVsZW0pCit7CisgICAgbV9wcml2YXRlID0gZWxlbTsKKyAgICByZXR1cm4gKnRo
aXM7Cit9CisKK1dlYlNlbGVjdEVsZW1lbnQ6Om9wZXJhdG9yIFBhc3NSZWZQdHI8SFRNTFNlbGVj
dEVsZW1lbnQ+KCkgY29uc3QKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVs
ZW1lbnQqPihtX3ByaXZhdGUuZ2V0KCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKClBy
b3BlcnR5IGNoYW5nZXMgb246IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2VsZWN0RWxlbWVudC5j
cHAKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fXwpOYW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgTEYKCg==
</data>
<flag name="review"
          id="34999"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>