<?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>44132</bug_id>
          
          <creation_ts>2010-08-17 14:43:12 -0700</creation_ts>
          <short_desc>Implement virtual path utilities for FileSystem API</short_desc>
          <delta_ts>2010-08-24 21:31:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>42903</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Kinuko Yasuda">kinuko</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dumi</cc>
    
    <cc>ericu</cc>
    
    <cc>fishd</cc>
    
    <cc>michaeln</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>265777</commentid>
    <comment_count>0</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-17 14:43:12 -0700</bug_when>
    <thetext>Add file path utilities for HTML5 FileSystem API.
We need some utility class that takes care of path sanitization (cleaning up relative references), concatenation and etc for virtual filesystem paths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>265794</commentid>
    <comment_count>1</comment_count>
      <attachid>64643</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-17 15:11:43 -0700</bug_when>
    <thetext>Created attachment 64643
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266356</commentid>
    <comment_count>2</comment_count>
      <attachid>64767</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 13:50:28 -0700</bug_when>
    <thetext>Created attachment 64767
Patch

Simplified the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266554</commentid>
    <comment_count>3</comment_count>
      <attachid>64767</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-18 22:54:39 -0700</bug_when>
    <thetext>Comment on attachment 64767
Patch

(seems like it&apos;ll need more logic)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268032</commentid>
    <comment_count>4</comment_count>
      <attachid>65145</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-23 11:49:24 -0700</bug_when>
    <thetext>Created attachment 65145
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268277</commentid>
    <comment_count>5</comment_count>
      <attachid>65145</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-23 19:52:45 -0700</bug_when>
    <thetext>Comment on attachment 65145
Patch

WebCore/storage/DOMFilePath.cpp:43
 +  const char* DOMFilePath::root = &quot;/&quot;;
const char DOMFilePath::root[] = &quot;/&quot;; ?

WebCore/storage/DOMFilePath.cpp:73
 +      return path;
This seems odd, when compared to getName.  Is returning path really the right thing to do in each case?

WebCore/storage/DOMFilePath.cpp:78
 +      return mayBeChild.startsWith(path);
/foo/bar is not the parent of /foo/barrister.

WebCore/storage/DOMFilePath.cpp:115
 +      const char* p = utf8String.data();
What happens here if the UTF-8 representation of a character in the path doesn&apos;t fit in a char?

WebCore/storage/DOMFilePath.cpp:125
 +      if (unallowedNamesRegExp1.match(path) &gt;= 0)
Is this match case-sensitive?  It needs to be case-insensitive on all of these.

WebCore/storage/DOMFilePath.cpp:122
 +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedNamesRegExp1, (&quot;/(CON|PRN|AUX|NUL)([\\./]|$)&quot;, TextCaseInsensitive));
I&apos;ve never used RegularExpressions from WebKit internally before.  Is that last &apos;/&apos; in the right place?

WebCore/storage/DOMFilePath.cpp:131
 +      DEFINE_STATIC_LOCAL(RegularExpression, endingRegExp, (&quot;[\\. ](/|$)&quot;, TextCaseInsensitive));
What about other kinds of whitespace [tab, vtab, newline, cr, ...]

WebCore/storage/DOMFilePath.cpp:138
 +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedCharsRegExp, (&quot;[\\\\&lt;&gt;&lt;&gt;:\\?\\*\&quot;|]&quot;, TextCaseInsensitive));
You&apos;ve got &quot;&lt;&gt;&quot; in there twice.

WebCore/storage/DOMFilePath.cpp:108
 +  bool DOMFilePath::isValid(const String&amp; path)
Perhaps &quot;isValidPath&quot; instead of just &quot;isValid&quot;?  One might call this by accident for a name and let something containing a directory separator slip through.

WebCore/storage/DOMFilePath.h:44
 +      static const char* root;
How about static const char root[]?

WebCore/storage/DOMFilePath.cpp:74
 +  }
I think it might be better to return an empty string, or perhaps make sure not to be called in that case.  What&apos;s the directory of &quot;foo&quot;?  I suppose it could be &quot;.&quot;.

WebCore/storage/DOMFilePath.h:52
 +      // Checks if a given path is a parent of mayBeChild. This method assumes given paths are absolute and do not have extra parent references.
Explain what a parent reference is.  Do you mean &quot;../&quot;?

WebCore/storage/DOMFilePath.h:55
 +      // Appends the separator at the end of the path.
...if it&apos;s not there already.

WebCore/storage/DOMFilePath.h:71
 +      // Removes extra parent (&quot;..&quot;) references. This doesn&apos;t take all the references if it goes beyond the root directory.
It does more than that.  How about something like this?

// Evaluates all &quot;../&quot; and &quot;./&quot; segments.  Note that &quot;/../&quot; expands to &quot;/&quot;, so you can&apos;t ever refer to anything above the root directory.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268321</commentid>
    <comment_count>6</comment_count>
      <attachid>65211</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-23 23:08:25 -0700</bug_when>
    <thetext>Created attachment 65211
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268322</commentid>
    <comment_count>7</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-23 23:11:38 -0700</bug_when>
    <thetext>Thanks for your careful review!

(In reply to comment #5)
&gt; (From update of attachment 65145 [details])
&gt; WebCore/storage/DOMFilePath.cpp:43
&gt;  +  const char* DOMFilePath::root = &quot;/&quot;;
&gt; const char DOMFilePath::root[] = &quot;/&quot;; ?

Fixed.

&gt; WebCore/storage/DOMFilePath.cpp:73
&gt;  +      return path;
&gt; This seems odd, when compared to getName.  Is returning path really the right thing to do in each case?

I wasn&apos;t sure what to return, but I changed this to return an empty string.  As you say probably &quot;.&quot; or an empty string would be the expected value.

&gt; WebCore/storage/DOMFilePath.cpp:78
&gt;  +      return mayBeChild.startsWith(path);
&gt; /foo/bar is not the parent of /foo/barrister.

Oh of course not... fixed.

&gt; WebCore/storage/DOMFilePath.cpp:115
&gt;  +      const char* p = utf8String.data();
&gt; What happens here if the UTF-8 representation of a character in the path doesn&apos;t fit in a char?

Fixed.

&gt; WebCore/storage/DOMFilePath.cpp:125
&gt;  +      if (unallowedNamesRegExp1.match(path) &gt;= 0)
&gt; Is this match case-sensitive?  It needs to be case-insensitive on all of these.

All of RegExps are case-insensitive (CaseInsensitive).

&gt; WebCore/storage/DOMFilePath.cpp:122
&gt;  +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedNamesRegExp1, (&quot;/(CON|PRN|AUX|NUL)([\\./]|$)&quot;, TextCaseInsensitive));
&gt; I&apos;ve never used RegularExpressions from WebKit internally before.  Is that last &apos;/&apos; in the right place?

It&apos;s in the place I intended and my intension was: it should match if CON, PRN, AUX or NUL is followed by a period (\\.), slash (/) or the end of string ($).  Does that sound right?

&gt; WebCore/storage/DOMFilePath.cpp:131
&gt;  +      DEFINE_STATIC_LOCAL(RegularExpression, endingRegExp, (&quot;[\\. ](/|$)&quot;, TextCaseInsensitive));
&gt; What about other kinds of whitespace [tab, vtab, newline, cr, ...]

Replaced &apos; &apos; with &apos;\s&apos;.

&gt; WebCore/storage/DOMFilePath.cpp:138
&gt;  +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedCharsRegExp, (&quot;[\\\\&lt;&gt;&lt;&gt;:\\?\\*\&quot;|]&quot;, TextCaseInsensitive));
&gt; You&apos;ve got &quot;&lt;&gt;&quot; in there twice.

Fixed.

&gt; WebCore/storage/DOMFilePath.cpp:108
&gt;  +  bool DOMFilePath::isValid(const String&amp; path)
&gt; Perhaps &quot;isValidPath&quot; instead of just &quot;isValid&quot;?  One might call this by accident for a name and let something containing a directory separator slip through.

Fixed.

&gt; WebCore/storage/DOMFilePath.h:44
&gt;  +      static const char* root;
&gt; How about static const char root[]?

Fixed.

&gt; WebCore/storage/DOMFilePath.h:52
&gt;  +      // Checks if a given path is a parent of mayBeChild. This method assumes given paths are absolute and do not have extra parent references.
&gt; Explain what a parent reference is.  Do you mean &quot;../&quot;?

Yes I meant a reference to a parent, i.e. &quot;..&quot;.  Changed the expression a bit.

&gt; WebCore/storage/DOMFilePath.h:55
&gt;  +      // Appends the separator at the end of the path.
&gt; ...if it&apos;s not there already.

Fixed.

&gt; WebCore/storage/DOMFilePath.h:71
&gt;  +      // Removes extra parent (&quot;..&quot;) references. This doesn&apos;t take all the references if it goes beyond the root directory.
&gt; It does more than that.  How about something like this?
&gt;
&gt; // Evaluates all &quot;../&quot; and &quot;./&quot; segments.  Note that &quot;/../&quot; expands to &quot;/&quot;, so you can&apos;t ever refer to anything above the root directory.

Changed the comment (and its behavior) as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268343</commentid>
    <comment_count>8</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-23 23:44:06 -0700</bug_when>
    <thetext>&gt; &gt; WebCore/storage/DOMFilePath.cpp:125
&gt; &gt;  +      if (unallowedNamesRegExp1.match(path) &gt;= 0)
&gt; &gt; Is this match case-sensitive?  It needs to be case-insensitive on all of these.
&gt; 
&gt; All of RegExps are case-insensitive (CaseInsensitive).

I meant... all of the regexps used here are declared with CaseInsensitive for case-insensitive match.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268655</commentid>
    <comment_count>9</comment_count>
      <attachid>65211</attachid>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-24 11:02:40 -0700</bug_when>
    <thetext>Comment on attachment 65211
Patch

WebCore/storage/DOMFilePath.cpp:124
 +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedNamesRegExp1, (&quot;/(CON|PRN|AUX|NUL)([\\./]|$)&quot;, TextCaseInsensitive));
Ah, I think I see how this is supposed to work.  However, you&apos;re requiring a leading &apos;/&apos; before matching for e.g. &quot;CON&quot;.  If this isn&apos;t an absolute path, that&apos;s not safe.  &quot;CON&quot; and &quot;CON/safe/rest/of/path&quot; will pass the test.  Or you could assert and document that the input path must be absolute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268663</commentid>
    <comment_count>10</comment_count>
      <attachid>65298</attachid>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-24 11:12:33 -0700</bug_when>
    <thetext>Created attachment 65298
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268664</commentid>
    <comment_count>11</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-24 11:13:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 65211 [details])
&gt; WebCore/storage/DOMFilePath.cpp:124
&gt;  +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedNamesRegExp1, (&quot;/(CON|PRN|AUX|NUL)([\\./]|$)&quot;, TextCaseInsensitive));
&gt; Ah, I think I see how this is supposed to work.  However, you&apos;re requiring a leading &apos;/&apos; before matching for e.g. &quot;CON&quot;.  If this isn&apos;t an absolute path, that&apos;s not safe.  &quot;CON&quot; and &quot;CON/safe/rest/of/path&quot; will pass the test.  Or you could assert and document that the input path must be absolute.

Right, fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268889</commentid>
    <comment_count>12</comment_count>
    <who name="Eric U.">ericu</who>
    <bug_when>2010-08-24 16:25:03 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #9)
&gt; &gt; (From update of attachment 65211 [details] [details])
&gt; &gt; WebCore/storage/DOMFilePath.cpp:124
&gt; &gt;  +      DEFINE_STATIC_LOCAL(RegularExpression, unallowedNamesRegExp1, (&quot;/(CON|PRN|AUX|NUL)([\\./]|$)&quot;, TextCaseInsensitive));
&gt; &gt; Ah, I think I see how this is supposed to work.  However, you&apos;re requiring a leading &apos;/&apos; before matching for e.g. &quot;CON&quot;.  If this isn&apos;t an absolute path, that&apos;s not safe.  &quot;CON&quot; and &quot;CON/safe/rest/of/path&quot; will pass the test.  Or you could assert and document that the input path must be absolute.
&gt; 
&gt; Right, fixed.

OK, LGTM.  Now you need a reviewer ;&apos;&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268890</commentid>
    <comment_count>13</comment_count>
      <attachid>65298</attachid>
    <who name="Dumitru Daniliuc">dumi</who>
    <bug_when>2010-08-24 16:32:57 -0700</bug_when>
    <thetext>Comment on attachment 65298
Patch

r=me. LGTM + i trust eric&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268995</commentid>
    <comment_count>14</comment_count>
    <who name="Kinuko Yasuda">kinuko</who>
    <bug_when>2010-08-24 21:31:38 -0700</bug_when>
    <thetext>Committed r65975: &lt;http://trac.webkit.org/changeset/65975&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64643</attachid>
            <date>2010-08-17 15:11:43 -0700</date>
            <delta_ts>2010-08-18 13:50:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44132-20100817151142.patch</filename>
            <type>text/plain</type>
            <size>26707</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDE3ZjE4ZTZhMGRlYzczZGE5MmExYTdlYjEzNzcxNTkyNjhmNWZiNDIuLjY0NTEw
YWZkMTY4YTQyMjFhMzM4MTQ2MGVhMmQzODI5NzU2NWIwYzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ1NSw2ICsx
NDU1LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnku
Y3BwCiAgICAgc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCiAgICAgc3RvcmFnZS9ET01GaWxl
U3lzdGVtLmNwcAorICAgIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbVBhdGguY3BwCiAgICAgc3RvcmFn
ZS9FbnRyeS5jcHAKICAgICBzdG9yYWdlL0VudHJ5QXJyYXkuY3BwCiAgICAgc3RvcmFnZS9GaWxl
RW50cnkuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDA2MGJiZTU3M2Y3MTY3OTg2MDNlYWI5Yjc5ZjNhNjhhMTY3ZGZkNDcuLmUxMDJm
OTI2MGI3ZGJiMzIwZjUwMGU0YzQzMDM4MmQ0ZDQxZTI2ZjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTAt
MDgtMTcgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBmaWxlIHBhdGggdXRpbGl0
aWVzIGZvciBIVE1MNSBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMzIKKworICAgICAgICBBZGRpbmcgRE9NRmlsZVN5c3Rl
bVBhdGggY2xhc3MgdGhhdCB3cmFwcyBhIHBhdGggc3RyaW5nIGFuZCByZXByZXNlbnRzIGFuIGFi
c29sdXRlIHZpcnR1YWwgcGF0aCBmb3IgSFRNTDUgRmlsZVN5c3RlbS4gIChUaGlzIGRvZXNuJ3Qg
bmVlZCB0byBiZSBhIGNsYXNzIGJ1dCBqdXN0IGEgc2V0IG9mIHV0aWxpdHkgbWV0aG9kcywgYnV0
IEkgbWFkZSBpdCBhIGNsYXNzIGp1c3QgdG8gbWFrZSBpdCBlYXNpZXIgdG8gZGlzdGluZ3Vpc2gg
dmlydHVhbCBwYXRocyBmcm9tIHN5c3RlbSBwYXRocy4pCisKKyAgICAgICAgQWxzbyBhZGRpbmcg
RE9NRmlsZVN5c3RlbTo6dmlydHVhbFRvU3lzdGVtUGF0aCBtZXRob2QgdGhhdCB0YWtlcyBjYXJl
IG9mIHRyYW5zbGF0aW5nIGEgZ2l2ZW4gdmlydHVhbCBwYXRoIHRvIGEgc3lzdGVtIHBhdGguIChU
aGlzIGlzIG5vdCBpbiBET01GaWxlU3lzdGVtUGF0aCBhcyBvbmx5IGZpbGVzeXN0ZW0gc2hvdWxk
IGtub3cgaG93IHRvIHRyYW5zbGF0ZSB2aXJ0dWFsIHBhdGhzIHRvIHN5c3RlbSBwYXRocy4pCisK
KyAgICAgICAgVGVzdHMgd2lsbCBiZSBhZGRlZCB3aGVuIHdlIGFkZCB1bmRlcmx5aW5nIGltcGxl
bWVudGF0aW9uIGZvciB0aGUgQVBJLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3lzdGVtLmg6Cisg
ICAgICAgICogc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRP
TUZpbGVTeXN0ZW06OnJvb3QpOgorICAgICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6dmly
dHVhbFRvU3lzdGVtUGF0aCk6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmlsZVN5c3Rl
bS5oOgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbVBhdGguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKiBzdG9yYWdlL0RPTUZpbGVTeXN0ZW1QYXRoLmg6IEFkZGVkLgorICAgICAgICAqIHN0
b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5RW50
cnk6OkRpcmVjdG9yeUVudHJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5Ojpj
cmVhdGVSZWFkZXIpOgorICAgICAgICAqIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpcmVjdG9yeUVudHJ5OjpjcmVhdGUpOgorICAgICAgICAqIHN0b3JhZ2Uv
RGlyZWN0b3J5UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeVJlYWRlcjo6
RGlyZWN0b3J5UmVhZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHN0
b3JhZ2UvRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OkVudHJ5KToKKyAgICAg
ICAgKiBzdG9yYWdlL0VudHJ5Lmg6CisgICAgICAgIChXZWJDb3JlOjpFbnRyeTo6cGF0aCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbnRyeTo6ZnVsbFBhdGgpOgorICAgICAgICAqIHN0b3JhZ2UvRmls
ZUVudHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVFbnRyeTo6RmlsZUVudHJ5KToKKyAg
ICAgICAgKiBzdG9yYWdlL0ZpbGVFbnRyeS5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsZUVudHJ5
OjpjcmVhdGUpOgorCiAyMDEwLTA4LTE2ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdo
QGFwcGxlLmNvbT4KIAogICAgICAgICBSdWJiZXIgc3RhbXBlZCBieSBTYW0gV2VpbmlnCmRpZmYg
LS1naXQgYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpp
bmRleCA5Mzk4NTJmNjBjODhiYWY0NTYwYzUyNWM1NTBmOTkyNGM2NmI2YWYyLi5jMDRjMTBmZGNm
NGJhY2UyMmRhMTg1YWE2MzBjZjg1N2E0YTNkNThkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCisrKyBiL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KQEAgLTMwMjgsNiArMzAyOCw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eVJlYWRlci5oIFwKICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgXAog
ICAgICAgIFdlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggXAorICAgICAgIFdlYkNvcmUv
c3RvcmFnZS9ET01GaWxlU3lzdGVtUGF0aC5jcHAgXAorICAgICAgIFdlYkNvcmUvc3RvcmFnZS9E
T01GaWxlU3lzdGVtUGF0aC5oIFwKICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRW50cmllc0NhbGxi
YWNrLmggXAogICAgICAgIFdlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAgXAogICAgICAgIFdlYkNv
cmUvc3RvcmFnZS9FbnRyeS5oIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggNjE1NzYxMDM2NzlmMTFmMmNmODNmZmIwMTdmZTdj
NTM2ODE0ZDUwZC4uZDMyMDBjOTZiMTZhYzI0MGE1NzQ2NDdiNjlkM2M5NmZjZTVhNjEyNSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmd5cGkK
QEAgLTM1NTAsNiArMzU1MCw4IEBACiAgICAgICAgICAgICAnc3RvcmFnZS9EaXJlY3RvcnlSZWFk
ZXIuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNwcCcsCiAgICAgICAg
ICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmgnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9N
RmlsZVN5c3RlbVBhdGguY3BwJywKKyAgICAgICAgICAgICdzdG9yYWdlL0RPTUZpbGVTeXN0ZW1Q
YXRoLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRW50cmllc0NhbGxiYWNrLmgnLAogICAgICAg
ICAgICAgJ3N0b3JhZ2UvRW50cnkuY3BwJywKICAgICAgICAgICAgICdzdG9yYWdlL0VudHJ5Lmgn
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8K
aW5kZXggNzZlMzc4MjA1OWY4ZjQwMjU4NWZjOTBkNGY1OGRhZjgyYjdjYmZiOC4uY2Q0OTkzNjgx
NjNjMzUwOGYwNjljZTVlODhjOTQzMWY5ODk4NDkxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNTUxLDYgKzI1NTEsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNURU09MSkgewogICAgICAgICBzdG9yYWdl
L0RpcmVjdG9yeUVudHJ5LmggXAogICAgICAgICBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIFwK
ICAgICAgICAgc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggXAorICAgICAgICBzdG9yYWdlL0RPTUZp
bGVTeXN0ZW1QYXRoLmggXAogICAgICAgICBzdG9yYWdlL0VudHJpZXNDYWxsYmFjay5oIFwKICAg
ICAgICAgc3RvcmFnZS9FbnRyeS5oIFwKICAgICAgICAgc3RvcmFnZS9FbnRyeUFycmF5LmggXApA
QCAtMjU2Niw2ICsyNTY3LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTEVfU1lTVEVN
PTEpIHsKICAgICAgICAgc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAgXAogICAgICAgICBzdG9y
YWdlL0RpcmVjdG9yeVJlYWRlci5jcHAgXAogICAgICAgICBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0u
Y3BwIFwKKyAgICAgICAgc3RvcmFnZS9ET01GaWxlU3lzdGVtUGF0aC5jcHAgXAogICAgICAgICBz
dG9yYWdlL0VudHJ5LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvRW50cnlBcnJheS5jcHAgXAogICAg
ICAgICBzdG9yYWdlL0ZpbGVFbnRyeS5jcHAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCmluZGV4IGZjNjI4ZDdmMjUzNGQ4MzgzNjJhNzAzYWViOWU2OTNiODViYjc1YTEuLjYxMGE4
YWIzYmNjZDg4Nzc2NjQwODJjYTBiODMzYTVhNWZiZjZkNTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvagpAQCAtNTEwNzMsNiArNTEwNzMsMTQgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxET01GaWxlU3lz
dGVtUGF0aC5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxzdG9yYWdlXERPTUZpbGVTeXN0ZW1QYXRoLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXEVudHJpZXNDYWxs
YmFjay5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNDMzMjVlY2RlNjVmMjc2ODhlZmM2ZTk1YzBkOGRjYjViY2Rj
ZjliZS4uOWU4ZWJlZmJjZDlmYTc3NzE2MzAzNjk3YWMyZmJkMjYwNDdkZTMwZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI0MjMsNiArMjQyMyw4IEBA
CiAJCTg5QjVFQUEyMTFFODAwM0QwMEYyMzY3RSAvKiBMaW5lRW5kaW5nLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUI1RUFBMDExRTgwMDNEMDBGMjM2
N0UgLyogTGluZUVuZGluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTg5QkVENUVCMTFCRTExQ0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRlci5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUJFRDVFOTEx
QkUxMUNFMDA0NDg0OTIgLyogQmxvYkJ1aWxkZXIuY3BwICovOyB9OwogCQk4OUJFRDVFQzExQkUx
MUNFMDA0NDg0OTIgLyogQmxvYkJ1aWxkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5QkVENUVBMTFCRTExQ0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRl
ci5oICovOyB9OworCQk4OUMwREQ0NjEyMUE2NDQ5MDA5RTE3Q0EgLyogRE9NRmlsZVN5c3RlbVBh
dGguY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlD
MERENDQxMjFBNjQ0OTAwOUUxN0NBIC8qIERPTUZpbGVTeXN0ZW1QYXRoLmNwcCAqLzsgfTsKKwkJ
ODlDMERENDcxMjFBNjQ0OTAwOUUxN0NBIC8qIERPTUZpbGVTeXN0ZW1QYXRoLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OUMwREQ0NTEyMUE2NDQ5MDA5
RTE3Q0EgLyogRE9NRmlsZVN5c3RlbVBhdGguaCAqLzsgfTsKIAkJODlDRDAyOTMxMUM4NUI4NzAw
NzBCNzkxIC8qIEpTQmxvYkJ1aWxkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODlDRDAyOTExMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1aWxk
ZXIuY3BwICovOyB9OwogCQk4OUNEMDI5NDExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9iQnVpbGRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODlDRDAy
OTIxMUM4NUI4NzAwNzBCNzkxIC8qIEpTQmxvYkJ1aWxkZXIuaCAqLzsgfTsKIAkJOEExMkUzNUQx
MUZBMzMyODAwMjU4MzZBIC8qIERvY3VtZW50TG9hZFRpbWluZy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOEExMkUzNUMxMUZBMzMyODAwMjU4MzZBIC8q
IERvY3VtZW50TG9hZFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC04MjgxLDYgKzgyODMsOCBAQAogCQk4OUI1RUFBMDExRTgwMDNEMDBG
MjM2N0UgLyogTGluZUVuZGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBM
aW5lRW5kaW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5QkVENUU5MTFCRTEx
Q0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBCbG9iQnVpbGRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTg5QkVENUVBMTFCRTExQ0UwMDQ0ODQ5MiAvKiBCbG9iQnVpbGRlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBCbG9iQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk4OUMwREQ0NDEyMUE2NDQ5MDA5RTE3Q0EgLyogRE9NRmlsZVN5c3RlbVBhdGguY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRmlsZVN5c3RlbVBhdGgu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OUMwREQ0NTEyMUE2NDQ5MDA5RTE3
Q0EgLyogRE9NRmlsZVN5c3RlbVBhdGguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gRE9NRmlsZVN5c3RlbVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODlD
RDAyNzkxMUM4NTlBODAwNzBCNzkxIC8qIEJsb2JCdWlsZGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7
IHBhdGggPSBCbG9iQnVpbGRlci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5
Q0QwMjkxMTFDODVCODcwMDcwQjc5MSAvKiBKU0Jsb2JCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmxvYkJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OUNEMDI5MjExQzg1Qjg3MDA3MEI3OTEgLyogSlNCbG9iQnVpbGRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0Jsb2JCdWlsZGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTU2Miw2ICsxMTU2Niw4IEBACiAJCQkJODk3
QTJEMTkxMUZGNThBNTAwODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uY3BwICovLAogCQkJCTg5N0Ey
RDFBMTFGRjU4QTUwMDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmggKi8sCiAJCQkJODk3QTJEMUIx
MUZGNThBNTAwODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uaWRsICovLAorCQkJCTg5QzBERDQ0MTIx
QTY0NDkwMDlFMTdDQSAvKiBET01GaWxlU3lzdGVtUGF0aC5jcHAgKi8sCisJCQkJODlDMERENDUx
MjFBNjQ0OTAwOUUxN0NBIC8qIERPTUZpbGVTeXN0ZW1QYXRoLmggKi8sCiAJCQkJODk5QUJDMkMx
MjE1RTRCRTAwRjlGMjE5IC8qIEVudHJpZXNDYWxsYmFjay5oICovLAogCQkJCTg5OUFCQzJEMTIx
NUU0QkUwMEY5RjIxOSAvKiBFbnRyaWVzQ2FsbGJhY2suaWRsICovLAogCQkJCTg5N0EyRDFDMTFG
RjU4QTUwMDgyNzQwQyAvKiBFbnRyeS5jcHAgKi8sCkBAIC0yMDMwMiw2ICsyMDMwOCw3IEBACiAJ
CQkJODk5QUJDQUExMjE1RkE1NTAwRjlGMjE5IC8qIEZpbGVTeXN0ZW1DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJODk5QUJDQUIxMjE1RkE1QTAwRjlGMjE5IC8qIEZsYWdzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4OTlBQkNCOTEyMTVGQUI1MDBGOUYyMTkgLyogRW50cnkuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTg5QzBERDQ3MTIxQTY0NDkwMDlFMTdDQSAvKiBET01GaWxlU3lzdGVtUGF0
aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CiAJCX07CkBAIC0yMDM2MSw3ICsyMDM2OCw2IEBACiAJCQlpc2EgPSBQQlhQ
cm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODQzMDg5MDJCMTEwMDhB
OUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYkNvcmUi
ICovOwogCQkJY29tcGF0aWJpbGl0eVZlcnNpb24gPSAiWGNvZGUgMi40IjsKLQkJCWRldmVsb3Bt
ZW50UmVnaW9uID0gRW5nbGlzaDsKIAkJCWhhc1NjYW5uZWRGb3JFbmNvZGluZ3MgPSAxOwogCQkJ
a25vd25SZWdpb25zID0gKAogCQkJCUVuZ2xpc2gsCkBAIC0yMjc1MSw2ICsyMjc1Nyw3IEBACiAJ
CQkJODk5QUJDODQxMjE1RjAzRDAwRjlGMjE5IC8qIEpTRmlsZVN5c3RlbUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg5OUFCQzg2MTIxNUYwRDgwMEY5RjIxOSAvKiBET01GaWxlU3lz
dGVtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5OUFCQ0JBMTIxNUZBQjgwMEY5RjIxOSAvKiBF
bnRyeS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk4OUMwREQ0NjEyMUE2NDQ5MDA5RTE3Q0EgLyog
RE9NRmlsZVN5c3RlbVBhdGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCmlu
ZGV4IDYxNzQ3MGI3ZmU4YjVlNzE4ODcyYzZiY2MwZjYxOWU2MzY5NzQ2NmMuLmU2NjNjNjBkOTJi
YzFmNjcxOWQxM2Q4ZGQ5MTNhNDI2N2ExOTFkMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN5c3RlbS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN5c3RlbS5oCkBAIC0x
MjcsNiArMTI3LDEzIEBAIHR5cGVkZWYgaW50IFBsYXRmb3JtRmlsZUhhbmRsZTsKIGNvbnN0IFBs
YXRmb3JtRmlsZUhhbmRsZSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlID0gLTE7CiAjZW5kaWYK
IAorLy8gUGF0aCBzZXBhcmF0b3IKKyNpZiBPUyhXSU5ET1dTKQorY29uc3QgY2hhciBmaWxlUGF0
aFNlcGFyYXRvciA9ICdcXCc7CisjZWxzZQorY29uc3QgY2hhciBmaWxlUGF0aFNlcGFyYXRvciA9
ICcvJzsKKyNlbmRpZgorCiBlbnVtIEZpbGVPcGVuTW9kZSB7CiAgICAgT3BlbkZvclJlYWQgPSAw
LAogICAgIE9wZW5Gb3JXcml0ZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVT
eXN0ZW0uY3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCmluZGV4IGMzZGJk
MzQwMTRlYTIwZWNlZmQ4YWFkZDdjNmJkYzlkYmQwZWU5NjIuLjNiMDQ2ZDUyOTMyNGQ4ZWVmMjNi
Y2UwOTc4Zjk0YzY2NDNlMzFmOGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxl
U3lzdGVtLmNwcAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAKQEAgLTM0
LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJEaXJlY3Rv
cnlFbnRyeS5oIgorI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00NSw3ICs0NiwxMyBAQCBET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCkKIAogUGFzc1JlZlB0cjxEaXJl
Y3RvcnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgpCiB7Ci0gICAgcmV0dXJuIERpcmVjdG9y
eUVudHJ5OjpjcmVhdGUodGhpcywgIi8iKTsKKyAgICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNy
ZWF0ZSh0aGlzLCBET01GaWxlU3lzdGVtUGF0aChET01GaWxlU3lzdGVtUGF0aDo6cm9vdCkpOwor
fQorCitTdHJpbmcgRE9NRmlsZVN5c3RlbTo6dmlydHVhbFRvU3lzdGVtUGF0aChjb25zdCBET01G
aWxlU3lzdGVtUGF0aCYgcGF0aCkgY29uc3QKK3sKKyAgICBTdHJpbmcgdmlydHVhbFBhdGggPSBw
YXRoLnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fcm9vdFBhdGggKyB2aXJ0dWFsUGF0aC5yZXBs
YWNlKERPTUZpbGVTeXN0ZW1QYXRoOjpzZXBhcmF0b3IsIGZpbGVQYXRoU2VwYXJhdG9yKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lz
dGVtLmggYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCmluZGV4IGI4N2FhYWYzMmNk
OWVhYzBmMjJjNDllZTE3NjcyZGQ1YTJlNzc2NzMuLjJhMDM4YTI4ZWU2ODVhZGQxZTUxNzdiNDgw
MTljMTQ4ZTQyODcxOTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVt
LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uaApAQCAtNDAsNiArNDAsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEaXJlY3RvcnlFbnRyeTsKK2NsYXNzIERP
TUZpbGVTeXN0ZW1QYXRoOwogCiBjbGFzcyBET01GaWxlU3lzdGVtIDogcHVibGljIFJlZkNvdW50
ZWQ8RE9NRmlsZVN5c3RlbT4gewogcHVibGljOgpAQCAtNTQsNiArNTUsOSBAQCBwdWJsaWM6CiBw
cml2YXRlOgogICAgIERPTUZpbGVTeXN0ZW0oY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHJvb3RQYXRoKTsKIAorICAgIC8vIFRyYW5zbGF0ZSBhIGdpdmVuIHZpcnR1YWwgcGF0aCAo
RE9NRmlsZVN5c3RlbVBhdGgpIHRvIGEgc3lzdGVtIHBhdGggdGhhdCBzdGFydHMgd2l0aCB0aGUg
cm9vdCBwYXRoLiAgVGhpcyBtZXRob2QgaXRzZWxmIGRvZXMgbm90IGRvIGFueSBwYXRoIGNvbXBv
bmVudCBjbGVhbnVwcyBzbyB0aGF0IHRoZSByZXN1bHRpbmcgc3lzdGVtcCBwYXRoIHdvdWxkIGxv
b2sgbGlrZTogcm9vdFBhdGggKyBzZXBhcmF0b3IgKyBzYW5pdGl6ZWQgdmlydHVhbCBwYXRoLgor
ICAgIFN0cmluZyB2aXJ0dWFsVG9TeXN0ZW1QYXRoKGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRoJiBw
YXRoKSBjb25zdDsKKwogICAgIFN0cmluZyBtX3Jvb3RQYXRoOwogICAgIFN0cmluZyBtX25hbWU7
CiB9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW1QYXRoLmNwcCBi
L1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtUGF0aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmNjMTJl
ZjE3MzQ4MGQxNzZhY2YyYWQ1MDhlMzU2MTcyMjM1ODVhNQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtUGF0aC5jcHAKQEAgLTAsMCArMSw5MyBAQAorLyoK
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
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJET01GaWxlU3lzdGVtUGF0aC5oIgorCisjaWYgRU5B
QkxFKEZJTEVfU1lTVEVNKQorCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjb25zdCBjaGFyIERP
TUZpbGVTeXN0ZW1QYXRoOjpzZXBhcmF0b3IgPSAnLyc7Citjb25zdCBjaGFyKiBET01GaWxlU3lz
dGVtUGF0aDo6cm9vdCA9ICIvIjsKKworLy8gQ2Fub25pY2FsaXplIGEgZ2l2ZW4gcGF0aCBieSBj
bGVhbmluZyB1cCBwYXJlbnQgYW5kIGN1cnJlbnQgZGlyZWN0b3J5ICgiLi4iIGFuZCAiLiIpIHJl
ZmVyZW5jZXMuCitzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVBhdGgoY29uc3QgU3RyaW5nJiBw
YXRoKQoreworICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVudHM7CisgICAgVmVjdG9yPFN0cmlu
Zz4gY2Fub25pY2FsaXplZDsKKyAgICBwYXRoLnNwbGl0KERPTUZpbGVTeXN0ZW1QYXRoOjpzZXBh
cmF0b3IsIGNvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50
cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY29tcG9uZW50c1tpXSA9PSAiLiIpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudHNbaV0gPT0gIi4uIiAmJiBj
YW5vbmljYWxpemVkLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWQucmVt
b3ZlTGFzdCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgY2Fu
b25pY2FsaXplZC5hcHBlbmQoY29tcG9uZW50c1tpXSk7CisgICAgfQorICAgIFN0cmluZyByZXN1
bHQ7CisgICAgaWYgKGNhbm9uaWNhbGl6ZWQuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gRE9N
RmlsZVN5c3RlbVBhdGg6OnJvb3Q7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYW5vbmlj
YWxpemVkLnNpemUoKTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoRE9NRmlsZVN5c3Rl
bVBhdGg6OnNlcGFyYXRvcik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2Fub25pY2FsaXplZFtp
XSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0RPTUZpbGVTeXN0ZW1QYXRoOjpE
T01GaWxlU3lzdGVtUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgOiBtX3BhdGgoY2Fub25p
Y2FsaXplUGF0aChwYXRoKSkKK3sKKyAgICBBU1NFUlQobV9wYXRoLnN0YXJ0c1dpdGgoRE9NRmls
ZVN5c3RlbVBhdGg6OnJvb3QpKTsKK30KKworU3RyaW5nIERPTUZpbGVTeXN0ZW1QYXRoOjpiYXNl
TmFtZSgpIGNvbnN0Cit7CisgICAgaW50IGluZGV4ID0gbV9wYXRoLnJldmVyc2VGaW5kKERPTUZp
bGVTeXN0ZW1QYXRoOjpzZXBhcmF0b3IpOworICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAg
cmV0dXJuIG1fcGF0aC5zdWJzdHJpbmcoaW5kZXgpOworICAgIHJldHVybiBtX3BhdGg7Cit9CisK
K0RPTUZpbGVTeXN0ZW1QYXRoIERPTUZpbGVTeXN0ZW1QYXRoOjpwYXJlbnQoKSBjb25zdAorewor
ICAgIGludCBpbmRleCA9IG1fcGF0aC5yZXZlcnNlRmluZChET01GaWxlU3lzdGVtUGF0aDo6c2Vw
YXJhdG9yKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHJldHVybiBET01GaWxlU3lz
dGVtUGF0aChtX3BhdGguc3Vic3RyaW5nKDAsIGluZGV4KSk7CisgICAgcmV0dXJuIERPTUZpbGVT
eXN0ZW1QYXRoKG1fcGF0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01G
aWxlU3lzdGVtUGF0aC5oIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW1QYXRoLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZjFlNzZiMDU2OGRiNWI4NzJlNDAyZGU1ZjkxZWEyZTU5ZWNhNzg1ZQotLS0gL2Rl
di9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtUGF0aC5oCkBAIC0wLDAg
KzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoK
KyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgor
ICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5E
IENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIERPTUZpbGVTeXN0ZW1QYXRoX2gKKyNkZWZpbmUgRE9NRmlsZVN5c3Rl
bVBhdGhfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCisvLyBBIHNpbXBsZSBjbGFzcyB0aGF0IHdyYXBzIGEgcGF0aCBzdHJpbmcgYW5kIHJl
cHJlc2VudHMgYW4gYWJzb2x1dGUgdmlydHVhbCBwYXRoIGZvciBIVE1MNSBGaWxlU3lzdGVtLgor
Y2xhc3MgRE9NRmlsZVN5c3RlbVBhdGggeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFy
IHNlcGFyYXRvcjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogcm9vdDsKKworICAgIERPTUZpbGVT
eXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICBET01GaWxlU3lzdGVtUGF0aCBh
cHBlbmQoY29uc3QgU3RyaW5nJiBjb21wb25lbnRzKSBjb25zdAorICAgIHsKKyAgICAgICAgU3Ry
aW5nIHBhdGggPSBtX3BhdGg7CisgICAgICAgIHBhdGguYXBwZW5kKERPTUZpbGVTeXN0ZW1QYXRo
OjpzZXBhcmF0b3IpOworICAgICAgICBwYXRoLmFwcGVuZChjb21wb25lbnRzKTsKKyAgICAgICAg
cmV0dXJuIERPTUZpbGVTeXN0ZW1QYXRoKHBhdGgpOworICAgIH0KKworICAgIFN0cmluZyBiYXNl
TmFtZSgpIGNvbnN0OworCisgICAgRE9NRmlsZVN5c3RlbVBhdGggcGFyZW50KCkgY29uc3Q7CisK
KyAgICBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9wYXRoOyB9CisK
KyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRoJiwgY29u
c3QgRE9NRmlsZVN5c3RlbVBhdGgmKTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBTdHJpbmcgbV9w
YXRoOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBET01GaWxlU3lzdGVtUGF0
aCYgYSwgY29uc3QgRE9NRmlsZVN5c3RlbVBhdGgmIGIpCit7CisgICAgcmV0dXJuICgmYSA9PSAm
YiB8fCBhLm1fcGF0aCA9PSBiLm1fcGF0aCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIERPTUZpbGVTeXN0ZW1QYXRoX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3Rv
cmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5RW50cnku
Y3BwCmluZGV4IDYwZGNhY2U0ZDA2ZTY2ZmRiMDc5ZDFkOTJiOGYwN2RlNTBjM2VjNjIuLjVjMWYy
NzUyNGRhOGNhMjYxZTg0MGI1ZTBhNTIzMjMzZDkxZDBmNmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
c3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmNwcApAQCAtMzksMTQgKzM5LDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4g
ZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKLSAgICA6IEVudHJ5KGZpbGVTeXN0
ZW0sIGZ1bGxQYXRoKQorRGlyZWN0b3J5RW50cnk6OkRpcmVjdG9yeUVudHJ5KFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgRE9NRmlsZVN5c3RlbVBhdGgmIHBhdGgp
CisgICAgOiBFbnRyeShmaWxlU3lzdGVtLCBwYXRoKQogewogfQogCiBQYXNzUmVmUHRyPERpcmVj
dG9yeVJlYWRlcj4gRGlyZWN0b3J5RW50cnk6OmNyZWF0ZVJlYWRlcigpCiB7Ci0gICAgcmV0dXJu
IERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9mdWxsUGF0aCk7CisgICAg
cmV0dXJuIERpcmVjdG9yeVJlYWRlcjo6Y3JlYXRlKG1fZmlsZVN5c3RlbSwgbV9wYXRoKTsKIH0K
IAogdm9pZCBEaXJlY3RvcnlFbnRyeTo6Z2V0RmlsZShjb25zdCBTdHJpbmcmLCBQYXNzUmVmUHRy
PEZsYWdzPiwgUGFzc1JlZlB0cjxFbnRyeUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxFcnJvckNhbGxi
YWNrPikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5oIGIvV2Vi
Q29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKaW5kZXggMmFlNGZiNTRmMzlhZTcwYWE2M2U3
MzA2NzRlNmY4YzczYjFlODkzNS4uZDE1Yjc3MjA1ODc2NzlhZjI1ZjZlYTE2NGIzYjBjYmFiMDcw
NGQ4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTM1LDkgKzM1LDYgQEAKIAogI2lu
Y2x1ZGUgIkVudHJ5LmgiCiAjaW5jbHVkZSAiRmxhZ3MuaCIKLSNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw5ICs0NCw5IEBAIGNsYXNz
IEVycm9yQ2FsbGJhY2s7CiAKIGNsYXNzIERpcmVjdG9yeUVudHJ5IDogcHVibGljIEVudHJ5IHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKFBh
c3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0
aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlFbnRyeT4gY3JlYXRlKFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgRE9NRmlsZVN5c3RlbVBhdGgmIHBh
dGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVjdG9yeUVudHJ5KGZp
bGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0
b3J5RW50cnkoZmlsZVN5c3RlbSwgcGF0aCkpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgaXNE
aXJlY3RvcnkoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTU4LDcgKzU1LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCwgUGFzc1JlZlB0
cjxGbGFncz4gb3B0aW9ucyA9IDAsIFBhc3NSZWZQdHI8RW50cnlDYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7
CiAKIHByaXZhdGU6Ci0gICAgRGlyZWN0b3J5RW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVt
PiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKTsKKyAgICBEaXJlY3RvcnlFbnRy
eShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IERPTUZpbGVTeXN0
ZW1QYXRoJiBwYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlS
ZWFkZXIuY3BwCmluZGV4IDBiMzBmNzA1MzE0YzhmZDkyNzY1OTJiOTcwYWI2ODA3NjY0MTY0ZTUu
LmVkZjhjYmM5ZjA5ZTBlNDIwMzQ5YmJmNzYwODI4OTc0YzRhOTFhZjMgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9E
aXJlY3RvcnlSZWFkZXIuY3BwCkBAIC0zOSw3ICszOSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxl
U3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEaXJlY3RvcnlSZWFkZXI6
OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNv
bnN0IERPTUZpbGVTeXN0ZW1QYXRoJiBwYXRoKQogICAgIDogbV9maWxlU3lzdGVtKGZpbGVTeXN0
ZW0pCiAgICAgLCBtX3BhdGgocGF0aCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9E
aXJlY3RvcnlSZWFkZXIuaCBiL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaAppbmRl
eCBjZjVkYThmM2RjNzVmNDMwZTNlNjQ2Yzg5MmU3NTY2NWQxZDQ1MTcwLi5lYWZhODljNzljYTBi
NTRmYjVhY2UxZDQ2MzEwOGY5MTE1YzhmNTFjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3N0b3JhZ2Uv
RGlyZWN0b3J5UmVhZGVyLmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5o
CkBAIC0zNCw3ICszNCw3IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQogCiAjaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSAi
RE9NRmlsZVN5c3RlbVBhdGguaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQ1LDcgKzQ1LDcgQEAgY2xhc3MgRXJyb3JDYWxs
YmFjazsKIAogY2xhc3MgRGlyZWN0b3J5UmVhZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RGlyZWN0
b3J5UmVhZGVyPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVh
ZGVyPiBjcmVhdGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBT
dHJpbmcmIHBhdGgpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8RGlyZWN0b3J5UmVhZGVyPiBjcmVh
dGUoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBET01GaWxlU3lz
dGVtUGF0aCYgcGF0aCkKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGlyZWN0
b3J5UmVhZGVyKGZpbGVTeXN0ZW0sIHBhdGgpKTsKICAgICB9CkBAIC01MywxMCArNTMsMTAgQEAg
cHVibGljOgogICAgIHZvaWQgcmVhZEVudHJpZXMoUGFzc1JlZlB0cjxFbnRyaWVzQ2FsbGJhY2s+
IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
ID0gMCk7CiAKIHByaXZhdGU6Ci0gICAgRGlyZWN0b3J5UmVhZGVyKFBhc3NSZWZQdHI8RE9NRmls
ZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBwYXRoKTsKKyAgICBEaXJlY3RvcnlS
ZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBET01GaWxl
U3lzdGVtUGF0aCYgcGF0aCk7CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3RlbT4gbV9maWxlU3lz
dGVtOwotICAgIFN0cmluZyBtX3BhdGg7CisgICAgRE9NRmlsZVN5c3RlbVBhdGggbV9wYXRoOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5j
cHAgYi9XZWJDb3JlL3N0b3JhZ2UvRW50cnkuY3BwCmluZGV4IDY3ODMyOTEzOThhOWVlZjc3MGY5
NTQwN2I5MWI5YzdkN2UxNGZmMzAuLjM3NmYwMGFhMmQwYjc4NjQyNjAzZjY2ODRiYjlmMGE5YWQ5
M2JlYjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5jcHAKKysrIGIvV2ViQ29y
ZS9zdG9yYWdlL0VudHJ5LmNwcApAQCAtNDAsMTUgKzQwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotRW50cnk6OkVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3Rl
bSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKK0VudHJ5OjpFbnRyeShQYXNzUmVmUHRyPERPTUZp
bGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRoJiBwYXRoKQogICAg
IDogbV9maWxlU3lzdGVtKGZpbGVTeXN0ZW0pCi0gICAgLCBtX2Z1bGxQYXRoKGZ1bGxQYXRoKQor
ICAgICwgbV9wYXRoKHBhdGgpCisgICAgLCBtX25hbWUobV9wYXRoLmJhc2VOYW1lKCkpCiB7Ci0g
ICAgc2l6ZV90IGluZGV4ID0gZnVsbFBhdGgucmV2ZXJzZUZpbmQoIi8iKTsKLSAgICBpZiAoaW5k
ZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG1fbmFtZSA9IGZ1bGxQYXRoLnN1YnN0cmluZyhpbmRl
eCk7Ci0gICAgZWxzZQotICAgICAgICBtX25hbWUgPSBmdWxsUGF0aDsKIH0KIAogdm9pZCBFbnRy
eTo6Z2V0TWV0YWRhdGEoUGFzc1JlZlB0cjxNZXRhZGF0YUNhbGxiYWNrPiwgUGFzc1JlZlB0cjxF
cnJvckNhbGxiYWNrPikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oIGIvV2Vi
Q29yZS9zdG9yYWdlL0VudHJ5LmgKaW5kZXggN2JiYjI2NTc0YWIxMTcwMDZhMjEyMThkNWVmNWMw
NDhjMjY4YzMxYi4uYzRkM2RiMjU2NGVmNDY0ODQ2MWYwNGRjOGNlMTEzZTVjMjA5MjA3YSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0Vu
dHJ5LmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNs
dWRlICJET01GaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRE9NRmlsZVN5c3RlbVBhdGguaCIKICNp
bmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAK
QEAgLTUxLDkgKzUyLDEyIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29u
c3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNEaXJlY3RvcnkoKSBjb25z
dCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCgpIGNvbnN0
IHsgcmV0dXJuIG1fZnVsbFBhdGg7IH0KKyAgICBjb25zdCBET01GaWxlU3lzdGVtUGF0aCYgcGF0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0aDsgfQogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fbmFtZTsgfQogCisgICAgLy8gVGhpcyByZXR1cm5zIGEgc3RyaW5nIHZl
cnNpb24gb2YgcGF0aCgpLgorICAgIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgoKSBjb25zdCB7IHJl
dHVybiBtX3BhdGgudG9TdHJpbmcoKTsgfQorCiAgICAgRE9NRmlsZVN5c3RlbSogZmlsZXN5c3Rl
bSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsZVN5c3RlbS5nZXQoKTsgfQogCiAgICAgdmlydHVhbCB2
b2lkIGdldE1ldGFkYXRhKFBhc3NSZWZQdHI8TWV0YWRhdGFDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrID0gMCwgUGFzc1JlZlB0cjxFcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrID0gMCk7CkBA
IC02NiwxMCArNzAsMTAgQEAgcHVibGljOgogICAgIHZpcnR1YWwgU3RyaW5nIHRvVVJJKGNvbnN0
IFN0cmluZyYgbWltZVR5cGUgPSBTdHJpbmcoKSk7CiAKIHByb3RlY3RlZDoKLSAgICBFbnRyeShQ
YXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBh
dGgpOworICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29u
c3QgRE9NRmlsZVN5c3RlbVBhdGgmIHBhdGgpOwogCiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IG1fZmlsZVN5c3RlbTsKLSAgICBTdHJpbmcgbV9mdWxsUGF0aDsgLy8gdmlydHVhbCBwYXRoCisg
ICAgRE9NRmlsZVN5c3RlbVBhdGggbV9wYXRoOwogICAgIFN0cmluZyBtX25hbWU7CiB9OwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9GaWxlRW50cnkuY3BwCmluZGV4IDRiZWMwMWQ4OWZiNjY1YzRiMzljMjk3ODRlMjAwY2I0MTMz
N2IwOGUuLjI3Y2I2NTQ2ZDFmMzA2OGNmODMzMzNmOWM5YWM5NTQxMzhhNTA5MjcgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9G
aWxlRW50cnkuY3BwCkBAIC0zNSw4ICszNSw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
RmlsZUVudHJ5OjpGaWxlRW50cnkoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVt
LCBjb25zdCBTdHJpbmcmIGZ1bGxQYXRoKQotICAgIDogRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBh
dGgpCitGaWxlRW50cnk6OkZpbGVFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVT
eXN0ZW0sIGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRoJiBwYXRoKQorICAgIDogRW50cnkoZmlsZVN5
c3RlbSwgcGF0aCkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRy
eS5oIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oCmluZGV4IGIwMmI1YzcwNDlhZjM3NjVj
MmVkOWVmZmUzMTM1ZDYxOGNjMTMzN2YuLjk4NDllMzY5MWNkYTA0NzI4NmZkNjIwOTE3NGRkYTU1
YTZhZTY3YWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9GaWxlRW50cnkuaAorKysgYi9X
ZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmgKQEAgLTM0LDkgKzM0LDYgQEAKICNpZiBFTkFCTEUo
RklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJFbnRyeS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3Ry
aW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ0LDE0ICs0MSwxNCBAQCBjbGFz
cyBET01GaWxlU3lzdGVtOwogCiBjbGFzcyBGaWxlRW50cnkgOiBwdWJsaWMgRW50cnkgewogcHVi
bGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVFbnRyeT4gY3JlYXRlKFBhc3NSZWZQdHI8
RE9NRmlsZVN5c3RlbT4gZmlsZVN5c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCkKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxGaWxlRW50cnk+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0
ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRoJiBwYXRoKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgZnVsbFBhdGgp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlRW50cnkoZmlsZVN5c3RlbSwgcGF0
aCkpOwogICAgIH0KICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQogCiBwcml2YXRlOgotICAgIEZpbGVFbnRyeShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+
IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOworICAgIEZpbGVFbnRyeShQYXNz
UmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IERPTUZpbGVTeXN0ZW1QYXRo
JiBwYXRoKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64767</attachid>
            <date>2010-08-18 13:50:28 -0700</date>
            <delta_ts>2010-08-18 22:54:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44132-20100818135027.patch</filename>
            <type>text/plain</type>
            <size>8442</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDYwYmJlNTczZjcxNjc5ODYwM2VhYjliNzlmM2E2OGExNjdkZmQ0Ny4uOTA5YjkwZDk5OTU2OGE5
M2NhOWRiZjJkYWM0MTRjYmIwOWU0YmYzNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wOC0xOCAgS2lu
dWtvIFlhc3VkYSAgPGtpbnVrb0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wbGVtZW50IHZpcnR1YWwgcGF0aCB0byBzeXN0
ZW0gcGF0aCBjb252ZXJzaW9uIGZvciBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMzIKKworICAgICAgICBUZXN0cyB3aWxs
IGJlIGFkZGVkIHdoZW4gd2UgZXhwb3NlIHRoZSBlbnRyeSBwb2ludCBhbmQgYWRkIGltcGxlbWVu
dGF0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vRmlsZVN5c3RlbS5oOiBBZGRlZCBQbGF0Zm9y
bUZpbGVQYXRoU2VwYXJhdG9yLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpjYW5vbmljYWxpemVWaXJ0dWFsUGF0aCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6RE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01GaWxlU3lzdGVtOjpyb290KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVT
eXN0ZW06OnZpcnR1YWxUb1N5c3RlbVBhdGgpOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL0RP
TUZpbGVTeXN0ZW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUZpbGVTeXN0ZW06OmNyZWF0ZSk6
CisgICAgICAgICogc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5oOgorICAgICAgICAqIHN0b3JhZ2Uv
RGlyZWN0b3J5UmVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpcmVjdG9yeVJlYWRlcjo6
RGlyZWN0b3J5UmVhZGVyKToKKyAgICAgICAgKiBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oOgor
ICAgICAgICAoV2ViQ29yZTo6RGlyZWN0b3J5UmVhZGVyOjpjcmVhdGUpOgorICAgICAgICAqIHN0
b3JhZ2UvRW50cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RW50cnk6OkVudHJ5KToKKyAgICAg
ICAgKiBzdG9yYWdlL0VudHJ5Lmg6CisgICAgICAgICogc3RvcmFnZS9GaWxlRW50cnkuaDoKKwog
MjAxMC0wOC0xNiAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAK
ICAgICAgICAgUnViYmVyIHN0YW1wZWQgYnkgU2FtIFdlaW5pZwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApp
bmRleCA2MTc0NzBiN2ZlOGI1ZTcxODg3MmM2YmNjMGY2MTllNjM2OTc0NjZjLi5lNjNmNTllOTQ1
MGViYWQ4ZjY2Y2Y5NGYwZDZkZDIwMWFhODcyOWY3IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRm
b3JtL0ZpbGVTeXN0ZW0uaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaApAQCAt
MTI3LDYgKzEyNywxMyBAQCB0eXBlZGVmIGludCBQbGF0Zm9ybUZpbGVIYW5kbGU7CiBjb25zdCBQ
bGF0Zm9ybUZpbGVIYW5kbGUgaW52YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSA9IC0xOwogI2VuZGlm
CiAKKy8vIFBhdGggc2VwYXJhdG9yCisjaWYgT1MoV0lORE9XUykKK2NvbnN0IGNoYXIgUGxhdGZv
cm1GaWxlUGF0aFNlcGFyYXRvciA9ICdcXCc7CisjZWxzZQorY29uc3QgY2hhciBQbGF0Zm9ybUZp
bGVQYXRoU2VwYXJhdG9yID0gJy8nOworI2VuZGlmCisKIGVudW0gRmlsZU9wZW5Nb2RlIHsKICAg
ICBPcGVuRm9yUmVhZCA9IDAsCiAgICAgT3BlbkZvcldyaXRlCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3Rl
bS5jcHAKaW5kZXggYzNkYmQzNDAxNGVhMjBlY2VmZDhhYWRkN2M2YmRjOWRiZDBlZTk2Mi4uMTcy
ZTZmOTNlMGQwYzk0ODJjODE5YTA5MjEzN2Q4NTVhZmM3YTFlYSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxl
U3lzdGVtLmNwcApAQCAtMzQsMTggKzM0LDU0IEBACiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQog
CiAjaW5jbHVkZSAiRGlyZWN0b3J5RW50cnkuaCIKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRE9NRmlsZVN5c3RlbTo6RE9NRmlsZVN5c3RlbShjb25z
dCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgcm9vdFBhdGgpCi0gICAgOiBtX3Jvb3RQYXRo
KHJvb3RQYXRoKQorY29uc3QgY2hhciBET01GaWxlU3lzdGVtOjpmaWxlUGF0aFNlcGFyYXRvciA9
ICcvJzsKK2NvbnN0IGNoYXIqIERPTUZpbGVTeXN0ZW06OnJvb3RQYXRoID0gIi8iOworCisvLyBD
YW5vbmljYWxpemUgYSBnaXZlbiBwYXRoIGJ5IGNsZWFuaW5nIHVwIHBhcmVudCBhbmQgY3VycmVu
dCBkaXJlY3RvcnkgKCIuLiIgYW5kICIuIikgcmVmZXJlbmNlcy4gIFRoZSBwYXRoIG5lZWRzIHRv
IGJlIGFuIGFic29sdXRlIHBhdGguCitzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVZpcnR1YWxQ
YXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBWZWN0b3I8U3RyaW5nPiBjb21wb25lbnRz
OworICAgIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZWQ7CisgICAgQVNTRVJUKHBhdGguc3Rh
cnRzV2l0aChET01GaWxlU3lzdGVtOjpyb290UGF0aCkpOworICAgIHBhdGguc3BsaXQoRE9NRmls
ZVN5c3RlbTo6ZmlsZVBhdGhTZXBhcmF0b3IsIGNvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY29tcG9u
ZW50c1tpXSA9PSAiLiIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBv
bmVudHNbaV0gPT0gIi4uIiAmJiBjYW5vbmljYWxpemVkLnNpemUoKSA+IDApIHsKKyAgICAgICAg
ICAgIGNhbm9uaWNhbGl6ZWQucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KKyAgICAgICAgY2Fub25pY2FsaXplZC5hcHBlbmQoY29tcG9uZW50c1tpXSk7Cisg
ICAgfQorICAgIGlmIChjYW5vbmljYWxpemVkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIERP
TUZpbGVTeXN0ZW06OnJvb3RQYXRoOworICAgIFN0cmluZyByZXN1bHQ7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjYW5vbmljYWxpemVkLnNpemUoKTsgKytpKSB7CisgICAgICAgIHJlc3Vs
dC5hcHBlbmQoRE9NRmlsZVN5c3RlbTo6ZmlsZVBhdGhTZXBhcmF0b3IpOworICAgICAgICByZXN1
bHQuYXBwZW5kKGNhbm9uaWNhbGl6ZWRbaV0pOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0Owor
fQorCitET01GaWxlU3lzdGVtOjpET01GaWxlU3lzdGVtKGNvbnN0IFN0cmluZyYgbmFtZSwgY29u
c3QgU3RyaW5nJiBzeXN0ZW1Sb290UGF0aCkKKyAgICA6IG1fc3lzdGVtUm9vdFBhdGgoc3lzdGVt
Um9vdFBhdGgpCiAgICAgLCBtX25hbWUobmFtZSkKIHsKIH0KIAogUGFzc1JlZlB0cjxEaXJlY3Rv
cnlFbnRyeT4gRE9NRmlsZVN5c3RlbTo6cm9vdCgpCiB7Ci0gICAgcmV0dXJuIERpcmVjdG9yeUVu
dHJ5OjpjcmVhdGUodGhpcywgIi8iKTsKKyAgICByZXR1cm4gRGlyZWN0b3J5RW50cnk6OmNyZWF0
ZSh0aGlzLCBET01GaWxlU3lzdGVtOjpyb290UGF0aCk7Cit9CisKK1N0cmluZyBET01GaWxlU3lz
dGVtOjp2aXJ0dWFsVG9TeXN0ZW1QYXRoKGNvbnN0IFN0cmluZyYgdmlydHVhbFBhdGgpIGNvbnN0
Cit7CisgICAgU3RyaW5nIHBhdGggPSBjYW5vbmljYWxpemVWaXJ0dWFsUGF0aCh2aXJ0dWFsUGF0
aCk7CisgICAgcmV0dXJuIG1fc3lzdGVtUm9vdFBhdGggKyBwYXRoLnJlcGxhY2UoRE9NRmlsZVN5
c3RlbTo6ZmlsZVBhdGhTZXBhcmF0b3IsIFBsYXRmb3JtRmlsZVBhdGhTZXBhcmF0b3IpOwogfQog
CiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0
ZW0uaCBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmgKaW5kZXggYjg3YWFhZjMyY2Q5
ZWFjMGYyMmM0OWVlMTc2NzJkZDVhMmU3NzY3My4uNDViODFlOWI1NDljMTFmNjAyYWRiOTg4YmZm
MjgyOWJlNzM4YTQ0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0u
aAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oCkBAIC00MywxOCArNDMsMjQg
QEAgY2xhc3MgRGlyZWN0b3J5RW50cnk7CiAKIGNsYXNzIERPTUZpbGVTeXN0ZW0gOiBwdWJsaWMg
UmVmQ291bnRlZDxET01GaWxlU3lzdGVtPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8RE9NRmlsZVN5c3RlbT4gY3JlYXRlKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiByb290UGF0aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBjcmVhdGUo
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHN5c3RlbVJvb3RQYXRoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBET01GaWxlU3lzdGVtKG5hbWUsIHJvb3RQYXRo
KSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRE9NRmlsZVN5c3RlbShuYW1lLCBzeXN0
ZW1Sb290UGF0aCkpOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgbmFtZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbmFtZTsgfQogICAgIFBhc3NSZWZQdHI8RGlyZWN0b3J5RW50cnk+IHJvb3QoKTsK
IAorICAgIHN0YXRpYyBjb25zdCBjaGFyIGZpbGVQYXRoU2VwYXJhdG9yOworICAgIHN0YXRpYyBj
b25zdCBjaGFyKiByb290UGF0aDsKKwogcHJpdmF0ZToKICAgICBET01GaWxlU3lzdGVtKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByb290UGF0aCk7CiAKLSAgICBTdHJpbmcgbV9y
b290UGF0aDsKKyAgICAvLyBDb252ZXJ0cyBhIGdpdmVuIGFic29sdXRlIHZpcnR1YWwgcGF0aCB0
byBhIHN5c3RlbSBwYXRoIHRoYXQgc3RhcnRzIHdpdGggdGhlIHN5c3RlbSByb290IHBhdGggb2Yg
dGhpcyBmaWxlIHN5c3RlbS4KKyAgICBTdHJpbmcgdmlydHVhbFRvU3lzdGVtUGF0aChjb25zdCBT
dHJpbmcmIHBhdGgpIGNvbnN0OworCisgICAgU3RyaW5nIG1fc3lzdGVtUm9vdFBhdGg7CiAgICAg
U3RyaW5nIG1fbmFtZTsKIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3Rv
cnlFbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKaW5kZXggMmFlNGZi
NTRmMzlhZTcwYWE2M2U3MzA2NzRlNmY4YzczYjFlODkzNS4uMzhjNzBjZmM2OTIwNmEyNjNiYWU0
ZjEyNDM4ZTdmZDJkOTEyN2JhNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmgKQEAgLTM1LDkg
KzM1LDYgQEAKIAogI2luY2x1ZGUgIkVudHJ5LmgiCiAjaW5jbHVkZSAiRmxhZ3MuaCIKLSNpbmNs
dWRlICJQbGF0Zm9ybVN0cmluZy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBiL1dlYkNvcmUvc3RvcmFn
ZS9EaXJlY3RvcnlSZWFkZXIuY3BwCmluZGV4IDBiMzBmNzA1MzE0YzhmZDkyNzY1OTJiOTcwYWI2
ODA3NjY0MTY0ZTUuLjJlNDAzNWFhM2VlNmNjNDU4MGVkODgxZmU5ZWRiNGIxY2U4OTQxNDEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCisrKyBiL1dlYkNv
cmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwCkBAIC0zOSw5ICszOSw5IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotRGlyZWN0b3J5UmVhZGVyOjpEaXJlY3RvcnlSZWFkZXIoUGFzc1Jl
ZlB0cjxET01GaWxlU3lzdGVtPiBmaWxlU3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgpCitEaXJl
Y3RvcnlSZWFkZXI6OkRpcmVjdG9yeVJlYWRlcihQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZp
bGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpCiAgICAgOiBtX2ZpbGVTeXN0ZW0oZmls
ZVN5c3RlbSkKLSAgICAsIG1fcGF0aChwYXRoKQorICAgICwgbV9mdWxsUGF0aChmdWxsUGF0aCkK
IHsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIGIv
V2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oCmluZGV4IGNmNWRhOGYzZGM3NWY0MzBl
M2U2NDZjODkyZTc1NjY1ZDFkNDUxNzAuLmM2MTFhYzNhYzRiNjNmYWNlOTE3Zjc4YTJiZmU5Njcz
YzYyNmJiZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaAor
KysgYi9XZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmgKQEAgLTM0LDcgKzM0LDYgQEAK
ICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJET01GaWxlU3lzdGVtLmgiCi0j
aW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAKQEAgLTQ1LDE4ICs0NCwxOCBAQCBjbGFzcyBF
cnJvckNhbGxiYWNrOwogCiBjbGFzcyBEaXJlY3RvcnlSZWFkZXIgOiBwdWJsaWMgUmVmQ291bnRl
ZDxEaXJlY3RvcnlSZWFkZXI+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJl
Y3RvcnlSZWFkZXI+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0s
IGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxEaXJlY3RvcnlSZWFk
ZXI+IGNyZWF0ZShQYXNzUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0
cmluZyYgZnVsbFBhdGgpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERpcmVj
dG9yeVJlYWRlcihmaWxlU3lzdGVtLCBwYXRoKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGlyZWN0b3J5UmVhZGVyKGZpbGVTeXN0ZW0sIGZ1bGxQYXRoKSk7CiAgICAgfQogCiAgICAg
dm9pZCByZWFkRW50cmllcyhQYXNzUmVmUHRyPEVudHJpZXNDYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPEVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2sgPSAwKTsKIAogcHJp
dmF0ZToKLSAgICBEaXJlY3RvcnlSZWFkZXIoUGFzc1JlZlB0cjxET01GaWxlU3lzdGVtPiBmaWxl
U3lzdGVtLCBjb25zdCBTdHJpbmcmIHBhdGgpOworICAgIERpcmVjdG9yeVJlYWRlcihQYXNzUmVm
UHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0sIGNvbnN0IFN0cmluZyYgZnVsbFBhdGgpOwog
CiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IG1fZmlsZVN5c3RlbTsKLSAgICBTdHJpbmcgbV9w
YXRoOworICAgIFN0cmluZyBtX2Z1bGxQYXRoOwogfTsKIAogfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9FbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgK
aW5kZXggN2JiYjI2NTc0YWIxMTcwMDZhMjEyMThkNWVmNWMwNDhjMjY4YzMxYi4uNTdkMWJmZjY3
YWM2ZDkwNDcyZWMzMzVlYjI2MTI4ODdmODFjMjM5ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9zdG9y
YWdlL0VudHJ5LmgKKysrIGIvV2ViQ29yZS9zdG9yYWdlL0VudHJ5LmgKQEAgLTY5LDcgKzY5LDcg
QEAgcHJvdGVjdGVkOgogICAgIEVudHJ5KFBhc3NSZWZQdHI8RE9NRmlsZVN5c3RlbT4gZmlsZVN5
c3RlbSwgY29uc3QgU3RyaW5nJiBmdWxsUGF0aCk7CiAKICAgICBSZWZQdHI8RE9NRmlsZVN5c3Rl
bT4gbV9maWxlU3lzdGVtOwotICAgIFN0cmluZyBtX2Z1bGxQYXRoOyAvLyB2aXJ0dWFsIHBhdGgK
KyAgICBTdHJpbmcgbV9mdWxsUGF0aDsKICAgICBTdHJpbmcgbV9uYW1lOwogfTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9zdG9yYWdlL0ZpbGVFbnRyeS5oIGIvV2ViQ29yZS9zdG9yYWdlL0ZpbGVF
bnRyeS5oCmluZGV4IGIwMmI1YzcwNDlhZjM3NjVjMmVkOWVmZmUzMTM1ZDYxOGNjMTMzN2YuLmFl
ZWI3NGE2MmY1MTk2MzI2YmNlOGIyMmNmMzc4OGEzNmE1MjU0OGQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvc3RvcmFnZS9GaWxlRW50cnkuaAorKysgYi9XZWJDb3JlL3N0b3JhZ2UvRmlsZUVudHJ5LmgK
QEAgLTM0LDkgKzM0LDYgQEAKICNpZiBFTkFCTEUoRklMRV9TWVNURU0pCiAKICNpbmNsdWRlICJF
bnRyeS5oIgotI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65145</attachid>
            <date>2010-08-23 11:49:24 -0700</date>
            <delta_ts>2010-08-23 23:08:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44132-20100823114922.patch</filename>
            <type>text/plain</type>
            <size>17603</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGViNDJjNWNhYmVmNjE4ODJhZGZkMjJlYjFlMDQ5NTY2OWRjYTJiMmYuLmUwZDRj
ZDdkZmYxZTNiYjY1ZTIwOGZkZTg0MTMwZGViMzQzOWRjZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ1Nyw2ICsx
NDU3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2Vy
LmNwcAogICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCiAgICAgc3RvcmFnZS9EaXJlY3Rv
cnlSZWFkZXIuY3BwCisgICAgc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKICAgICBzdG9yYWdlL0RP
TUZpbGVTeXN0ZW0uY3BwCiAgICAgc3RvcmFnZS9FbnRyeS5jcHAKICAgICBzdG9yYWdlL0VudHJ5
QXJyYXkuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDlhZDY3NDk3NWIxYTJmZjg3NzIwMmYwYmE3ZmEyYjc0NDQyYjY1MWMuLjBmMGE5
M2YyNGYzYjcxZTZhMWI5YzE3ZDg1MDI5YzY4NWZmYjVkNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAt
MDgtMjIgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB2aXJ0dWFsIHBh
dGggdXRpbGl0aWVzIGZvciBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMzIKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRl
c3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuICAoRWFjaCBET01GaWxlUGF0aCdzIG1ldGhvZCBpcyBi
cmllZmx5IHRlc3RlZCBsb2NhbGx5LikKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
c3RvcmFnZS9ET01GaWxlUGF0aC5jcHA6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmls
ZVBhdGguaDogQWRkZWQuCisKIDIwMTAtMDgtMjIgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmts
aW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGYxZWM0NDU0MjFjMmRmMzhjZWRjNWQ2MWE1YzljYzk0MTc0MGFj
MjEuLjY2NzI1MzFhODNmZTJkMTRhMDZhNDY2YWM4YTczYTg1NGVmMDM5MWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
Mjk5OSw3ICsyOTk5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVOQUJM
RV9ET01fU1RPUkFHRQogCiAjIC0tLS0KLSMgSFRNTDUgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydAor
IyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9GSUxFX1NZU1RFTQog
RkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9GSUxFX1NZU1RFTT0xCkBAIC0zMDM5LDYgKzMwMzks
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogICAgICAgIFdlYkNvcmUvc3RvcmFnZS9EaXJlY3Rv
cnlFbnRyeS5oIFwKICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBc
CiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIFwKKyAgICAgICBXZWJD
b3JlL3N0b3JhZ2UvRE9NRmlsZVBhdGguY3BwIFwKKyAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9N
RmlsZVBhdGguaCBcCiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwIFwK
ICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIFwKICAgICAgICBXZWJDb3Jl
L3N0b3JhZ2UvRW50cmllc0NhbGxiYWNrLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmNDczOGE1MmQ5OTkwMjY5MjY4MDMz
MTQ5NjZmYjUwZmVmOGU3ZWIwLi41NGYzMjNkYWVmMjNiMTEyYTA4Y2UyMDNmYzA3Y2FlYWNlNTA5
Y2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzU1Nyw2ICszNTU3LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RpcmVj
dG9yeUVudHJ5LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaCcsCisgICAgICAgICAgICAn
c3RvcmFnZS9ET01GaWxlUGF0aC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9NRmlsZVBh
dGguaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNwcCcsCiAgICAgICAg
ICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRW50
cmllc0NhbGxiYWNrLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggMTNhYTA3MzM1OWMxZjRkNTIzYTBkZWE4YTBmNGYxNzEwNDRm
YTcwNy4uNWFhZDNjNTk1MjU5MDMxZDAzYzMwNTc2NDJhZjcxNGM4NTBmZDZkZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNTgy
LDYgKzI1ODIsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNURU09MSkgewog
ICAgIEhFQURFUlMgKz0gXAogICAgICAgICBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmggXAogICAg
ICAgICBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIFwKKyAgICAgICAgc3RvcmFnZS9ET01GaWxl
UGF0aC5oIFwKICAgICAgICAgc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggXAogICAgICAgICBzdG9y
YWdlL0VudHJpZXNDYWxsYmFjay5oIFwKICAgICAgICAgc3RvcmFnZS9FbnRyeS5oIFwKQEAgLTI1
OTgsNiArMjU5OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7
CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKKyAgICAgICAgc3RvcmFnZS9E
T01GaWxlUGF0aC5jcHAgXAogICAgICAgICBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwIFwKICAg
ICAgICAgc3RvcmFnZS9FbnRyeS5jcHAgXAogICAgICAgICBzdG9yYWdlL0VudHJ5QXJyYXkuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDc0ODYwMzM0MzhiZjEz
MDRjZDIxNzIwNDViZThiMWIzZTAyYTFjNGMuLjQ3ZjliNTk1NzM0N2ZhOGNjMDQxMzVmNzhhNGFk
ZTdlNmQzYjQ3NjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEx
NTcsNiArNTExNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxET01GaWxlUGF0aC5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERPTUZpbGVQYXRo
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdG9yYWdlXERPTUZpbGVTeXN0ZW0uY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODA1OWFhMmUyN2FhYTNl
NzZmODVmNWQ2NDY0MGU3MDY4NWU2ZmM5ZC4uZGEzYTg4MmRiZGE2YzVjMmUyMjhkZTVmMTNlM2Nk
ZjczMjgyZGI0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIzODUsNiArMjM4NSw4IEBACiAJCTg5NTI1M0RDMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxl
U3RyZWFtUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODk1MjUzREExMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5jcHAgKi87
IH07CiAJCTg5NTI1M0REMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NTI1M0RCMTE2QzRF
RjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuaCAqLzsgfTsKIAkJODk1MjUzREYxMTZDNEYw
NjAwQ0FCRjAwIC8qIEZpbGVUaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAgLyogRmlsZVRocmVh
ZFRhc2suaCAqLzsgfTsKKwkJODk2ODZDOUYxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5Njg2
QzlEMTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5jcHAgKi87IH07CisJCTg5Njg2Q0Ew
MTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk2ODZDOUUxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZp
bGVQYXRoLmggKi87IH07CiAJCTg5ODhFMTBFMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg4RTEw
QzExQTM1MDhCMDBEQjczMkUgLyogQmxvYkl0ZW0uY3BwICovOyB9OwogCQk4OTg4RTEwRjExQTM1
MDhCMDBEQjczMkUgLyogQmxvYkl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg5ODhFMTBEMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg5OUFCQzI2
MTIxNUU0QTMwMEY5RjIxOSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTlBQkMyMDEyMTVFNEEzMDBGOUYyMTkgLyog
RGlyZWN0b3J5RW50cnkuY3BwICovOyB9OwpAQCAtODI0MSw2ICs4MjQzLDggQEAKIAkJODk1MjUz
REExMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3RyZWFtUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OTUyNTNEQjExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTdHJlYW1Qcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAg
LyogRmlsZVRocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZVRocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk2ODZDOUQxMjIy
NDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTUZpbGVQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODk2ODZDOUUxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5N0EyRDE5MTFGRjU4QTUwMDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUZpbGVTeXN0ZW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTdBMkQxQTExRkY1OEE1MDA4Mjc0MEMgLyog
RE9NRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxl
U3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5N0EyRDFCMTFGRjU4QTUw
MDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01G
aWxlU3lzdGVtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTg0LDYgKzEx
NTg4LDggQEAKIAkJCQk4OTlBQkMyMzEyMTVFNEEzMDBGOUYyMTkgLyogRGlyZWN0b3J5UmVhZGVy
LmNwcCAqLywKIAkJCQk4OTlBQkMyNDEyMTVFNEEzMDBGOUYyMTkgLyogRGlyZWN0b3J5UmVhZGVy
LmggKi8sCiAJCQkJODk5QUJDMjUxMjE1RTRBMzAwRjlGMjE5IC8qIERpcmVjdG9yeVJlYWRlci5p
ZGwgKi8sCisJCQkJODk2ODZDOUQxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCAq
LywKKwkJCQk4OTY4NkM5RTEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguaCAqLywKIAkJ
CQk4OTdBMkQxOTExRkY1OEE1MDA4Mjc0MEMgLyogRE9NRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJ
ODk3QTJEMUExMUZGNThBNTAwODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uaCAqLywKIAkJCQk4OTdB
MkQxQjExRkY1OEE1MDA4Mjc0MEMgLyogRE9NRmlsZVN5c3RlbS5pZGwgKi8sCkBAIC0yMDM0Nyw2
ICsyMDM1Myw3IEBACiAJCQkJMkVGMUJGRjkxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5QzBERDdCMTIxRjBDNjkwMDlFMTdDQSAvKiBG
aWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTA1N0ZBNjEyMjA3MzEx
MDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4OTY4NkNBMDEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjI4MDAsNiArMjI4MDcsNyBAQAogCQkJCTQ2QTI2OTA1MTIxQjZCNDMwMEM0MUYzQSAv
KiBGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5QzBERDdBMTIxRjBDNjkwMDlF
MTdDQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMDU3
RkE1MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODk2ODZDOUYxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVQYXRo
LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2Y0MThk
M2YxMTg1NGZhZmI2ZjdjZDQxYWFiNTMzZTRjZWRhNjU4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKQEAgLTAsMCArMSwxNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKworI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKworI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBjaGFyIERPTUZpbGVQYXRoOjpzZXBhcmF0b3IgPSAnLyc7Citjb25zdCBj
aGFyKiBET01GaWxlUGF0aDo6cm9vdCA9ICIvIjsKKworU3RyaW5nIERPTUZpbGVQYXRoOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudHMpCit7CisgICAg
cmV0dXJuIGVuc3VyZURpcmVjdG9yeVBhdGgoYmFzZSkgKyBjb21wb25lbnRzOworfQorCitTdHJp
bmcgRE9NRmlsZVBhdGg6OmVuc3VyZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmICghRE9NRmlsZVBhdGg6OmVuZHNXaXRoU2VwYXJhdG9yKHBhdGgpKSB7CisgICAg
ICAgIFN0cmluZyBuZXdQYXRoID0gcGF0aDsKKyAgICAgICAgbmV3UGF0aC5hcHBlbmQoRE9NRmls
ZVBhdGg6OnNlcGFyYXRvcik7CisgICAgICAgIHJldHVybiBuZXdQYXRoOworICAgIH0KKyAgICBy
ZXR1cm4gcGF0aDsKK30KKworU3RyaW5nIERPTUZpbGVQYXRoOjpnZXROYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBpbnQgaW5kZXggPSBwYXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRo
OjpzZXBhcmF0b3IpOworICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIHBhdGgu
c3Vic3RyaW5nKGluZGV4KTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworU3RyaW5nIERPTUZpbGVQ
YXRoOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGludCBpbmRleCA9
IHBhdGgucmV2ZXJzZUZpbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7CisgICAgaWYgKGluZGV4
ICE9IC0xKQorICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgIHJl
dHVybiBwYXRoOworfQorCitib29sIERPTUZpbGVQYXRoOjppc1BhcmVudE9mKGNvbnN0IFN0cmlu
ZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKQoreworICAgIHJldHVybiBtYXlCZUNo
aWxkLnN0YXJ0c1dpdGgocGF0aCk7Cit9CisKK1N0cmluZyBET01GaWxlUGF0aDo6cmVtb3ZlRXh0
cmFQYXJlbnRSZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBBU1NFUlQoRE9N
RmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOworICAgIFZlY3RvcjxTdHJpbmc+IGNvbXBvbmVu
dHM7CisgICAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplZDsKKyAgICBwYXRoLnNwbGl0KERP
TUZpbGVQYXRoOjpzZXBhcmF0b3IsIGNvbXBvbmVudHMpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoY29tcG9uZW50c1tp
XSA9PSAiLiIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKGNvbXBvbmVudHNb
aV0gPT0gIi4uIiAmJiBjYW5vbmljYWxpemVkLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGNh
bm9uaWNhbGl6ZWQucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IH0KKyAgICAgICAgY2Fub25pY2FsaXplZC5hcHBlbmQoY29tcG9uZW50c1tpXSk7CisgICAgfQor
ICAgIGlmIChjYW5vbmljYWxpemVkLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIERPTUZpbGVQ
YXRoOjpyb290OworICAgIFN0cmluZyByZXN1bHQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBjYW5vbmljYWxpemVkLnNpemUoKTsgKytpKSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoRE9N
RmlsZVBhdGg6OnNlcGFyYXRvcik7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoY2Fub25pY2FsaXpl
ZFtpXSk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIENoZWNrIHRoZSBuYW1p
bmcgcmVzdHJpY3Rpb25zIGRlZmluZWQgaW4gRmlsZVN5c3RlbSBBUEkgOC4zLgorLy8gaHR0cDov
L2Rldi53My5vcmcvMjAwOS9kYXAvZmlsZS1zeXN0ZW0vZmlsZS1kaXItc3lzLmh0bWwjbmFtaW5n
LXJlc3RyaWN0aW9ucworYm9vbCBET01GaWxlUGF0aDo6aXNWYWxpZChjb25zdCBTdHJpbmcmIHBh
dGgpCit7CisgICAgaWYgKHBhdGguaXNFbXB0eSgpIHx8IHBhdGggPT0gRE9NRmlsZVBhdGg6OnJv
b3QpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgLy8gQ2hhcnMgMC0zMSBpbiBVVEYtOCBw
cmVwcmVzZW50YXRpb24gYXJlIG5vdCBhbGxvd2VkLgorICAgIENTdHJpbmcgdXRmOFN0cmluZyA9
IHBhdGgudXRmOCgpOworICAgIGNvbnN0IGNoYXIqIHAgPSB1dGY4U3RyaW5nLmRhdGEoKTsKKyAg
ICB3aGlsZSAoY2hhciBjID0gKnArKykgeworICAgICAgICBpZiAoYyA8IDMyKQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFVuYWxsb3dlZCBuYW1lcy4KKyAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCB1bmFsbG93ZWROYW1lc1JlZ0V4
cDEsICgiLyhDT058UFJOfEFVWHxOVUwpKFtcXC4vXXwkKSIsIFRleHRDYXNlSW5zZW5zaXRpdmUp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCB1bmFsbG93ZWRO
YW1lc1JlZ0V4cDIsICgiLyhDT018TFBUKVsxLTldKFtcXC4vXXwkKSIsIFRleHRDYXNlSW5zZW5z
aXRpdmUpKTsKKworICAgIGlmICh1bmFsbG93ZWROYW1lc1JlZ0V4cDEubWF0Y2gocGF0aCkgPj0g
MCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICh1bmFsbG93ZWROYW1lc1JlZ0V4cDIu
bWF0Y2gocGF0aCkgPj0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTmFtZXMg
bXVzdCBub3QgZW5kIHdpdGggcGVyaW9kIG9yIHdoaXRlc3BhY2UuCisgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChSZWd1bGFyRXhwcmVzc2lvbiwgZW5kaW5nUmVnRXhwLCAoIltcXC4gXSgvfCQpIiwg
VGV4dENhc2VJbnNlbnNpdGl2ZSkpOworCisgICAgaWYgKGVuZGluZ1JlZ0V4cC5tYXRjaChwYXRo
KSA+PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBVbmFsbG93ZWQgY2hhcnM6
ICdcJywgJzwnLCAnPicsICc8JywgJz4nLCAnOicsICc/JywgJyonLCAnIicsICd8JworICAgIC8v
IChXZSBkb24ndCBjaGVjayAnLycgaGVyZSBhcyB0aGlzIG1ldGhvZCB0YWtlcyBwYXRocyBhcyBp
dHMgYXJndW1lbnQuKQorICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVndWxhckV4cHJlc3Npb24s
IHVuYWxsb3dlZENoYXJzUmVnRXhwLCAoIltcXFxcPD48PjpcXD9cXCpcInxdIiwgVGV4dENhc2VJ
bnNlbnNpdGl2ZSkpOworCisgICAgaWYgKHVuYWxsb3dlZENoYXJzUmVnRXhwLm1hdGNoKHBhdGgp
ID49IDApCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIERPTUZpbGVQYXRoOjppc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyAnLycgaXMg
bm90IGFsbG93ZWQgaW4gbmFtZS4KKyAgICBpZiAobmFtZS5jb250YWlucygnLycpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIGlzVmFsaWQoIi8iICsgbmFtZSk7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5oIGIvV2ViQ29yZS9zdG9yYWdl
L0RPTUZpbGVQYXRoLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGJkZGVkMjcyZGJjYTQzOTNjMWVlNDQ1NGQyZTBk
NDc0YmNlNDdkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0
aC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERPTUZpbGVQYXRoX2gKKyNkZWZpbmUgRE9NRmls
ZVBhdGhfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworLy8gRE9NRmlsZVN5c3RlbSBwYXRoIHV0aWxpdGllcy4gQWxsIG1ldGhvZHMgaW4g
dGhpcyBjbGFzcyBhcmUgc3RhdGljLgorY2xhc3MgRE9NRmlsZVBhdGggeworcHVibGljOgorICAg
IHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRvcjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciogcm9v
dDsKKworICAgIC8vIFJldHVybnMgdGhlIG5hbWUgcGFydCBmcm9tIHRoZSBnaXZlbiBwYXRoLgor
ICAgIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZShjb25zdCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8g
UmV0dXJucyB0aGUgcGFyZW50IGRpcmVjdG9yeSBwYXRoIG9mIHRoZSBnaXZlbiBwYXRoLgorICAg
IHN0YXRpYyBTdHJpbmcgZ2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICAv
LyBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIGlzIGEgcGFyZW50IG9mIG1heUJlQ2hpbGQuIFRoaXMg
bWV0aG9kIGFzc3VtZXMgZ2l2ZW4gcGF0aHMgYXJlIGFic29sdXRlIGFuZCBkbyBub3QgaGF2ZSBl
eHRyYSBwYXJlbnQgcmVmZXJlbmNlcy4KKyAgICBzdGF0aWMgYm9vbCBpc1BhcmVudE9mKGNvbnN0
IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKTsKKworICAgIC8vIEFwcGVu
ZHMgdGhlIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoLgorICAgIHN0YXRpYyBTdHJp
bmcgZW5zdXJlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gUmV0
dXJucyBhIG5ldyBwYXRoIGJ5IGFwcGVuZGluZyBhIHNlcGFyYXRvciBhbmQgdGhlIHN1cHBsaWVk
IHBhdGggY29tcG9uZW50IHRvIHRoZSBwYXRoLgorICAgIHN0YXRpYyBTdHJpbmcgYXBwZW5kKGNv
bnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQpOworCisgICAgc3RhdGlj
IGJvb2wgaXNBYnNvbHV0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgeworICAgICAgICByZXR1
cm4gcGF0aC5zdGFydHNXaXRoKERPTUZpbGVQYXRoOjpyb290KTsKKyAgICB9CisKKyAgICBzdGF0
aWMgYm9vbCBlbmRzV2l0aFNlcGFyYXRvcihjb25zdCBTdHJpbmcmIHBhdGgpCisgICAgeworICAg
ICAgICByZXR1cm4gcGF0aFtwYXRoLmxlbmd0aCgpIC0gMV0gPT0gRE9NRmlsZVBhdGg6OnNlcGFy
YXRvcjsKKyAgICB9CisKKyAgICAvLyBSZW1vdmVzIGV4dHJhIHBhcmVudCAoIi4uIikgcmVmZXJl
bmNlcy4gVGhpcyBkb2Vzbid0IHRha2UgYWxsIHRoZSByZWZlcmVuY2VzIGlmIGl0IGdvZXMgYmV5
b25kIHRoZSByb290IGRpcmVjdG9yeS4KKyAgICBzdGF0aWMgU3RyaW5nIHJlbW92ZUV4dHJhUGFy
ZW50UmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gQ2hlY2tzIGlmIHRo
ZSBnaXZlbiBwYXRoIGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5hbWluZyByZXN0cmljdGlv
bnMuCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZChjb25zdCBTdHJpbmcmIHBhdGgpOworCisgICAg
Ly8gQ2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lIGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5h
bWluZyByZXN0cmljdGlvbnMuCisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgU3Ry
aW5nJiBuYW1lKTsKKworcHJpdmF0ZToKKyAgICBET01GaWxlUGF0aCgpIHsgfQorfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRE9NRmlsZVBhdGhfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65211</attachid>
            <date>2010-08-23 23:08:25 -0700</date>
            <delta_ts>2010-08-24 11:12:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44132-20100823230823.patch</filename>
            <type>text/plain</type>
            <size>17812</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGViNDJjNWNhYmVmNjE4ODJhZGZkMjJlYjFlMDQ5NTY2OWRjYTJiMmYuLmUwZDRj
ZDdkZmYxZTNiYjY1ZTIwOGZkZTg0MTMwZGViMzQzOWRjZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ1Nyw2ICsx
NDU3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2Vy
LmNwcAogICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCiAgICAgc3RvcmFnZS9EaXJlY3Rv
cnlSZWFkZXIuY3BwCisgICAgc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKICAgICBzdG9yYWdlL0RP
TUZpbGVTeXN0ZW0uY3BwCiAgICAgc3RvcmFnZS9FbnRyeS5jcHAKICAgICBzdG9yYWdlL0VudHJ5
QXJyYXkuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDlhZDY3NDk3NWIxYTJmZjg3NzIwMmYwYmE3ZmEyYjc0NDQyYjY1MWMuLjBmMGE5
M2YyNGYzYjcxZTZhMWI5YzE3ZDg1MDI5YzY4NWZmYjVkNWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAt
MDgtMjIgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB2aXJ0dWFsIHBh
dGggdXRpbGl0aWVzIGZvciBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMzIKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRl
c3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuICAoRWFjaCBET01GaWxlUGF0aCdzIG1ldGhvZCBpcyBi
cmllZmx5IHRlc3RlZCBsb2NhbGx5LikKKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAg
ICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAg
KiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICog
c3RvcmFnZS9ET01GaWxlUGF0aC5jcHA6IEFkZGVkLgorICAgICAgICAqIHN0b3JhZ2UvRE9NRmls
ZVBhdGguaDogQWRkZWQuCisKIDIwMTAtMDgtMjIgIEFuZHJlYXMgS2xpbmcgIDxhbmRyZWFzLmts
aW5nQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlz
dGlhbnNlbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dO
VW1ha2VmaWxlLmFtCmluZGV4IGYxZWM0NDU0MjFjMmRmMzhjZWRjNWQ2MWE1YzljYzk0MTc0MGFj
MjEuLjY2NzI1MzFhODNmZTJkMTRhMDZhNDY2YWM4YTczYTg1NGVmMDM5MWQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAt
Mjk5OSw3ICsyOTk5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIGVuZGlmICMgRU5EIEVOQUJM
RV9ET01fU1RPUkFHRQogCiAjIC0tLS0KLSMgSFRNTDUgRmlsZVN5c3RlbSBBUEkgc3VwcG9ydAor
IyBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0CiAjIC0tLS0KIGlmIEVOQUJMRV9GSUxFX1NZU1RFTQog
RkVBVFVSRV9ERUZJTkVTICs9IEVOQUJMRV9GSUxFX1NZU1RFTT0xCkBAIC0zMDM5LDYgKzMwMzks
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogICAgICAgIFdlYkNvcmUvc3RvcmFnZS9EaXJlY3Rv
cnlFbnRyeS5oIFwKICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCBc
CiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIFwKKyAgICAgICBXZWJD
b3JlL3N0b3JhZ2UvRE9NRmlsZVBhdGguY3BwIFwKKyAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9N
RmlsZVBhdGguaCBcCiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwIFwK
ICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5oIFwKICAgICAgICBXZWJDb3Jl
L3N0b3JhZ2UvRW50cmllc0NhbGxiYWNrLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBmNDczOGE1MmQ5OTkwMjY5MjY4MDMz
MTQ5NjZmYjUwZmVmOGU3ZWIwLi41NGYzMjNkYWVmMjNiMTEyYTA4Y2UyMDNmYzA3Y2FlYWNlNTA5
Y2QyIDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQpAQCAtMzU1Nyw2ICszNTU3LDggQEAKICAgICAgICAgICAgICdzdG9yYWdlL0RpcmVj
dG9yeUVudHJ5LmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmNwcCcs
CiAgICAgICAgICAgICAnc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuaCcsCisgICAgICAgICAgICAn
c3RvcmFnZS9ET01GaWxlUGF0aC5jcHAnLAorICAgICAgICAgICAgJ3N0b3JhZ2UvRE9NRmlsZVBh
dGguaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmNwcCcsCiAgICAgICAg
ICAgICAnc3RvcmFnZS9ET01GaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ3N0b3JhZ2UvRW50
cmllc0NhbGxiYWNrLmgnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNv
cmUvV2ViQ29yZS5wcm8KaW5kZXggMTNhYTA3MzM1OWMxZjRkNTIzYTBkZWE4YTBmNGYxNzEwNDRm
YTcwNy4uNWFhZDNjNTk1MjU5MDMxZDAzYzMwNTc2NDJhZjcxNGM4NTBmZDZkZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0yNTgy
LDYgKzI1ODIsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfRklMRV9TWVNURU09MSkgewog
ICAgIEhFQURFUlMgKz0gXAogICAgICAgICBzdG9yYWdlL0RpcmVjdG9yeUVudHJ5LmggXAogICAg
ICAgICBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oIFwKKyAgICAgICAgc3RvcmFnZS9ET01GaWxl
UGF0aC5oIFwKICAgICAgICAgc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggXAogICAgICAgICBzdG9y
YWdlL0VudHJpZXNDYWxsYmFjay5oIFwKICAgICAgICAgc3RvcmFnZS9FbnRyeS5oIFwKQEAgLTI1
OTgsNiArMjU5OSw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7
CiAgICAgU09VUkNFUyArPSBcCiAgICAgICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwIFwK
ICAgICAgICAgc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwKKyAgICAgICAgc3RvcmFnZS9E
T01GaWxlUGF0aC5jcHAgXAogICAgICAgICBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwIFwKICAg
ICAgICAgc3RvcmFnZS9FbnRyeS5jcHAgXAogICAgICAgICBzdG9yYWdlL0VudHJ5QXJyYXkuY3Bw
IFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDc0ODYwMzM0MzhiZjEz
MDRjZDIxNzIwNDViZThiMWIzZTAyYTFjNGMuLjQ3ZjliNTk1NzM0N2ZhOGNjMDQxMzVmNzhhNGFk
ZTdlNmQzYjQ3NjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtNTEx
NTcsNiArNTExNTcsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3RvcmFnZVxET01GaWxlUGF0aC5jcHAiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxzdG9yYWdlXERPTUZpbGVQYXRo
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIu
LlxzdG9yYWdlXERPTUZpbGVTeXN0ZW0uY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggODA1OWFhMmUyN2FhYTNl
NzZmODVmNWQ2NDY0MGU3MDY4NWU2ZmM5ZC4uZGEzYTg4MmRiZGE2YzVjMmUyMjhkZTVmMTNlM2Nk
ZjczMjgyZGI0OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
QEAgLTIzODUsNiArMjM4NSw4IEBACiAJCTg5NTI1M0RDMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxl
U3RyZWFtUHJveHkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gODk1MjUzREExMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5jcHAgKi87
IH07CiAJCTg5NTI1M0REMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5NTI1M0RCMTE2QzRF
RjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuaCAqLzsgfTsKIAkJODk1MjUzREYxMTZDNEYw
NjAwQ0FCRjAwIC8qIEZpbGVUaHJlYWRUYXNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAgLyogRmlsZVRocmVh
ZFRhc2suaCAqLzsgfTsKKwkJODk2ODZDOUYxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRo
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5Njg2
QzlEMTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5jcHAgKi87IH07CisJCTg5Njg2Q0Ew
MTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk2ODZDOUUxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZp
bGVQYXRoLmggKi87IH07CiAJCTg5ODhFMTBFMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTg4RTEw
QzExQTM1MDhCMDBEQjczMkUgLyogQmxvYkl0ZW0uY3BwICovOyB9OwogCQk4OTg4RTEwRjExQTM1
MDhCMDBEQjczMkUgLyogQmxvYkl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDg5ODhFMTBEMTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTg5OUFCQzI2
MTIxNUU0QTMwMEY5RjIxOSAvKiBEaXJlY3RvcnlFbnRyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTlBQkMyMDEyMTVFNEEzMDBGOUYyMTkgLyog
RGlyZWN0b3J5RW50cnkuY3BwICovOyB9OwpAQCAtODI0MSw2ICs4MjQzLDggQEAKIAkJODk1MjUz
REExMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3RyZWFtUHJveHkuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk4OTUyNTNEQjExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVBy
b3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTdHJlYW1Qcm94eS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTUyNTNERTExNkM0RjA2MDBDQUJGMDAg
LyogRmlsZVRocmVhZFRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmls
ZVRocmVhZFRhc2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJODk2ODZDOUQxMjIy
NDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTUZpbGVQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJODk2ODZDOUUxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVQYXRoLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTg5N0EyRDE5MTFGRjU4QTUwMDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IERPTUZpbGVTeXN0ZW0uY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTdBMkQxQTExRkY1OEE1MDA4Mjc0MEMgLyog
RE9NRmlsZVN5c3RlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01GaWxl
U3lzdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5N0EyRDFCMTFGRjU4QTUw
MDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBET01G
aWxlU3lzdGVtLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNTg0LDYgKzEx
NTg4LDggQEAKIAkJCQk4OTlBQkMyMzEyMTVFNEEzMDBGOUYyMTkgLyogRGlyZWN0b3J5UmVhZGVy
LmNwcCAqLywKIAkJCQk4OTlBQkMyNDEyMTVFNEEzMDBGOUYyMTkgLyogRGlyZWN0b3J5UmVhZGVy
LmggKi8sCiAJCQkJODk5QUJDMjUxMjE1RTRBMzAwRjlGMjE5IC8qIERpcmVjdG9yeVJlYWRlci5p
ZGwgKi8sCisJCQkJODk2ODZDOUQxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCAq
LywKKwkJCQk4OTY4NkM5RTEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguaCAqLywKIAkJ
CQk4OTdBMkQxOTExRkY1OEE1MDA4Mjc0MEMgLyogRE9NRmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJ
ODk3QTJEMUExMUZGNThBNTAwODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uaCAqLywKIAkJCQk4OTdB
MkQxQjExRkY1OEE1MDA4Mjc0MEMgLyogRE9NRmlsZVN5c3RlbS5pZGwgKi8sCkBAIC0yMDM0Nyw2
ICsyMDM1Myw3IEBACiAJCQkJMkVGMUJGRjkxMjFDQjBDRTAwQzI3NjI3IC8qIEZpbGVTdHJlYW1D
bGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTg5QzBERDdCMTIxRjBDNjkwMDlFMTdDQSAvKiBG
aWxlU3lzdGVtQ2FsbGJhY2tzLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRTA1N0ZBNjEyMjA3MzEx
MDBBNDc2RDUgLyogRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk4OTY4NkNBMDEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpAQCAtMjI4MDAsNiArMjI4MDcsNyBAQAogCQkJCTQ2QTI2OTA1MTIxQjZCNDMwMEM0MUYzQSAv
KiBGaWxlV3JpdGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg5QzBERDdBMTIxRjBDNjkwMDlF
MTdDQSAvKiBGaWxlU3lzdGVtQ2FsbGJhY2tzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNFMDU3
RkE1MTIyMDczMTEwMEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJODk2ODZDOUYxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVQYXRo
LmNwcCBiL1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmExODU2
NDMyYjIwNGNlY2JlMGM1ZWQ5YWU4ZWI2MjRiMzAwYjRjZQotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiRE9NRmlsZVBhdGguaCIKKworI2lmIEVOQUJMRShGSUxFX1NZ
U1RFTSkKKworI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjb25zdCBjaGFyIERPTUZpbGVQYXRoOjpzZXBhcmF0b3IgPSAnLyc7Citjb25zdCBj
aGFyIERPTUZpbGVQYXRoOjpyb290W10gPSAiLyI7CisKK1N0cmluZyBET01GaWxlUGF0aDo6YXBw
ZW5kKGNvbnN0IFN0cmluZyYgYmFzZSwgY29uc3QgU3RyaW5nJiBjb21wb25lbnRzKQoreworICAg
IHJldHVybiBlbnN1cmVEaXJlY3RvcnlQYXRoKGJhc2UpICsgY29tcG9uZW50czsKK30KKworU3Ry
aW5nIERPTUZpbGVQYXRoOjplbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkK
K3sKKyAgICBpZiAoIURPTUZpbGVQYXRoOjplbmRzV2l0aFNlcGFyYXRvcihwYXRoKSkgeworICAg
ICAgICBTdHJpbmcgbmV3UGF0aCA9IHBhdGg7CisgICAgICAgIG5ld1BhdGguYXBwZW5kKERPTUZp
bGVQYXRoOjpzZXBhcmF0b3IpOworICAgICAgICByZXR1cm4gbmV3UGF0aDsKKyAgICB9CisgICAg
cmV0dXJuIHBhdGg7Cit9CisKK1N0cmluZyBET01GaWxlUGF0aDo6Z2V0TmFtZShjb25zdCBTdHJp
bmcmIHBhdGgpCit7CisgICAgaW50IGluZGV4ID0gcGF0aC5yZXZlcnNlRmluZChET01GaWxlUGF0
aDo6c2VwYXJhdG9yKTsKKyAgICBpZiAoaW5kZXggIT0gLTEpCisgICAgICAgIHJldHVybiBwYXRo
LnN1YnN0cmluZyhpbmRleCk7CisgICAgcmV0dXJuIHBhdGg7Cit9CisKK1N0cmluZyBET01GaWxl
UGF0aDo6Z2V0RGlyZWN0b3J5KGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpbnQgaW5kZXgg
PSBwYXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOworICAgIGlmIChpbmRl
eCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGluZGV4KTsKKyAgICBy
ZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jvb2wgRE9NRmlsZVBhdGg6OmlzUGFyZW50T2YoY29uc3Qg
U3RyaW5nJiBwYXJlbnQsIGNvbnN0IFN0cmluZyYgbWF5QmVDaGlsZCkKK3sKKyAgICBpZiAocGFy
ZW50Lmxlbmd0aCgpID49IG1heUJlQ2hpbGQubGVuZ3RoKCkgfHwgIW1heUJlQ2hpbGQuc3RhcnRz
V2l0aChwYXJlbnQsIGZhbHNlKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChtYXlC
ZUNoaWxkW3BhcmVudC5sZW5ndGgoKV0gIT0gRE9NRmlsZVBhdGg6OnNlcGFyYXRvcikKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgRE9NRmlsZVBh
dGg6OnJlbW92ZUV4dHJhUGFyZW50UmVmZXJlbmNlcyhjb25zdCBTdHJpbmcmIHBhdGgpCit7Cisg
ICAgQVNTRVJUKERPTUZpbGVQYXRoOjppc0Fic29sdXRlKHBhdGgpKTsKKyAgICBWZWN0b3I8U3Ry
aW5nPiBjb21wb25lbnRzOworICAgIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNhbGl6ZWQ7CisgICAg
cGF0aC5zcGxpdChET01GaWxlUGF0aDo6c2VwYXJhdG9yLCBjb21wb25lbnRzKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGNvbXBvbmVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGNvbXBvbmVudHNbaV0gPT0gIi4iKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlm
IChjb21wb25lbnRzW2ldID09ICIuLiIpIHsKKyAgICAgICAgICAgIGlmIChjYW5vbmljYWxpemVk
LnNpemUoKSA+IDApCisgICAgICAgICAgICAgICAgY2Fub25pY2FsaXplZC5yZW1vdmVMYXN0KCk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBjYW5vbmljYWxpemVk
LmFwcGVuZChjb21wb25lbnRzW2ldKTsKKyAgICB9CisgICAgaWYgKGNhbm9uaWNhbGl6ZWQuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gRE9NRmlsZVBhdGg6OnJvb3Q7CisgICAgU3RyaW5nIHJl
c3VsdDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbm9uaWNhbGl6ZWQuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChET01GaWxlUGF0aDo6c2VwYXJhdG9yKTsKKyAg
ICAgICAgcmVzdWx0LmFwcGVuZChjYW5vbmljYWxpemVkW2ldKTsKKyAgICB9CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworLy8gQ2hlY2sgdGhlIG5hbWluZyByZXN0cmljdGlvbnMgZGVmaW5lZCBp
biBGaWxlU3lzdGVtIEFQSSA4LjMuCisvLyBodHRwOi8vZGV2LnczLm9yZy8yMDA5L2RhcC9maWxl
LXN5c3RlbS9maWxlLWRpci1zeXMuaHRtbCNuYW1pbmctcmVzdHJpY3Rpb25zCitib29sIERPTUZp
bGVQYXRoOjppc1ZhbGlkUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgaWYgKHBhdGgu
aXNFbXB0eSgpIHx8IHBhdGggPT0gRE9NRmlsZVBhdGg6OnJvb3QpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgLy8gQ2hhcnMgMC0zMSBpbiBVVEYtOCBwcmVwcmVzZW50YXRpb24gYXJlIG5v
dCBhbGxvd2VkLgorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGgoKTsgKytp
KQorICAgICAgICBpZiAocGF0aFtpXSA8IDMyKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
CisgICAgLy8gVW5hbGxvd2VkIG5hbWVzLgorICAgIERFRklORV9TVEFUSUNfTE9DQUwoUmVndWxh
ckV4cHJlc3Npb24sIHVuYWxsb3dlZE5hbWVzUmVnRXhwMSwgKCIvKENPTnxQUk58QVVYfE5VTCko
W1xcLi9dfCQpIiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoUmVndWxhckV4cHJlc3Npb24sIHVuYWxsb3dlZE5hbWVzUmVnRXhwMiwgKCIvKENPTXxMUFQp
WzEtOV0oW1xcLi9dfCQpIiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworCisgICAgaWYgKHVuYWxs
b3dlZE5hbWVzUmVnRXhwMS5tYXRjaChwYXRoKSA+PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgaWYgKHVuYWxsb3dlZE5hbWVzUmVnRXhwMi5tYXRjaChwYXRoKSA+PSAwKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAvLyBOYW1lcyBtdXN0IG5vdCBlbmQgd2l0aCBwZXJpb2Qg
b3Igd2hpdGVzcGFjZS4KKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9u
LCBlbmRpbmdSZWdFeHAsICgiW1xcLlxcc10oL3wkKSIsIFRleHRDYXNlSW5zZW5zaXRpdmUpKTsK
KworICAgIGlmIChlbmRpbmdSZWdFeHAubWF0Y2gocGF0aCkgPj0gMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgLy8gVW5hbGxvd2VkIGNoYXJzOiAnXCcsICc8JywgJz4nLCAnOicsICc/
JywgJyonLCAnIicsICd8JworICAgIC8vIChXZSBkb24ndCBjaGVjayAnLycgaGVyZSBhcyB0aGlz
IG1ldGhvZCB0YWtlcyBwYXRocyBhcyBpdHMgYXJndW1lbnQuKQorICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUmVndWxhckV4cHJlc3Npb24sIHVuYWxsb3dlZENoYXJzUmVnRXhwLCAoIltcXFxcPD46
XFw/XFwqXCJ8XSIsIFRleHRDYXNlSW5zZW5zaXRpdmUpKTsKKworICAgIGlmICh1bmFsbG93ZWRD
aGFyc1JlZ0V4cC5tYXRjaChwYXRoKSA+PSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBET01GaWxlUGF0aDo6aXNWYWxpZE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKQoreworICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgLy8gJy8nIGlzIG5vdCBhbGxvd2VkIGluIG5hbWUuCisgICAgaWYgKG5hbWUu
Y29udGFpbnMoJy8nKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBpc1ZhbGlk
UGF0aCgiLyIgKyBuYW1lKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gRU5BQkxFKEZJTEVfU1lTVEVNKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9zdG9yYWdlL0RPTUZp
bGVQYXRoLmggYi9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVBhdGguaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjJi
YjIzMzgxM2ZlNTBjNTUzZGFkNTFhMzM4ZDEyZTU2NDZhMTdhCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVQYXRoLmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgRE9N
RmlsZVBhdGhfaAorI2RlZmluZSBET01GaWxlUGF0aF9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBET01GaWxlU3lzdGVtIHBhdGgg
dXRpbGl0aWVzLiBBbGwgbWV0aG9kcyBpbiB0aGlzIGNsYXNzIGFyZSBzdGF0aWMuCitjbGFzcyBE
T01GaWxlUGF0aCB7CitwdWJsaWM6CisgICAgc3RhdGljIGNvbnN0IGNoYXIgc2VwYXJhdG9yOwor
ICAgIHN0YXRpYyBjb25zdCBjaGFyIHJvb3RbXTsKKworICAgIC8vIFJldHVybnMgdGhlIG5hbWUg
cGFydCBmcm9tIHRoZSBnaXZlbiBwYXRoLgorICAgIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZShjb25z
dCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gUmV0dXJucyB0aGUgcGFyZW50IGRpcmVjdG9yeSBw
YXRoIG9mIHRoZSBnaXZlbiBwYXRoLgorICAgIHN0YXRpYyBTdHJpbmcgZ2V0RGlyZWN0b3J5KGNv
bnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICAvLyBDaGVja3MgaWYgYSBnaXZlbiBwYXRoIGlzIGEg
cGFyZW50IG9mIG1heUJlQ2hpbGQuIFRoaXMgbWV0aG9kIGFzc3VtZXMgZ2l2ZW4gcGF0aHMgYXJl
IGFic29sdXRlIGFuZCBkbyBub3QgaGF2ZSBleHRyYSByZWZlcmVuY2VzIHRvIGEgcGFyZW50IChp
LmUuICIuLi8iKS4KKyAgICBzdGF0aWMgYm9vbCBpc1BhcmVudE9mKGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKTsKKworICAgIC8vIEFwcGVuZHMgdGhlIHNlcGFy
YXRvciBhdCB0aGUgZW5kIG9mIHRoZSBwYXRoIGlmIGl0J3Mgbm90IHRoZXJlIGFscmVhZHkuCisg
ICAgc3RhdGljIFN0cmluZyBlbnN1cmVEaXJlY3RvcnlQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7
CisKKyAgICAvLyBSZXR1cm5zIGEgbmV3IHBhdGggYnkgYXBwZW5kaW5nIGEgc2VwYXJhdG9yIGFu
ZCB0aGUgc3VwcGxpZWQgcGF0aCBjb21wb25lbnQgdG8gdGhlIHBhdGguCisgICAgc3RhdGljIFN0
cmluZyBhcHBlbmQoY29uc3QgU3RyaW5nJiBwYXRoLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudCk7
CisKKyAgICBzdGF0aWMgYm9vbCBpc0Fic29sdXRlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICB7
CisgICAgICAgIHJldHVybiBwYXRoLnN0YXJ0c1dpdGgoRE9NRmlsZVBhdGg6OnJvb3QpOworICAg
IH0KKworICAgIHN0YXRpYyBib29sIGVuZHNXaXRoU2VwYXJhdG9yKGNvbnN0IFN0cmluZyYgcGF0
aCkKKyAgICB7CisgICAgICAgIHJldHVybiBwYXRoW3BhdGgubGVuZ3RoKCkgLSAxXSA9PSBET01G
aWxlUGF0aDo6c2VwYXJhdG9yOworICAgIH0KKworICAgIC8vIEV2YWx1YXRlcyBhbGwgIi4uLyIg
YW5kICIuLyIgc2VnbWVudHMuICBOb3RlIHRoYXQgIi8uLi8iIGV4cGFuZHMgdG8gIi8iLCBzbyB5
b3UgY2FuJ3QgZXZlciByZWZlciB0byBhbnl0aGluZyBhYm92ZSB0aGUgcm9vdCBkaXJlY3Rvcnku
CisgICAgc3RhdGljIFN0cmluZyByZW1vdmVFeHRyYVBhcmVudFJlZmVyZW5jZXMoY29uc3QgU3Ry
aW5nJiBwYXRoKTsKKworICAgIC8vIENoZWNrcyBpZiB0aGUgZ2l2ZW4gcGF0aCBmb2xsb3dzIHRo
ZSBGaWxlU3lzdGVtIEFQSSBuYW1pbmcgcmVzdHJpY3Rpb25zLgorICAgIHN0YXRpYyBib29sIGlz
VmFsaWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCk7CisKKyAgICAvLyBDaGVja3MgaWYgdGhlIGdp
dmVuIG5hbWUgZm9sbG93cyB0aGUgRmlsZVN5c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4K
KyAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpOworCitwcml2
YXRlOgorICAgIERPTUZpbGVQYXRoKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBET01GaWxlUGF0aF9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65298</attachid>
            <date>2010-08-24 11:12:33 -0700</date>
            <delta_ts>2010-08-24 16:32:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44132-20100824111232.patch</filename>
            <type>text/plain</type>
            <size>17813</size>
            <attacher name="Kinuko Yasuda">kinuko</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IGViNDJjNWNhYmVmNjE4ODJhZGZkMjJlYjFlMDQ5NTY2OWRjYTJiMmYuLmUwZDRj
ZDdkZmYxZTNiYjY1ZTIwOGZkZTg0MTMwZGViMzQzOWRjZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQKKysrIGIvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTQ1Nyw2ICsx
NDU3LDcgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIHN0b3JhZ2UvRGF0YWJhc2VUcmFja2Vy
LmNwcAogICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuY3BwCiAgICAgc3RvcmFnZS9EaXJlY3Rv
cnlSZWFkZXIuY3BwCisgICAgc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAKICAgICBzdG9yYWdlL0RP
TUZpbGVTeXN0ZW0uY3BwCiAgICAgc3RvcmFnZS9FbnRyeS5jcHAKICAgICBzdG9yYWdlL0VudHJ5
QXJyYXkuY3BwCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IDlhZDY3NDk3NWIxYTJmZjg3NzIwMmYwYmE3ZmEyYjc0NDQyYjY1MWMuLjM4MGY1
OTg1OTlkMzE2MDZjOGMxMDA1ZmY5NzNmZTNiOTk3MDk4ZGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAt
MDgtMjIgIEtpbnVrbyBZYXN1ZGEgIDxraW51a29AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCB2aXJ0dWFsIHBh
dGggdXRpbGl0aWVzIGZvciBGaWxlU3lzdGVtIEFQSQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQxMzIKKworICAgICAgICBObyBuZXcgdGVzdHM7IHRl
c3RzIHdpbGwgYmUgYWRkZWQgbGF0ZXIuIChFYWNoIERPTUZpbGVQYXRoJ3MgbWV0aG9kIGlzIGJy
aWVmbHkgdGVzdGVkIGxvY2FsbHkuKQorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAq
IFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgor
ICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBz
dG9yYWdlL0RPTUZpbGVQYXRoLmNwcDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9ET01GaWxl
UGF0aC5oOiBBZGRlZC4KKwogMjAxMC0wOC0yMiAgQW5kcmVhcyBLbGluZyAgPGFuZHJlYXMua2xp
bmdAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0
aWFuc2VuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbSBiL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KaW5kZXggZjFlYzQ0NTQyMWMyZGYzOGNlZGM1ZDYxYTVjOWNjOTQxNzQwYWMy
MS4uNjY3MjUzMWE4M2ZlMmQxNGEwNmE0NjZhYzhhNzNhODU0ZWYwMzkxZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQorKysgYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCkBAIC0y
OTk5LDcgKzI5OTksNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogZW5kaWYgIyBFTkQgRU5BQkxF
X0RPTV9TVE9SQUdFCiAKICMgLS0tLQotIyBIVE1MNSBGaWxlU3lzdGVtIEFQSSBzdXBwb3J0Cisj
IEZpbGVTeXN0ZW0gQVBJIHN1cHBvcnQKICMgLS0tLQogaWYgRU5BQkxFX0ZJTEVfU1lTVEVNCiBG
RUFUVVJFX0RFRklORVMgKz0gRU5BQkxFX0ZJTEVfU1lTVEVNPTEKQEAgLTMwMzksNiArMzAzOSw4
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAgICAgICAgV2ViQ29yZS9zdG9yYWdlL0RpcmVjdG9y
eUVudHJ5LmggXAogICAgICAgIFdlYkNvcmUvc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwIFwK
ICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmggXAorICAgICAgIFdlYkNv
cmUvc3RvcmFnZS9ET01GaWxlUGF0aC5jcHAgXAorICAgICAgIFdlYkNvcmUvc3RvcmFnZS9ET01G
aWxlUGF0aC5oIFwKICAgICAgICBXZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgXAog
ICAgICAgIFdlYkNvcmUvc3RvcmFnZS9ET01GaWxlU3lzdGVtLmggXAogICAgICAgIFdlYkNvcmUv
c3RvcmFnZS9FbnRyaWVzQ2FsbGJhY2suaCBcCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGY0NzM4YTUyZDk5OTAyNjkyNjgwMzMx
NDk2NmZiNTBmZWY4ZTdlYjAuLjU0ZjMyM2RhZWYyM2IxMTJhMDhjZTIwM2ZjMDdjYWVhY2U1MDlj
ZDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1dlYkNvcmUvV2ViQ29y
ZS5neXBpCkBAIC0zNTU3LDYgKzM1NTcsOCBAQAogICAgICAgICAgICAgJ3N0b3JhZ2UvRGlyZWN0
b3J5RW50cnkuaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9EaXJlY3RvcnlSZWFkZXIuY3BwJywK
ICAgICAgICAgICAgICdzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5oJywKKyAgICAgICAgICAgICdz
dG9yYWdlL0RPTUZpbGVQYXRoLmNwcCcsCisgICAgICAgICAgICAnc3RvcmFnZS9ET01GaWxlUGF0
aC5oJywKICAgICAgICAgICAgICdzdG9yYWdlL0RPTUZpbGVTeXN0ZW0uY3BwJywKICAgICAgICAg
ICAgICdzdG9yYWdlL0RPTUZpbGVTeXN0ZW0uaCcsCiAgICAgICAgICAgICAnc3RvcmFnZS9FbnRy
aWVzQ2FsbGJhY2suaCcsCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvV2ViQ29y
ZS9XZWJDb3JlLnBybwppbmRleCAxM2FhMDczMzU5YzFmNGQ1MjNhMGRlYThhMGY0ZjE3MTA0NGZh
NzA3Li41YWFkM2M1OTUyNTkwMzFkMDNjMzA1NzY0MmFmNzE0Yzg1MGZkNmRlIDEwMDY0NAotLS0g
YS9XZWJDb3JlL1dlYkNvcmUucHJvCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KQEAgLTI1ODIs
NiArMjU4Miw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9GSUxFX1NZU1RFTT0xKSB7CiAg
ICAgSEVBREVSUyArPSBcCiAgICAgICAgIHN0b3JhZ2UvRGlyZWN0b3J5RW50cnkuaCBcCiAgICAg
ICAgIHN0b3JhZ2UvRGlyZWN0b3J5UmVhZGVyLmggXAorICAgICAgICBzdG9yYWdlL0RPTUZpbGVQ
YXRoLmggXAogICAgICAgICBzdG9yYWdlL0RPTUZpbGVTeXN0ZW0uaCBcCiAgICAgICAgIHN0b3Jh
Z2UvRW50cmllc0NhbGxiYWNrLmggXAogICAgICAgICBzdG9yYWdlL0VudHJ5LmggXApAQCAtMjU5
OCw2ICsyNTk5LDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0ZJTEVfU1lTVEVNPTEpIHsK
ICAgICBTT1VSQ0VTICs9IFwKICAgICAgICAgc3RvcmFnZS9EaXJlY3RvcnlFbnRyeS5jcHAgXAog
ICAgICAgICBzdG9yYWdlL0RpcmVjdG9yeVJlYWRlci5jcHAgXAorICAgICAgICBzdG9yYWdlL0RP
TUZpbGVQYXRoLmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvRE9NRmlsZVN5c3RlbS5jcHAgXAogICAg
ICAgICBzdG9yYWdlL0VudHJ5LmNwcCBcCiAgICAgICAgIHN0b3JhZ2UvRW50cnlBcnJheS5jcHAg
XApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggNzQ4NjAzMzQzOGJmMTMw
NGNkMjE3MjA0NWJlOGIxYjNlMDJhMWM0Yy4uNDdmOWI1OTU3MzQ3ZmE4Y2MwNDEzNWY3OGE0YWRl
N2U2ZDNiNDc2MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZj
cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC01MTE1
Nyw2ICs1MTE1NywxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxzdG9yYWdlXERPTUZpbGVQYXRoLmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN0b3JhZ2VcRE9NRmlsZVBhdGgu
aCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4u
XHN0b3JhZ2VcRE9NRmlsZVN5c3RlbS5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA4MDU5YWEyZTI3YWFhM2U3
NmY4NWY1ZDY0NjQwZTcwNjg1ZTZmYzlkLi5kYTNhODgyZGJkYTZjNWMyZTIyOGRlNWYxM2UzY2Rm
NzMyODJkYjQ4IDEwMDY0NAotLS0gYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtMjM4NSw2ICsyMzg1LDggQEAKIAkJODk1MjUzREMxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVT
dHJlYW1Qcm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA4OTUyNTNEQTExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVByb3h5LmNwcCAqLzsg
fTsKIAkJODk1MjUzREQxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk1MjUzREIxMTZDNEVG
NTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5oICovOyB9OwogCQk4OTUyNTNERjExNkM0RjA2
MDBDQUJGMDAgLyogRmlsZVRocmVhZFRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDg5NTI1M0RFMTE2QzRGMDYwMENBQkYwMCAvKiBGaWxlVGhyZWFk
VGFzay5oICovOyB9OworCQk4OTY4NkM5RjEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGgu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk2ODZD
OUQxMjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmNwcCAqLzsgfTsKKwkJODk2ODZDQTAx
MjIyNDRBMDAwNzZFQUE0IC8qIERPTUZpbGVQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTY4NkM5RTEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmls
ZVBhdGguaCAqLzsgfTsKIAkJODk4OEUxMEUxMUEzNTA4QjAwREI3MzJFIC8qIEJsb2JJdGVtLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5ODhFMTBD
MTFBMzUwOEIwMERCNzMyRSAvKiBCbG9iSXRlbS5jcHAgKi87IH07CiAJCTg5ODhFMTBGMTFBMzUw
OEIwMERCNzMyRSAvKiBCbG9iSXRlbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gODk4OEUxMEQxMUEzNTA4QjAwREI3MzJFIC8qIEJsb2JJdGVtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJODk5QUJDMjYx
MjE1RTRBMzAwRjlGMjE5IC8qIERpcmVjdG9yeUVudHJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg5OUFCQzIwMTIxNUU0QTMwMEY5RjIxOSAvKiBE
aXJlY3RvcnlFbnRyeS5jcHAgKi87IH07CkBAIC04MjQxLDYgKzgyNDMsOCBAQAogCQk4OTUyNTNE
QTExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVByb3h5LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTdHJlYW1Qcm94eS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTg5NTI1M0RCMTE2QzRFRjUwMENBQkYwMCAvKiBGaWxlU3RyZWFtUHJv
eHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN0cmVhbVByb3h5Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5NTI1M0RFMTE2QzRGMDYwMENBQkYwMCAv
KiBGaWxlVGhyZWFkVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxl
VGhyZWFkVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk4OTY4NkM5RDEyMjI0
NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gRE9NRmlsZVBhdGguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk4OTY4NkM5RTEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NRmlsZVBhdGguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJODk3QTJEMTkxMUZGNThBNTAwODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NRmlsZVN5c3RlbS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5N0EyRDFBMTFGRjU4QTUwMDgyNzQwQyAvKiBE
T01GaWxlU3lzdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUZpbGVT
eXN0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJODk3QTJEMUIxMUZGNThBNTAw
ODI3NDBDIC8qIERPTUZpbGVTeXN0ZW0uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERPTUZp
bGVTeXN0ZW0uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE1ODQsNiArMTE1
ODgsOCBAQAogCQkJCTg5OUFCQzIzMTIxNUU0QTMwMEY5RjIxOSAvKiBEaXJlY3RvcnlSZWFkZXIu
Y3BwICovLAogCQkJCTg5OUFCQzI0MTIxNUU0QTMwMEY5RjIxOSAvKiBEaXJlY3RvcnlSZWFkZXIu
aCAqLywKIAkJCQk4OTlBQkMyNTEyMTVFNEEzMDBGOUYyMTkgLyogRGlyZWN0b3J5UmVhZGVyLmlk
bCAqLywKKwkJCQk4OTY4NkM5RDEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguY3BwICov
LAorCQkJCTg5Njg2QzlFMTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5oICovLAogCQkJ
CTg5N0EyRDE5MTFGRjU4QTUwMDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmNwcCAqLywKIAkJCQk4
OTdBMkQxQTExRkY1OEE1MDA4Mjc0MEMgLyogRE9NRmlsZVN5c3RlbS5oICovLAogCQkJCTg5N0Ey
RDFCMTFGRjU4QTUwMDgyNzQwQyAvKiBET01GaWxlU3lzdGVtLmlkbCAqLywKQEAgLTIwMzQ3LDYg
KzIwMzUzLDcgQEAKIAkJCQkyRUYxQkZGOTEyMUNCMENFMDBDMjc2MjcgLyogRmlsZVN0cmVhbUNs
aWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODlDMEREN0IxMjFGMEM2OTAwOUUxN0NBIC8qIEZp
bGVTeXN0ZW1DYWxsYmFja3MuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFMDU3RkE2MTIyMDczMTEw
MEE0NzZENSAvKiBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJ
CTg5Njg2Q0EwMTIyMjQ0QTAwMDc2RUFBNCAvKiBET01GaWxlUGF0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC0yMjgwMCw2ICsyMjgwNyw3IEBACiAJCQkJNDZBMjY5MDUxMjFCNkI0MzAwQzQxRjNBIC8q
IEZpbGVXcml0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODlDMEREN0ExMjFGMEM2OTAwOUUx
N0NBIC8qIEZpbGVTeXN0ZW1DYWxsYmFja3MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0UwNTdG
QTUxMjIwNzMxMTAwQTQ3NkQ1IC8qIERvY3VtZW50TWFya2VyQ29udHJvbGxlci5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQk4OTY4NkM5RjEyMjI0NEEwMDA3NkVBQTQgLyogRE9NRmlsZVBhdGguY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCX07CmRpZmYgLS1naXQgYS9XZWJDb3JlL3N0b3JhZ2UvRE9NRmlsZVBhdGgu
Y3BwIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVQYXRoLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yM2VmOTA2
OGM5NjM5MWZjZjM5NjA2NDlkMjI5NzU5Mjg3YjA5YWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9zdG9yYWdlL0RPTUZpbGVQYXRoLmNwcApAQCAtMCwwICsxLDE2MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJET01GaWxlUGF0aC5oIgorCisjaWYgRU5BQkxFKEZJTEVfU1lT
VEVNKQorCisjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKKyNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NvbnN0IGNoYXIgRE9NRmlsZVBhdGg6OnNlcGFyYXRvciA9ICcvJzsKK2NvbnN0IGNo
YXIgRE9NRmlsZVBhdGg6OnJvb3RbXSA9ICIvIjsKKworU3RyaW5nIERPTUZpbGVQYXRoOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBiYXNlLCBjb25zdCBTdHJpbmcmIGNvbXBvbmVudHMpCit7CisgICAg
cmV0dXJuIGVuc3VyZURpcmVjdG9yeVBhdGgoYmFzZSkgKyBjb21wb25lbnRzOworfQorCitTdHJp
bmcgRE9NRmlsZVBhdGg6OmVuc3VyZURpcmVjdG9yeVBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKQor
eworICAgIGlmICghRE9NRmlsZVBhdGg6OmVuZHNXaXRoU2VwYXJhdG9yKHBhdGgpKSB7CisgICAg
ICAgIFN0cmluZyBuZXdQYXRoID0gcGF0aDsKKyAgICAgICAgbmV3UGF0aC5hcHBlbmQoRE9NRmls
ZVBhdGg6OnNlcGFyYXRvcik7CisgICAgICAgIHJldHVybiBuZXdQYXRoOworICAgIH0KKyAgICBy
ZXR1cm4gcGF0aDsKK30KKworU3RyaW5nIERPTUZpbGVQYXRoOjpnZXROYW1lKGNvbnN0IFN0cmlu
ZyYgcGF0aCkKK3sKKyAgICBpbnQgaW5kZXggPSBwYXRoLnJldmVyc2VGaW5kKERPTUZpbGVQYXRo
OjpzZXBhcmF0b3IpOworICAgIGlmIChpbmRleCAhPSAtMSkKKyAgICAgICAgcmV0dXJuIHBhdGgu
c3Vic3RyaW5nKGluZGV4KTsKKyAgICByZXR1cm4gcGF0aDsKK30KKworU3RyaW5nIERPTUZpbGVQ
YXRoOjpnZXREaXJlY3RvcnkoY29uc3QgU3RyaW5nJiBwYXRoKQoreworICAgIGludCBpbmRleCA9
IHBhdGgucmV2ZXJzZUZpbmQoRE9NRmlsZVBhdGg6OnNlcGFyYXRvcik7CisgICAgaWYgKGluZGV4
ICE9IC0xKQorICAgICAgICByZXR1cm4gcGF0aC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgIHJl
dHVybiBTdHJpbmcoKTsKK30KKworYm9vbCBET01GaWxlUGF0aDo6aXNQYXJlbnRPZihjb25zdCBT
dHJpbmcmIHBhcmVudCwgY29uc3QgU3RyaW5nJiBtYXlCZUNoaWxkKQoreworICAgIGlmIChwYXJl
bnQubGVuZ3RoKCkgPj0gbWF5QmVDaGlsZC5sZW5ndGgoKSB8fCAhbWF5QmVDaGlsZC5zdGFydHNX
aXRoKHBhcmVudCwgZmFsc2UpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG1heUJl
Q2hpbGRbcGFyZW50Lmxlbmd0aCgpXSAhPSBET01GaWxlUGF0aDo6c2VwYXJhdG9yKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK1N0cmluZyBET01GaWxlUGF0
aDo6cmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAg
ICBBU1NFUlQoRE9NRmlsZVBhdGg6OmlzQWJzb2x1dGUocGF0aCkpOworICAgIFZlY3RvcjxTdHJp
bmc+IGNvbXBvbmVudHM7CisgICAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplZDsKKyAgICBw
YXRoLnNwbGl0KERPTUZpbGVQYXRoOjpzZXBhcmF0b3IsIGNvbXBvbmVudHMpOworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29tcG9uZW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAo
Y29tcG9uZW50c1tpXSA9PSAiLiIpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KGNvbXBvbmVudHNbaV0gPT0gIi4uIikgeworICAgICAgICAgICAgaWYgKGNhbm9uaWNhbGl6ZWQu
c2l6ZSgpID4gMCkKKyAgICAgICAgICAgICAgICBjYW5vbmljYWxpemVkLnJlbW92ZUxhc3QoKTsK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGNhbm9uaWNhbGl6ZWQu
YXBwZW5kKGNvbXBvbmVudHNbaV0pOworICAgIH0KKyAgICBpZiAoY2Fub25pY2FsaXplZC5pc0Vt
cHR5KCkpCisgICAgICAgIHJldHVybiBET01GaWxlUGF0aDo6cm9vdDsKKyAgICBTdHJpbmcgcmVz
dWx0OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2Fub25pY2FsaXplZC5zaXplKCk7ICsr
aSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKERPTUZpbGVQYXRoOjpzZXBhcmF0b3IpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKGNhbm9uaWNhbGl6ZWRbaV0pOworICAgIH0KKyAgICByZXR1cm4g
cmVzdWx0OworfQorCisvLyBDaGVjayB0aGUgbmFtaW5nIHJlc3RyaWN0aW9ucyBkZWZpbmVkIGlu
IEZpbGVTeXN0ZW0gQVBJIDguMy4KKy8vIGh0dHA6Ly9kZXYudzMub3JnLzIwMDkvZGFwL2ZpbGUt
c3lzdGVtL2ZpbGUtZGlyLXN5cy5odG1sI25hbWluZy1yZXN0cmljdGlvbnMKK2Jvb2wgRE9NRmls
ZVBhdGg6OmlzVmFsaWRQYXRoKGNvbnN0IFN0cmluZyYgcGF0aCkKK3sKKyAgICBpZiAocGF0aC5p
c0VtcHR5KCkgfHwgcGF0aCA9PSBET01GaWxlUGF0aDo6cm9vdCkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAvLyBDaGFycyAwLTMxIGluIFVURi04IHByZXByZXNlbnRhdGlvbiBhcmUgbm90
IGFsbG93ZWQuCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwYXRoLmxlbmd0aCgpOyArK2kp
CisgICAgICAgIGlmIChwYXRoW2ldIDwgMzIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICAvLyBVbmFsbG93ZWQgbmFtZXMuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWd1bGFy
RXhwcmVzc2lvbiwgdW5hbGxvd2VkTmFtZXNSZWdFeHAxLCAoIigvfF4pKENPTnxQUk58QVVYfE5V
TCkoW1xcLi9dfCQpIiwgVGV4dENhc2VJbnNlbnNpdGl2ZSkpOworICAgIERFRklORV9TVEFUSUNf
TE9DQUwoUmVndWxhckV4cHJlc3Npb24sIHVuYWxsb3dlZE5hbWVzUmVnRXhwMiwgKCIoL3xeKShD
T018TFBUKVsxLTldKFtcXC4vXXwkKSIsIFRleHRDYXNlSW5zZW5zaXRpdmUpKTsKKworICAgIGlm
ICh1bmFsbG93ZWROYW1lc1JlZ0V4cDEubWF0Y2gocGF0aCkgPj0gMCkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIGlmICh1bmFsbG93ZWROYW1lc1JlZ0V4cDIubWF0Y2gocGF0aCkgPj0gMCkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gTmFtZXMgbXVzdCBub3QgZW5kIHdpdGgg
cGVyaW9kIG9yIHdoaXRlc3BhY2UuCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChSZWd1bGFyRXhw
cmVzc2lvbiwgZW5kaW5nUmVnRXhwLCAoIltcXC5cXHNdKC98JCkiLCBUZXh0Q2FzZUluc2Vuc2l0
aXZlKSk7CisKKyAgICBpZiAoZW5kaW5nUmVnRXhwLm1hdGNoKHBhdGgpID49IDApCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIC8vIFVuYWxsb3dlZCBjaGFyczogJ1wnLCAnPCcsICc+Jywg
JzonLCAnPycsICcqJywgJyInLCAnfCcKKyAgICAvLyAoV2UgZG9uJ3QgY2hlY2sgJy8nIGhlcmUg
YXMgdGhpcyBtZXRob2QgdGFrZXMgcGF0aHMgYXMgaXRzIGFyZ3VtZW50LikKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFJlZ3VsYXJFeHByZXNzaW9uLCB1bmFsbG93ZWRDaGFyc1JlZ0V4cCwgKCJb
XFxcXDw+OlxcP1xcKlwifF0iLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKSk7CisKKyAgICBpZiAodW5h
bGxvd2VkQ2hhcnNSZWdFeHAubWF0Y2gocGF0aCkgPj0gMCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRE9NRmlsZVBhdGg6OmlzVmFsaWROYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobmFtZS5pc0VtcHR5KCkpCisgICAgICAg
IHJldHVybiB0cnVlOworICAgIC8vICcvJyBpcyBub3QgYWxsb3dlZCBpbiBuYW1lLgorICAgIGlm
IChuYW1lLmNvbnRhaW5zKCcvJykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
aXNWYWxpZFBhdGgobmFtZSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEVOQUJMRShGSUxFX1NZU1RFTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvc3RvcmFnZS9ET01G
aWxlUGF0aC5oIGIvV2ViQ29yZS9zdG9yYWdlL0RPTUZpbGVQYXRoLmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYy
YmIyMzM4MTNmZTUwYzU1M2RhZDUxYTMzOGQxMmU1NjQ2YTE3YQotLS0gL2Rldi9udWxsCisrKyBi
L1dlYkNvcmUvc3RvcmFnZS9ET01GaWxlUGF0aC5oCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJp
YnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIERP
TUZpbGVQYXRoX2gKKyNkZWZpbmUgRE9NRmlsZVBhdGhfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworLy8gRE9NRmlsZVN5c3RlbSBwYXRo
IHV0aWxpdGllcy4gQWxsIG1ldGhvZHMgaW4gdGhpcyBjbGFzcyBhcmUgc3RhdGljLgorY2xhc3Mg
RE9NRmlsZVBhdGggeworcHVibGljOgorICAgIHN0YXRpYyBjb25zdCBjaGFyIHNlcGFyYXRvcjsK
KyAgICBzdGF0aWMgY29uc3QgY2hhciByb290W107CisKKyAgICAvLyBSZXR1cm5zIHRoZSBuYW1l
IHBhcnQgZnJvbSB0aGUgZ2l2ZW4gcGF0aC4KKyAgICBzdGF0aWMgU3RyaW5nIGdldE5hbWUoY29u
c3QgU3RyaW5nJiBwYXRoKTsKKworICAgIC8vIFJldHVybnMgdGhlIHBhcmVudCBkaXJlY3Rvcnkg
cGF0aCBvZiB0aGUgZ2l2ZW4gcGF0aC4KKyAgICBzdGF0aWMgU3RyaW5nIGdldERpcmVjdG9yeShj
b25zdCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gQ2hlY2tzIGlmIGEgZ2l2ZW4gcGF0aCBpcyBh
IHBhcmVudCBvZiBtYXlCZUNoaWxkLiBUaGlzIG1ldGhvZCBhc3N1bWVzIGdpdmVuIHBhdGhzIGFy
ZSBhYnNvbHV0ZSBhbmQgZG8gbm90IGhhdmUgZXh0cmEgcmVmZXJlbmNlcyB0byBhIHBhcmVudCAo
aS5lLiAiLi4vIikuCisgICAgc3RhdGljIGJvb2wgaXNQYXJlbnRPZihjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgbWF5QmVDaGlsZCk7CisKKyAgICAvLyBBcHBlbmRzIHRoZSBzZXBh
cmF0b3IgYXQgdGhlIGVuZCBvZiB0aGUgcGF0aCBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5Lgor
ICAgIHN0YXRpYyBTdHJpbmcgZW5zdXJlRGlyZWN0b3J5UGF0aChjb25zdCBTdHJpbmcmIHBhdGgp
OworCisgICAgLy8gUmV0dXJucyBhIG5ldyBwYXRoIGJ5IGFwcGVuZGluZyBhIHNlcGFyYXRvciBh
bmQgdGhlIHN1cHBsaWVkIHBhdGggY29tcG9uZW50IHRvIHRoZSBwYXRoLgorICAgIHN0YXRpYyBT
dHJpbmcgYXBwZW5kKGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb21wb25lbnQp
OworCisgICAgc3RhdGljIGJvb2wgaXNBYnNvbHV0ZShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAg
eworICAgICAgICByZXR1cm4gcGF0aC5zdGFydHNXaXRoKERPTUZpbGVQYXRoOjpyb290KTsKKyAg
ICB9CisKKyAgICBzdGF0aWMgYm9vbCBlbmRzV2l0aFNlcGFyYXRvcihjb25zdCBTdHJpbmcmIHBh
dGgpCisgICAgeworICAgICAgICByZXR1cm4gcGF0aFtwYXRoLmxlbmd0aCgpIC0gMV0gPT0gRE9N
RmlsZVBhdGg6OnNlcGFyYXRvcjsKKyAgICB9CisKKyAgICAvLyBFdmFsdWF0ZXMgYWxsICIuLi8i
IGFuZCAiLi8iIHNlZ21lbnRzLiAgTm90ZSB0aGF0ICIvLi4vIiBleHBhbmRzIHRvICIvIiwgc28g
eW91IGNhbid0IGV2ZXIgcmVmZXIgdG8gYW55dGhpbmcgYWJvdmUgdGhlIHJvb3QgZGlyZWN0b3J5
LgorICAgIHN0YXRpYyBTdHJpbmcgcmVtb3ZlRXh0cmFQYXJlbnRSZWZlcmVuY2VzKGNvbnN0IFN0
cmluZyYgcGF0aCk7CisKKyAgICAvLyBDaGVja3MgaWYgdGhlIGdpdmVuIHBhdGggZm9sbG93cyB0
aGUgRmlsZVN5c3RlbSBBUEkgbmFtaW5nIHJlc3RyaWN0aW9ucy4KKyAgICBzdGF0aWMgYm9vbCBp
c1ZhbGlkUGF0aChjb25zdCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gQ2hlY2tzIGlmIHRoZSBn
aXZlbiBuYW1lIGZvbGxvd3MgdGhlIEZpbGVTeXN0ZW0gQVBJIG5hbWluZyByZXN0cmljdGlvbnMu
CisgICAgc3RhdGljIGJvb2wgaXNWYWxpZE5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKTsKKworcHJp
dmF0ZToKKyAgICBET01GaWxlUGF0aCgpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gRE9NRmlsZVBhdGhfaAo=
</data>
<flag name="review"
          id="54042"
          type_id="1"
          status="+"
          setter="dumi"
    />
          </attachment>
      

    </bug>

</bugzilla>