<?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>56818</bug_id>
          
          <creation_ts>2011-03-22 02:19:18 -0700</creation_ts>
          <short_desc>Spellcheck feature specific symbol should be defined.</short_desc>
          <delta_ts>2011-03-24 00:00:36 -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>HTML Editing</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jiapu.mail</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>371297</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-22 02:19:18 -0700</bug_when>
    <thetext>Editor class has two different path to do spellchecking.
One is using both TextCheckerClient::checkSpellingOfString() and TextCheckingClient::checkGrammarOfString() separately,
Another is using the unified text checker via TextCheckerClient::checkGrammarOfString().

These two passes should be embraced by clearly-named symbols, like SUPPORT_UNIFIED_TEXT_CHECKING.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371326</commentid>
    <comment_count>1</comment_count>
      <attachid>86454</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-22 04:27:59 -0700</bug_when>
    <thetext>Created attachment 86454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371916</commentid>
    <comment_count>2</comment_count>
      <attachid>86454</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-22 19:20:33 -0700</bug_when>
    <thetext>Comment on attachment 86454
Patch

I think it&apos;s better to adopt USE(UNIFIED_TEXT_CHECKING) and USE(GRAMMER_CHECKING) macros.  See wtf/Platform.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371955</commentid>
    <comment_count>3</comment_count>
      <attachid>86568</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-22 21:26:44 -0700</bug_when>
    <thetext>Created attachment 86568
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371956</commentid>
    <comment_count>4</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-22 21:28:18 -0700</bug_when>
    <thetext>Hi Kent-san, thanks for your suggestion!
I replaced them with using USE() macro.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371961</commentid>
    <comment_count>5</comment_count>
      <attachid>86568</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-22 22:04:47 -0700</bug_when>
    <thetext>Comment on attachment 86568
Patch

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

&gt; Source/JavaScriptCore/wtf/Platform.h:1148
&gt; +/* Text checking and editing */
&gt; +#if !defined(BUILDING_ON_TIGER)
&gt; +#define WTF_USE_GRAMMAR_CHECKING 1
&gt; +#endif
&gt; +
&gt; +#if PLATFORM(MAC) &amp;&amp; !defined(BUILDING_ON_TIGER) &amp;&amp; !defined(BUILDING_ON_LEOPARD)
&gt; +#define WTF_USE_UNIFIED_TEXT_CHECKING 1
&gt; +#define WTF_USE_AUTOMATIC_TEXT_REPLACEMENT 1
&gt; +#endif

I think it&apos;s ok to define WTF_USE_* symbols in TextCheckerClient.h like the previous patch.
We have some instances defining WTF_USE_* not in Platform.h, like WebCore/platform/graphics/ImageBuffer.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372636</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-23 19:56:26 -0700</bug_when>
    <thetext>Hi Kent-san, thank you for the review again!

&gt; 
&gt; I think it&apos;s ok to define WTF_USE_* symbols in TextCheckerClient.h like the previous patch.
&gt; We have some instances defining WTF_USE_* not in Platform.h, like WebCore/platform/graphics/ImageBuffer.h.

I added WTF_USE_AUTOMATIC_TEXT_REPLACEMENT at the last update 
and it is used in Editor.h, which doesn&apos;t include TextCheckingClient.h.
So I&apos;d like to put them inside Platform.h.

I think I can move these definitions somewhere
on Bug 56085, in which I&apos;m going to introduce a small header file
which is shared between Editror.h and TextCheckingClient.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372644</commentid>
    <comment_count>7</comment_count>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-23 20:05:25 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; I added WTF_USE_AUTOMATIC_TEXT_REPLACEMENT at the last update 
&gt; and it is used in Editor.h, which doesn&apos;t include TextCheckingClient.h.
&gt; So I&apos;d like to put them inside Platform.h.
&gt; 
&gt; I think I can move these definitions somewhere
&gt; on Bug 56085, in which I&apos;m going to introduce a small header file
&gt; which is shared between Editror.h and TextCheckingClient.h.

Can you introduce the small header file in this change? A Platform.h change causes rebuilding almost all of source files in all of buildbots.  We&apos;d like to avoid it if possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372680</commentid>
    <comment_count>8</comment_count>
      <attachid>86744</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-23 22:54:38 -0700</bug_when>
    <thetext>Created attachment 86744
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372682</commentid>
    <comment_count>9</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-23 22:55:21 -0700</bug_when>
    <thetext>&gt; Can you introduce the small header file in this change? A Platform.h change causes rebuilding almost all of source files in all of buildbots.  We&apos;d like to avoid it if possible.
Sure. Updated the patch to add new TextChecking.h.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372685</commentid>
    <comment_count>10</comment_count>
      <attachid>86744</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2011-03-23 23:07:54 -0700</bug_when>
    <thetext>Comment on attachment 86744
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:1
&gt; +2011-03-23  MORITA Hajime  &lt;morrita@google.com&gt;

Please revert the change for JavaScriptCore/ChangeLog

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:22700
&gt; +				A77D0012133B0AEB00D6658C /* TextChecking.h in Headers */,

nit: should be inserted to the appropriate position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372693</commentid>
    <comment_count>11</comment_count>
      <attachid>86749</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-23 23:32:12 -0700</bug_when>
    <thetext>Created attachment 86749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372694</commentid>
    <comment_count>12</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-23 23:32:58 -0700</bug_when>
    <thetext>Hi Kent-san, thanks again!
The update patch fixed both.

(In reply to comment #10)
&gt; (From update of attachment 86744 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=86744&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:1
&gt; &gt; +2011-03-23  MORITA Hajime  &lt;morrita@google.com&gt;
&gt; 
&gt; Please revert the change for JavaScriptCore/ChangeLog
&gt; 
&gt; &gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:22700
&gt; &gt; +				A77D0012133B0AEB00D6658C /* TextChecking.h in Headers */,
&gt; 
&gt; nit: should be inserted to the appropriate position.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>372701</commentid>
    <comment_count>13</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-03-24 00:00:36 -0700</bug_when>
    <thetext>Committed r81855: &lt;http://trac.webkit.org/changeset/81855&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86454</attachid>
            <date>2011-03-22 04:27:59 -0700</date>
            <delta_ts>2011-03-22 21:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56818-20110322202757.patch</filename>
            <type>text/plain</type>
            <size>17609</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE2NTUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNzcxODUwYzBkM2EyMmI3
YzlkMzUyNWEzMzI0ZGJjZjZjNGRmYmI5Li43YzQxYWJmMmE2ZTlhNTYyMjU0ZjIyOTJiZGRjZDQw
YjA4M2FiYmIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDEgQEAKKzIwMTEtMDMtMjIgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlbGxjaGVjayBmZWF0dXJlIHNwZWNpZmljIHN5bWJv
bHMgc2hvdWxkIGJlIGRlZmluZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjgxOAorICAgICAgICAKKyAgICAgICAgKiBEZWZpbmVkIFNVUFBPUlRf
VU5JRklFRF9URVhUX0NIRUNLSU5HIGFuZCBTVVBQT1JUX0dSQU1NQVJfQ0hFQ0tJTkcKKyAgICAg
ICAgKiBSZXBsYWNlZCBhIHBhcnQgb2Ygb2YgQlVJTERJTkdfT05fKiBjb25kaXRpb25hbHMgd2l0
aCB0aGVtCisKKyAgICAgICAgTm90ZSB0aGF0IHNtYWxsIGFtb3VudCBvZiBjb2RlIHBhdGggb24g
RWRpdG9yLmNwcCBpcyBub3cgY29tcGlsZWQgdW5kZXIgU1VQUE9SVF9HUkFNTUFSX0NIRUNLSU5H
CisgICAgICAgIGJlY2F1c2UgdGhlc2UgY29kZSBwYXRoIGlzIGFscmVhZHkgYnVpbHQgdW5kZXIg
bm9uLU1hYyBwb3J0cyBhbmQKKyAgICAgICAgS2VlcGluZyB0aGVtIGJ1aWxkYWJsZSBmb3Igc3Vj
aCBwbGF0Zm9ybXMgcmVkdWNlcyB0aGUgYnVpbGQgYnJlYWthZ2Ugcmlzay4KKyAgICAgICAgVGhl
c2UgcGF0aCBpcyBndWFyZGVkIGJ5IFNldHRpbmdzIHRodXMgc2hvdWxkIG5ldmVyIGdldCByZWFj
aGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2UuCisKKyAg
ICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFk
dmFuY2VUb05leHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU2Vs
ZWN0aW9uVW5ncmFtbWF0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNG
b3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z3Vl
c3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0JhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAg
ICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hl
bHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2lu
Z0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJh
bmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdy
YW1tYXIpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaDoKKwog
MjAxMS0wMy0yMiAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDg4
MDc5NjUwNjhhNDM5MTBhOWFkOTM2NTFlMTQ2MmVjYzhlOWNmOWEuLjMzMDkwNWM1MjUzMDJjNWQ5
Y2FkYWZkNjViNzBkMWJiOTk4NWU5ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAg
LTE4MjMsMTQgKzE4MjMsMTYgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRl
cldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5lbmRPZmZzZXQoZWMpOwogICAgIAogICAgIGlu
dCBtaXNzcGVsbGluZ09mZnNldCA9IDA7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICBS
ZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNs
b25lUmFuZ2UoZWMpOwotICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKLSAgICBTdHJpbmcgYmFk
R3JhbW1hclBocmFzZTsKKyAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgaW50
IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOworICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJj
aFJhbmdlOworICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOworICAgIFN0cmluZyBtaXNzcGVs
bGVkV29yZDsKKworI2lmIFNVUFBPUlRfVU5JRklFRF9URVhUX0NIRUNLSU5HCisgICAgZ3JhbW1h
clNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAg
Ym9vbCBpc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBpbnQgZm91bmRPZmZzZXQgPSAwOwotICAgIEdy
YW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAgICBTdHJpbmcgZm91bmRJdGVtID0gVGV4dENo
ZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNz
cGVsbGluZ09yQmFkR3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgaXNTcGVsbGlu
ZywgZm91bmRPZmZzZXQsIGdyYW1tYXJEZXRhaWwpOwogICAgIGlmIChpc1NwZWxsaW5nKSB7CiAg
ICAgICAgIG1pc3NwZWxsZWRXb3JkID0gZm91bmRJdGVtOwpAQCAtMTg0MSwxNSArMTg0MywxMSBA
QCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVT
ZWxlY3Rpb24pCiAgICAgfQogI2Vsc2UKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxp
bmdSYW5nZTsKLSAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQgPSBUZXh0Q2hlY2tpbmdIZWxwZXIo
Y2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nKG1pc3Nw
ZWxsaW5nT2Zmc2V0LCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKLSAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZTsKLQotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIGludCBn
cmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKLSAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7
CisgICAgbWlzc3BlbGxlZFdvcmQgPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxs
aW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nKG1pc3NwZWxsaW5nT2Zmc2V0LCBm
YWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKIAorI2lmIFNVUFBPUlRfR1JBTU1BUl9DSEVD
S0lORwogICAgIC8vIFNlYXJjaCBmb3IgYmFkIGdyYW1tYXIgdGhhdCBvY2N1cnMgcHJpb3IgdG8g
dGhlIG5leHQgbWlzc3BlbGxlZCB3b3JkIChpZiBhbnkpCi0gICAgUmVmUHRyPFJhbmdlPiBncmFt
bWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAg
ICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVj
KTsKICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBTdG9w
IGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKICAgICAgICAgQ2hhcmFj
dGVySXRlcmF0b3IgY2hhcnMoZ3JhbW1hclNlYXJjaFJhbmdlLmdldCgpKTsKQEAgLTE4NjksNyAr
MTg2Nyw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFy
dEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gZ29pbmcgdW50aWwgdGhlIGVuZCBvZiB0aGUg
dmVyeSBmaXJzdCBjaHVuayB3ZSB0ZXN0ZWQgaXMgZmFyIGVub3VnaAogICAgICAgICBzcGVsbGlu
Z1NlYXJjaFJhbmdlLT5zZXRFbmQoc2VhcmNoRW5kTm9kZUFmdGVyV3JhcCwgc2VhcmNoRW5kT2Zm
c2V0QWZ0ZXJXcmFwLCBlYyk7CiAgICAgICAgIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisj
aWYgU1VQUE9SVF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKICAgICAgICAgZ3JhbW1hclNlYXJjaFJh
bmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgICAgIGZvdW5k
SXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSku
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNHcmFtbWFyQ2hlY2tpbmdFbmFibGVk
KCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFyRGV0YWlsKTsKICAgICAgICAgaWYg
KGlzU3BlbGxpbmcpIHsKQEAgLTE4ODIsNyArMTg4MCw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNl
VG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICNlbHNlCiAgICAg
ICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGlu
Z1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFs
c2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIK
KyNpZiBTVVBQT1JUX0dSQU1NQVJfQ0hFQ0tJTkcKICAgICAgICAgZ3JhbW1hclNlYXJjaFJhbmdl
ID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAvLyBTdG9wIGxvb2tpbmcgYXQg
c3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKQEAgLTE4OTgsOSArMTg5Niw3IEBAIHZvaWQg
RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlv
bikKICAgICB9CiAgICAgCiAgICAgaWYgKCFiYWRHcmFtbWFyUGhyYXNlLmlzRW1wdHkoKSkgewot
I2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
I2Vsc2UKKyAgICAgICAgQVNTRVJUKFNVUFBPUlRfR1JBTU1BUl9DSEVDS0lORyk7CiAgICAgICAg
IC8vIFdlIGZvdW5kIGJhZCBncmFtbWFyLiBTaW5jZSB3ZSBvbmx5IHNlYXJjaGVkIGZvciBiYWQg
Z3JhbW1hciB1cCB0byB0aGUgZmlyc3QgbWlzc3BlbGxlZCB3b3JkLCB0aGUgYmFkIGdyYW1tYXIK
ICAgICAgICAgLy8gdGFrZXMgcHJlY2VkZW5jZSBhbmQgd2UgaWdub3JlIGFueSBwb3RlbnRpYWwg
bWlzc3BlbGxlZCB3b3JkLiBTZWxlY3QgdGhlIGdyYW1tYXIgZGV0YWlsLCB1cGRhdGUgdGhlIHNw
ZWxsaW5nCiAgICAgICAgIC8vIHBhbmVsLCBhbmQgc3RvcmUgYSBtYXJrZXIgc28gd2UgZHJhdyB0
aGUgZ3JlZW4gc3F1aWdnbGUgbGF0ZXIuCkBAIC0xOTE1LDcgKzE5MTEsNiBAQCB2b2lkIEVkaXRv
cjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAg
ICAgICAgIAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3Ry
aW5nKGJhZEdyYW1tYXJQaHJhc2UsIGdyYW1tYXJEZXRhaWwpOwogICAgICAgICBmcmFtZSgpLT5k
b2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihiYWRHcmFtbWFyUmFuZ2UuZ2V0KCksIERv
Y3VtZW50TWFya2VyOjpHcmFtbWFyLCBncmFtbWFyRGV0YWlsLnVzZXJEZXNjcmlwdGlvbik7Ci0j
ZW5kaWYgICAgICAgIAogICAgIH0gZWxzZSBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSkg
ewogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBidXQgbm90IGFueSBlYXJsaWVy
IGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1cGRhdGUgdGhlIHNwZWxsaW5n
IHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVk
IHNxdWlnZ2xlIGxhdGVyLgpAQCAtMTk1OCwyMyArMTk1MywyMyBAQCBib29sIEVkaXRvcjo6aXNT
ZWxlY3Rpb25NaXNzcGVsbGVkKCkKIAogYm9vbCBFZGl0b3I6OmlzU2VsZWN0aW9uVW5ncmFtbWF0
aWNhbCgpCiB7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICByZXR1cm4gZmFsc2U7Ci0j
ZWxzZQorI2lmIFNVUFBPUlRfR1JBTU1BUl9DSEVDS0lORwogICAgIFZlY3RvcjxTdHJpbmc+IGln
bm9yZWRHdWVzc2VzOwogICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIGZy
YW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpKS5pc1VuZ3JhbW1hdGljYWwo
aWdub3JlZEd1ZXNzZXMpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIH0KIAog
VmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNlbGVjdGlvbigp
CiB7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICByZXR1cm4gVmVjdG9yPFN0cmluZz4o
KTsKLSNlbHNlCisjaWYgU1VQUE9SVF9HUkFNTUFSX0NIRUNLSU5HCiAgICAgVmVjdG9yPFN0cmlu
Zz4gZ3Vlc3NlczsKICAgICAvLyBJZ25vcmUgdGhlIHJlc3VsdCBvZiBpc1VuZ3JhbW1hdGljYWw7
IHdlIGp1c3Qgd2FudCB0aGUgZ3Vlc3Nlcywgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueQog
ICAgIFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnRv
Tm9ybWFsaXplZFJhbmdlKCkpLmlzVW5ncmFtbWF0aWNhbChndWVzc2VzKTsKICAgICByZXR1cm4g
Z3Vlc3NlczsKKyNlbHNlCisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7CiAjZW5kaWYKIH0K
IApAQCAtMTk5MSw3ICsxOTg2LDcgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9y
TWlzc3BlbGxlZFNlbGVjdGlvbigpCiAKIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oYm9vbCYgbWlzc3BlbGxlZCwgYm9v
bCYgdW5ncmFtbWF0aWNhbCkKIHsKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFNVUFBP
UlRfVU5JRklFRF9URVhUX0NIRUNLSU5HCiAgICAgcmV0dXJuIFRleHRDaGVja2luZ0hlbHBlcihj
bGllbnQoKSwgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkpLmd1ZXNz
ZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoaXNHcmFtbWFyQ2hlY2tpbmdFbmFi
bGVkKCksIG1pc3NwZWxsZWQsIHVuZ3JhbW1hdGljYWwpOwogI2Vsc2UKICAgICBtaXNzcGVsbGVk
ID0gaXNTZWxlY3Rpb25NaXNzcGVsbGVkKCk7CkBAIC0yMDYwLDcgKzIwNTUsNyBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biAmbW92aW5nU2VsZWN0aQogCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlw
aW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LCBjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBzZWxlY3Rpb25BZnRlclR5cGluZykKIHsKLSNpZiBQTEFURk9STShNQUMpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9Q
QVJEKQorI2lmIFNVUFBPUlRfVU5JRklFRF9URVhUX0NIRUNLSU5HCiAjaWYgU1VQUE9SVF9BVVRP
Q09SUkVDVElPTl9QQU5FTAogICAgIC8vIEFwcGx5IHBlbmRpbmcgYXV0b2NvcnJlY3Rpb24gYmVm
b3JlIG5leHQgcm91bmQgb2Ygc3BlbGwgY2hlY2tpbmcuCiAgICAgYm9vbCBkb0FwcGx5Q29ycmVj
dGlvbiA9IHRydWU7CkBAIC0yMTc2LDEyICsyMTcxLDkgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBi
b28KICAgICBpZiAoY2hlY2tTcGVsbGluZykKICAgICAgICAgY2hlY2tlci5tYXJrQWxsTWlzc3Bl
bGxpbmdzKGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgZWxzZSB7Ci0jaWZkZWYgQlVJTERJ
TkdfT05fVElHRVIKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQorICAgICAg
ICBBU1NFUlQoU1VQUE9SVF9HUkFNTUFSX0NIRUNLSU5HKTsKICAgICAgICAgaWYgKGlzR3JhbW1h
ckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgY2hlY2tlci5tYXJrQWxsQmFkR3JhbW1h
cigpOwotI2VuZGlmCiAgICAgfSAgICAKIH0KIApAQCAtMjIwNywxNyArMjE5OSwxNCBAQCB2b2lk
IEVkaXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rp
b24sIFJlZlB0cjxSYW5nZT4mCiAgICAgCiB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1tYXIoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotI2lmbmRlZiBCVUlMRElOR19PTl9U
SUdFUgorICAgIEFTU0VSVChTVVBQT1JUX0dSQU1NQVJfQ0hFQ0tJTkcpOwogICAgIFJlZlB0cjxS
YW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwogICAgIG1hcmtNaXNzcGVsbGluZ3NPckJhZEdy
YW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7Ci0jZW5kaWYKIH0KIAotI2lmIFBMQVRGT1JNKE1B
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpCiB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJ
blJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMsIFJhbmdlKiBz
cGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogeworI2lmIFNVUFBPUlRfVU5JRklF
RF9URVhUX0NIRUNLSU5HCiAgICAgLy8gVGhlcmUgc2hvdWxkbid0IGJlIHBlbmRpbmcgYXV0b2Nv
cnJlY3Rpb24gYXQgdGhpcyBtb21lbnQuCiAgICAgQVNTRVJUKCFtX2NvcnJlY3Rpb25QYW5lbElu
Zm8ucmFuZ2VUb0JlUmVwbGFjZWQpOwogCkBAIC0yNDU2LDEwICsyNDQ1LDE3IEBAIHZvaWQgRWRp
dG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2lu
Z09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5
KFNlbGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBD
aGFyYWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CisjZWxzZQorICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgIFVOVVNFRF9QQVJBTSh0ZXh0Q2hlY2tpbmdPcHRpb25zKTsK
KyAgICBVTlVTRURfUEFSQU0oc3BlbGxpbmdSYW5nZSk7CisgICAgVU5VU0VEX1BBUkFNKGdyYW1t
YXJSYW5nZSk7CisjZW5kaWYgLy8gU1VQUE9SVF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKIH0KIAog
dm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcpCiB7CisjaWYgU1VQUE9SVF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKICAgICBp
ZiAocmVwbGFjZWRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0Nzgs
MTMgKzI0NzQsMTYgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNv
bnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpCiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9Q
QU5FTAogICAgIGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFy
a2VycygpLT5hZGRNYXJrZXIoY2hhbmdlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3Bl
bGxDaGVja2luZ0V4ZW1wdGlvbik7CiAjZW5kaWYKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VkU3RyaW5nKTsKKyNlbmRpZiAvLyBTVVBQ
T1JUX1VOSUZJRURfVEVYVF9DSEVDS0lORwogfQogCi0jZW5kaWYKIAogdm9pZCBFZGl0b3I6Om1h
cmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxs
aW5nU2VsZWN0aW9uLCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBn
cmFtbWFyU2VsZWN0aW9uKQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgU1VQUE9S
VF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRl
eHRDaGVja2luZ09wdGlvbnMgPSBNYXJrU3BlbGxpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApp
bmRleCBlMWE3MTE5MjQ1ZTgzYmVkMTBkNzNkMjA1ZWZlMjE1NDA4NWM1NjllLi45NDU4Njc1YzQ3
Njg4ZDUxZDg5YmI0MmQyY2Q4MjY3NmFmNzBhNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0VkaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgK
QEAgLTIzOSw2ICsyMzksOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNUZXh0
UmVwbGFjZW1lbnQoKTsKICAgICBib29sIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5h
YmxlZCgpOwogICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uKCk7Cisj
ZW5kaWYKKwogICAgIGVudW0gVGV4dENoZWNraW5nT3B0aW9uRmxhZ3MgewogICAgICAgICBNYXJr
U3BlbGxpbmcgPSAxIDw8IDAsCiAgICAgICAgIE1hcmtHcmFtbWFyID0gMSA8PCAxLApAQCAtMjQ5
LDcgKzI1MSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgbWFya0FsbE1pc3NwZWxsaW5nc0FuZEJh
ZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5n
ZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSk7CiAgICAgdm9pZCBjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0
cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKTsKLSNlbmRpZgorCiAgICAgdm9pZCBh
ZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbiA9IGZhbHNl
KTsKICAgICB2b2lkIHNob3dTcGVsbGluZ0d1ZXNzUGFuZWwoKTsKICAgICBib29sIHNwZWxsaW5n
UGFuZWxJc1Nob3dpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAppbmRleCBlNTU1M2ZkMTAyOTJmZTU4N2YwZTIzMzBkMTY1ZThlMTc3MjhlNDFk
Li5iOTQzMzc4YmQ1MDc0NDg4OTk5NWMwZjI3MTQxNjhiZTYzNTI3Njk5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcg
QEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmcoaW50JiBm
aXJzdE1pc3NwZWxsaW5nT2Zmc2V0LCBib28KIAogU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wm
IG91dElzU3BlbGxpbmcsIGludCYgb3V0Rmlyc3RGb3VuZE9mZnNldCwgR3JhbW1hckRldGFpbCYg
b3V0R3JhbW1hckRldGFpbCkKIHsKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFNVUFBP
UlRfVU5JRklFRF9URVhUX0NIRUNLSU5HCiAgICAgU3RyaW5nIGZpcnN0Rm91bmRJdGVtOwogICAg
IFN0cmluZyBtaXNzcGVsbGVkV29yZDsKICAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZTsKQEAg
LTM1MCwxMiArMzUwLDEyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1p
c3NwZWxsaW5nT3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBiCiAgICAgVU5VU0VEX1BB
UkFNKG91dEZpcnN0Rm91bmRPZmZzZXQpOwogICAgIFVOVVNFRF9QQVJBTShvdXRHcmFtbWFyRGV0
YWlsKTsKICAgICByZXR1cm4gIiI7Ci0jZW5kaWYKKyNlbmRpZiAvLyBTVVBQT1JUX1VOSUZJRURf
VEVYVF9DSEVDS0lORwogfQogCiBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFt
bWFyRGV0YWlsKGNvbnN0IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbW1hckRldGFpbHMsIGlu
dCBiYWRHcmFtbWFyUGhyYXNlTG9jYXRpb24sIGludCAvKmJhZEdyYW1tYXJQaHJhc2VMZW5ndGgq
LywgaW50IHN0YXJ0T2Zmc2V0LCBpbnQgZW5kT2Zmc2V0LCBib29sIG1hcmtBbGwpCiB7Ci0jaWZu
ZGVmIEJVSUxESU5HX09OX1RJR0VSCisjaWYgU1VQUE9SVF9HUkFNTUFSX0NIRUNLSU5HCiAgICAg
Ly8gRm91bmQgc29tZSBiYWQgZ3JhbW1hci4gRmluZCB0aGUgZWFybGllc3QgZGV0YWlsIHJhbmdl
IHRoYXQgc3RhcnRzIGluIG91ciBzZWFyY2ggcmFuZ2UgKGlmIGFueSkuCiAgICAgLy8gT3B0aW9u
YWxseSBhZGQgYSBEb2N1bWVudE1hcmtlciBmb3IgZWFjaCBkZXRhaWwgaW4gdGhlIHJhbmdlLgog
ICAgIGludCBlYXJsaWVzdERldGFpbExvY2F0aW9uU29GYXIgPSAtMTsKQEAgLTQwMiw3ICs0MDIs
NyBAQCBpbnQgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RHcmFtbWFyRGV0YWlsKGNvbnN0
IFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYgZ3JhbQogCiBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVy
OjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwsIGlu
dCYgb3V0R3JhbW1hclBocmFzZU9mZnNldCwgYm9vbCBtYXJrQWxsKQogewotI2lmbmRlZiBCVUlM
RElOR19PTl9USUdFUgorICAgIEFTU0VSVChTVVBQT1JUX0dSQU1NQVJfQ0hFQ0tJTkcpOwogICAg
IC8vIEluaXRpYWxpemUgb3V0IHBhcmFtZXRlcnM7IHRoZXNlIHdpbGwgYmUgdXBkYXRlZCBpZiB3
ZSBmaW5kIHNvbWV0aGluZyB0byByZXR1cm4uCiAgICAgb3V0R3JhbW1hckRldGFpbC5sb2NhdGlv
biA9IC0xOwogICAgIG91dEdyYW1tYXJEZXRhaWwubGVuZ3RoID0gMDsKQEAgLTQ1OCwxOCArNDU4
LDEyIEBAIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3Jh
bW1hckRldGFpbCYgb3V0R3JhbW1hckRldGFpbCwKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGZp
cnN0QmFkR3JhbW1hclBocmFzZTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgVU5VU0VEX1BBUkFNKG91dEdyYW1tYXJEZXRhaWwpOwotICAgIFVOVVNFRF9QQVJBTShvdXRH
cmFtbWFyUGhyYXNlT2Zmc2V0KTsKLSAgICBVTlVTRURfUEFSQU0obWFya0FsbCk7Ci0jZW5kaWYK
IH0KIAogCiBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKFZlY3RvcjxT
dHJpbmc+JiBndWVzc2VzVmVjdG9yKSBjb25zdAogewotI2lmbmRlZiBCVUlMRElOR19PTl9USUdF
UgorICAgIEFTU0VSVChTVVBQT1JUX0dSQU1NQVJfQ0hFQ0tJTkcpOwogICAgIGlmICghbV9jbGll
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNTExLDE2ICs1MDUsMTEgQEAgYm9vbCBU
ZXh0Q2hlY2tpbmdIZWxwZXI6OmlzVW5ncmFtbWF0aWNhbChWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nl
c1ZlY3RvcikgY29uc3QKICAgICBtX2NsaWVudC0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFy
U3RyaW5nKGJhZEdyYW1tYXJQaHJhc2UsIGdyYW1tYXJEZXRhaWwpOwogICAgIAogICAgIHJldHVy
biB0cnVlOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBVTlVTRURfUEFS
QU0oZ3Vlc3Nlc1ZlY3Rvcik7Ci0gICAgcmV0dXJuIHRydWU7Ci0jZW5kaWYKIH0KIAogVmVjdG9y
PFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFt
bWF0aWNhbFJhbmdlKGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBtaXNzcGVsbGVkLCBib29sJiB1
bmdyYW1tYXRpY2FsKSBjb25zdAogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgU1VQ
UE9SVF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwog
ICAgIEV4Y2VwdGlvbkNvZGUgZWM7CiAgICAgbWlzc3BlbGxlZCA9IGZhbHNlOwpAQCAtNTc4LDcg
KzU2Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6Z3Vlc3Nlc0Zvck1p
c3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sCiAgICAgVU5VU0VEX1BBUkFNKG1pc3Nw
ZWxsZWQpOwogICAgIFVOVVNFRF9QQVJBTSh1bmdyYW1tYXRpY2FsKTsKICAgICByZXR1cm4gVmVj
dG9yPFN0cmluZz4oKTsKLSNlbmRpZgorI2VuZGlmIC8vIFNVUFBPUlRfVU5JRklFRF9URVhUX0NI
RUNLSU5HCiB9CiAKIApAQCAtNTkyLDE1ICs1ODEsMTIgQEAgdm9pZCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6Om1hcmtBbGxNaXNzcGVsbGluZ3MoUmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1Jh
bmcKIAogdm9pZCBUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxCYWRHcmFtbWFyKCkKIHsKLSNp
Zm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBBU1NFUlQoU1VQUE9SVF9HUkFNTUFSX0NIRUNL
SU5HKTsKICAgICAvLyBVc2UgdGhlICJtYXJrQWxsIiBmZWF0dXJlIG9mIGZpbmRGaXJzdEJhZEdy
YW1tYXIuIElnbm9yZSB0aGUgcmV0dXJuIHZhbHVlIGFuZCAib3V0IHBhcmFtZXRlcnMiOyBhbGwg
d2UgbmVlZCB0bwogICAgIC8vIGRvIGlzIG1hcmsgZXZlcnkgaW5zdGFuY2UuCiAgICAgR3JhbW1h
ckRldGFpbCBpZ25vcmVkR3JhbW1hckRldGFpbDsKICAgICBpbnQgaWdub3JlZE9mZnNldDsKICAg
ICBmaW5kRmlyc3RCYWRHcmFtbWFyKGlnbm9yZWRHcmFtbWFyRGV0YWlsLCBpZ25vcmVkT2Zmc2V0
LCB0cnVlKTsKLSNlbHNlCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZW5kaWYKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNs
aWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5o
CmluZGV4IGFjYWEwMmNmNjJhMDcwZjkwY2Y5NGM2ZTEyNmM1ZDBkNjdiZmJiOGUuLjNkZGNhNjQ0
NDZmOWRkN2JlY2QwMTM0YzAxNTcwNDM5ZDc1NDZmYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKQEAgLTI4LDYgKzI4LDE4IEBACiAj
aWZuZGVmIFRleHRDaGVja2VyQ2xpZW50X2gKICNkZWZpbmUgVGV4dENoZWNrZXJDbGllbnRfaAog
CisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNkZWZpbmUgU1VQUE9SVF9VTklGSUVEX1RFWFRf
Q0hFQ0tJTkcgMQorI2Vsc2UKKyNkZWZpbmUgU1VQUE9SVF9VTklGSUVEX1RFWFRfQ0hFQ0tJTkcg
MAorI2VuZGlmIC8vICNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorCisjaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikKKyNkZWZpbmUgU1VQUE9SVF9HUkFNTUFS
X0NIRUNLSU5HIDEKKyNlbHNlCisjZGVmaW5lIFNVUFBPUlRfR1JBTU1BUl9DSEVDS0lORyAwCisj
ZW5kaWYgLy8gI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
CisKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTcwLDcgKzgyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqLCBpbnQg
bGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlzc3BlbGxpbmdMZW5ndGgp
ID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNz
cGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgVmVj
dG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRpb24sIGludCogYmFkR3Jh
bW1hckxlbmd0aCkgPSAwOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgU1VQUE9SVF9V
TklGSUVEX1RFWFRfQ0hFQ0tJTkcKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3Jh
cGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNoZWNraW5nVHlwZXMs
IFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CiAjZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86568</attachid>
            <date>2011-03-22 21:26:44 -0700</date>
            <delta_ts>2011-03-23 22:54:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56818-20110323132642.patch</filename>
            <type>text/plain</type>
            <size>21668</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE3NDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGFm
OWE0YjlhOGZjNDdjZTc0MmYzYzIyMGM3ZDA4MDJmZGM2NWQ5NDYuLjcyZWExNmJlYjk2Nzc1Y2E0
NmIxZTkxYzgwMTQ1YzA3MmRhOWQ1OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTAzLTIyICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWxs
Y2hlY2sgZmVhdHVyZSBzcGVjaWZpYyBzeW1ib2xzIHNob3VsZCBiZSBkZWZpbmVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MTgKKworICAgICAg
ICBJbnJvZHVjZWQKKyAgICAgICAgLSBXVEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORworICAg
ICAgICAtIFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORworICAgICAgICAtIFdURl9VU0VfQVVUT01B
VElDX1RFWFRfUkVQTEFDRU1FTlQKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEx
LTAzLTIyICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0
Zm9ybS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCmluZGV4IGYwM2Ez
ZDQyYWJiOWM2NDVkZTZkNTczZTM1OTcwMjMwZDVmOTRlMWEuLmMxNmQ0N2U4YTA0ZDdmODZmODc0
YzJmNmMzZTYxZjVhNmVjMDE4NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgK
QEAgLTExMzcsNiArMTEzNywxNiBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyogVGV4dCBjaGVja2lu
ZyBhbmQgZWRpdGluZyAqLworI2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKQorI2RlZmlu
ZSBXVEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9M
RU9QQVJEKQorI2RlZmluZSBXVEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyAxCisjZGVmaW5l
IFdURl9VU0VfQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQgMQorI2VuZGlmCisKIC8qIEFjY2Vs
ZXJhdGVkIGNvbXBvc2l0aW5nICovCiAjaWYgKFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fVElHRVIpKSB8fCBQTEFURk9STShJT1MpIHx8IFBMQVRGT1JNKFFUKSB8fCAoUExB
VEZPUk0oV0lOKSAmJiAhT1MoV0lOQ0UpICYmIWRlZmluZWQoV0lOX0NBSVJPKSkKICNkZWZpbmUg
V1RGX1VTRV9BQ0NFTEVSQVRFRF9DT01QT1NJVElORyAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzdlOTczNGFk
MjI0MjhkZmEzMWZlMzhkZTAwNjVjN2FjM2ZlYzhkMS4uYWZkZGU3NmViMGJjZTg3NjllYzEzYTE5
M2Y3YmRlMGNiZGQ3ZmQ2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTAzLTIy
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWxsY2hlY2sgZmVhdHVyZSBzcGVjaWZp
YyBzeW1ib2xzIHNob3VsZCBiZSBkZWZpbmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MTgKKworICAgICAgICBSZXBsYWNlZCBhIHBhcnQgb2Yg
b2YgQlVJTERJTkdfT05fKiBjb25kaXRpb25hbHMgd2l0aAorICAgICAgICBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKSwgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpIGFuZCBVU0UoQVVUT01BVElDX1RF
WFRfUkVQTEFDRU1FTlQpCisKKyAgICAgICAgTm90ZSB0aGF0IHNtYWxsIGFtb3VudCBvZiBjb2Rl
IHBhdGggb24gRWRpdG9yLmNwcCBpcyBub3cgY29tcGlsZWQgdW5kZXIgVVNFKEdSQU1NQVJfQ0hF
Q0tJTkcpCisgICAgICAgIGJlY2F1c2UgdGhlc2UgY29kZSBwYXRoIGlzIGFscmVhZHkgYnVpbHQg
dW5kZXIgbm9uLU1hYyBwb3J0cyBhbmQKKyAgICAgICAgS2VlcGluZyB0aGVtIGJ1aWxkYWJsZSBm
b3Igc3VjaCBwbGF0Zm9ybXMgcmVkdWNlcyB0aGUgYnVpbGQgYnJlYWthZ2Ugcmlzay4KKyAgICAg
ICAgVGhlc2UgcGF0aCBpcyBndWFyZGVkIGJ5IFNldHRpbmdzIHRodXMgc2hvdWxkIG5ldmVyIGdl
dCByZWFjaGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gTm8gYmVoYXZpb3JhbCBjaGFuZ2Uu
CisKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6
OmlzU2VsZWN0aW9uVW5ncmFtbWF0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1
ZXNzZXNGb3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0JhZEdyYW1tYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6
CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVj
a2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRD
aGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0
aWNhbFJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6bWFya0Fs
bEJhZEdyYW1tYXIpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisKIDIwMTEtMDMtMjIgIERhdmlk
IEh5YXR0ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFr
aW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggODgwNzk2NTA2OGE0MzkxMGE5YWQ5
MzY1MWUxNDYyZWNjOGU5Y2Y5YS4uYjBiMmRlNzNkYTY0ODY5YTQ1MDA5NjhiMWZlNmE1MTJmZGNh
ZjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMTM3MSw3ICsxMzcxLDcgQEAg
aW50IEVkaXRvcjo6c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKQogICAgIHJldHVybiBjbGllbnQo
KSA/IGNsaWVudCgpLT5zcGVsbENoZWNrZXJEb2N1bWVudFRhZygpIDogMDsKIH0KIAotI2lmIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQog
CiB2b2lkIEVkaXRvcjo6dXBwZXJjYXNlV29yZCgpCiB7CkBAIC0xODIzLDE0ICsxODIzLDE2IEBA
IHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKICAgICBpbnQgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwID0gc3BlbGxpbmdTZWFy
Y2hSYW5nZS0+ZW5kT2Zmc2V0KGVjKTsKICAgICAKICAgICBpbnQgbWlzc3BlbGxpbmdPZmZzZXQg
PSAwOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCi0gICAgUmVmUHRyPFJhbmdlPiBncmFtbWFy
U2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKLSAgICBT
dHJpbmcgbWlzc3BlbGxlZFdvcmQ7Ci0gICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CisgICAg
R3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOwogICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0
ID0gMDsKKyAgICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZTsKKyAgICBTdHJpbmcg
YmFkR3JhbW1hclBocmFzZTsKKyAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7CisKKyNpZiBVU0Uo
VU5JRklFRF9URVhUX0NIRUNLSU5HKQorICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5n
U2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgIGJvb2wgaXNTcGVsbGluZyA9IHRydWU7
CiAgICAgaW50IGZvdW5kT2Zmc2V0ID0gMDsKLSAgICBHcmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRh
aWw7CiAgICAgU3RyaW5nIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwg
c3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFy
RGV0YWlsKTsKICAgICBpZiAoaXNTcGVsbGluZykgewogICAgICAgICBtaXNzcGVsbGVkV29yZCA9
IGZvdW5kSXRlbTsKQEAgLTE4NDEsMTUgKzE4NDMsMTEgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgIH0KICNlbHNl
CiAgICAgUmVmUHRyPFJhbmdlPiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7Ci0gICAgU3RyaW5nIG1p
c3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJj
aFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZp
cnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0gICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7Ci0KLSNp
Zm5kZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICBpbnQgZ3JhbW1hclBocmFzZU9mZnNldCA9IDA7
Ci0gICAgR3JhbW1hckRldGFpbCBncmFtbWFyRGV0YWlsOworICAgIG1pc3NwZWxsZWRXb3JkID0g
VGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmly
c3RNaXNzcGVsbGluZyhtaXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdS
YW5nZSk7CiAKKyNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKICAgICAvLyBTZWFyY2ggZm9yIGJh
ZCBncmFtbWFyIHRoYXQgb2NjdXJzIHByaW9yIHRvIHRoZSBuZXh0IG1pc3NwZWxsZWQgd29yZCAo
aWYgYW55KQotICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdT
ZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CisgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3Bl
bGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgaWYgKCFtaXNzcGVsbGVkV29y
ZC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gU3RvcCBsb29raW5nIGF0IHN0YXJ0IG9mIG5leHQg
bWlzc3BlbGxlZCB3b3JkCiAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNoYXJzKGdyYW1tYXJT
ZWFyY2hSYW5nZS5nZXQoKSk7CkBAIC0xODY5LDcgKzE4NjcsNyBAQCB2b2lkIEVkaXRvcjo6YWR2
YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgICAg
IC8vIGdvaW5nIHVudGlsIHRoZSBlbmQgb2YgdGhlIHZlcnkgZmlyc3QgY2h1bmsgd2UgdGVzdGVk
IGlzIGZhciBlbm91Z2gKICAgICAgICAgc3BlbGxpbmdTZWFyY2hSYW5nZS0+c2V0RW5kKHNlYXJj
aEVuZE5vZGVBZnRlcldyYXAsIHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCwgZWMpOwogICAgICAg
ICAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcpCiAgICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNs
b25lUmFuZ2UoZWMpOwogICAgICAgICBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xp
ZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRHcmFt
bWFyKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNldCwg
Z3JhbW1hckRldGFpbCk7CiAgICAgICAgIGlmIChpc1NwZWxsaW5nKSB7CkBAIC0xODgyLDcgKzE4
ODAsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRC
ZWZvcmVTZWxlY3Rpb24pCiAjZWxzZQogICAgICAgICBtaXNzcGVsbGVkV29yZCA9IFRleHRDaGVj
a2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3Bl
bGxpbmcobWlzc3BlbGxpbmdPZmZzZXQsIGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwog
Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAg
ICAgICAgIGdyYW1tYXJTZWFyY2hSYW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFu
Z2UoZWMpOwogICAgICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1wdHkoKSkgewogICAgICAg
ICAgICAgLy8gU3RvcCBsb29raW5nIGF0IHN0YXJ0IG9mIG5leHQgbWlzc3BlbGxlZCB3b3JkCkBA
IC0xODk4LDkgKzE4OTYsNyBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5n
KGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgfQogICAgIAogICAgIGlmICghYmFkR3Jh
bW1hclBocmFzZS5pc0VtcHR5KCkpIHsKLSNpZmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNlCisgICAgICAgIEFTU0VSVChXVEZfVVNFX0dS
QU1NQVJfQ0hFQ0tJTkcpOwogICAgICAgICAvLyBXZSBmb3VuZCBiYWQgZ3JhbW1hci4gU2luY2Ug
d2Ugb25seSBzZWFyY2hlZCBmb3IgYmFkIGdyYW1tYXIgdXAgdG8gdGhlIGZpcnN0IG1pc3NwZWxs
ZWQgd29yZCwgdGhlIGJhZCBncmFtbWFyCiAgICAgICAgIC8vIHRha2VzIHByZWNlZGVuY2UgYW5k
IHdlIGlnbm9yZSBhbnkgcG90ZW50aWFsIG1pc3NwZWxsZWQgd29yZC4gU2VsZWN0IHRoZSBncmFt
bWFyIGRldGFpbCwgdXBkYXRlIHRoZSBzcGVsbGluZwogICAgICAgICAvLyBwYW5lbCwgYW5kIHN0
b3JlIGEgbWFya2VyIHNvIHdlIGRyYXcgdGhlIGdyZWVuIHNxdWlnZ2xlIGxhdGVyLgpAQCAtMTkx
NSw3ICsxOTExLDYgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29s
IHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0
ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFtbWFyRGV0
YWlsKTsKICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5hZGRNYXJrZXIo
YmFkR3JhbW1hclJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hciwgZ3JhbW1hckRl
dGFpbC51c2VyRGVzY3JpcHRpb24pOwotI2VuZGlmICAgICAgICAKICAgICB9IGVsc2UgaWYgKCFt
aXNzcGVsbGVkV29yZC5pc0VtcHR5KCkpIHsKICAgICAgICAgLy8gV2UgZm91bmQgYSBtaXNzcGVs
bGluZywgYnV0IG5vdCBhbnkgZWFybGllciBiYWQgZ3JhbW1hci4gU2VsZWN0IHRoZSBtaXNzcGVs
bGluZywgdXBkYXRlIHRoZSBzcGVsbGluZyBwYW5lbCwgYW5kIHN0b3JlCiAgICAgICAgIC8vIGEg
bWFya2VyIHNvIHdlIGRyYXcgdGhlIHJlZCBzcXVpZ2dsZSBsYXRlci4KQEAgLTE5NTgsMjMgKzE5
NTMsMjMgQEAgYm9vbCBFZGl0b3I6OmlzU2VsZWN0aW9uTWlzc3BlbGxlZCgpCiAKIGJvb2wgRWRp
dG9yOjppc1NlbGVjdGlvblVuZ3JhbW1hdGljYWwoKQogewotI2lmZGVmIEJVSUxESU5HX09OX1RJ
R0VSCi0gICAgcmV0dXJuIGZhbHNlOwotI2Vsc2UKKyNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykK
ICAgICBWZWN0b3I8U3RyaW5nPiBpZ25vcmVkR3Vlc3NlczsKICAgICByZXR1cm4gVGV4dENoZWNr
aW5nSGVscGVyKGNsaWVudCgpLCBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFu
Z2UoKSkuaXNVbmdyYW1tYXRpY2FsKGlnbm9yZWRHdWVzc2VzKTsKKyNlbHNlCisgICAgcmV0dXJu
IGZhbHNlOwogI2VuZGlmCiB9CiAKIFZlY3RvcjxTdHJpbmc+IEVkaXRvcjo6Z3Vlc3Nlc0ZvclVu
Z3JhbW1hdGljYWxTZWxlY3Rpb24oKQogewotI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAg
cmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0jZWxzZQorI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5H
KQogICAgIFZlY3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgLy8gSWdub3JlIHRoZSByZXN1bHQg
b2YgaXNVbmdyYW1tYXRpY2FsOyB3ZSBqdXN0IHdhbnQgdGhlIGd1ZXNzZXMsIHdoZXRoZXIgb3Ig
bm90IHRoZXJlIGFyZSBhbnkKICAgICBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIGZyYW1l
KCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpKS5pc1VuZ3JhbW1hdGljYWwoZ3Vl
c3Nlcyk7CiAgICAgcmV0dXJuIGd1ZXNzZXM7CisjZWxzZQorICAgIHJldHVybiBWZWN0b3I8U3Ry
aW5nPigpOwogI2VuZGlmCiB9CiAKQEAgLTE5OTEsNyArMTk4Niw3IEBAIFZlY3RvcjxTdHJpbmc+
IEVkaXRvcjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRTZWxlY3Rpb24oKQogCiBWZWN0b3I8U3RyaW5n
PiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKGJv
b2wmIG1pc3NwZWxsZWQsIGJvb2wmIHVuZ3JhbW1hdGljYWwpCiB7Ci0jaWYgUExBVEZPUk0oTUFD
KSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
TEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIHJldHVybiBUZXh0
Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6
ZWRSYW5nZSgpKS5ndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGlzR3Jh
bW1hckNoZWNraW5nRW5hYmxlZCgpLCBtaXNzcGVsbGVkLCB1bmdyYW1tYXRpY2FsKTsKICNlbHNl
CiAgICAgbWlzc3BlbGxlZCA9IGlzU2VsZWN0aW9uTWlzc3BlbGxlZCgpOwpAQCAtMjA2MCw3ICsy
MDU1LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFyKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24gJm1vdmluZ1NlbGVjdGkKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24gJndvcmRTdGFy
dCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uQWZ0ZXJUeXBpbmcpCiB7Ci0jaWYg
UExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQo
QlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogI2lm
IFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICAvLyBBcHBseSBwZW5kaW5nIGF1dG9j
b3JyZWN0aW9uIGJlZm9yZSBuZXh0IHJvdW5kIG9mIHNwZWxsIGNoZWNraW5nLgogICAgIGJvb2wg
ZG9BcHBseUNvcnJlY3Rpb24gPSB0cnVlOwpAQCAtMjA4MiwxMiArMjA3NywxNCBAQCB2b2lkIEVk
aXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3Np
dGlvbiAmd29yZFN0YXJ0LAogICAgIGlmIChpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxl
ZCgpKQogICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRpb25zIHw9IE1hcmtTcGVsbGluZzsKIAorI2lm
IFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKICAgICBpZiAoaXNBdXRvbWF0aWNRdW90
ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKQogICAgICAgICB8fCBpc0F1dG9tYXRpY0xpbmtEZXRlY3Rp
b25FbmFibGVkKCkKICAgICAgICAgfHwgaXNBdXRvbWF0aWNEYXNoU3Vic3RpdHV0aW9uRW5hYmxl
ZCgpCiAgICAgICAgIHx8IGlzQXV0b21hdGljVGV4dFJlcGxhY2VtZW50RW5hYmxlZCgpCiAgICAg
ICAgIHx8ICgodGV4dENoZWNraW5nT3B0aW9ucyAmIE1hcmtTcGVsbGluZykgJiYgaXNBdXRvbWF0
aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpKQogICAgICAgICB0ZXh0Q2hlY2tpbmdPcHRp
b25zIHw9IFBlcmZvcm1SZXBsYWNlbWVudDsKKyNlbmRpZgogCiAgICAgaWYgKCF0ZXh0Q2hlY2tp
bmdPcHRpb25zICYgKE1hcmtTcGVsbGluZyB8IFBlcmZvcm1SZXBsYWNlbWVudCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTIxNzYsMTIgKzIxNzMsOSBAQCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxs
aW5nc09yQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvbwog
ICAgIGlmIChjaGVja1NwZWxsaW5nKQogICAgICAgICBjaGVja2VyLm1hcmtBbGxNaXNzcGVsbGlu
Z3MoZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICAgICBlbHNlIHsKLSNpZmRlZiBCVUlMRElOR19P
Tl9USUdFUgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNlbHNlCisgICAgICAgIEFT
U0VSVChXVEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcpOwogICAgICAgICBpZiAoaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCkpCiAgICAgICAgICAgICBjaGVja2VyLm1hcmtBbGxCYWRHcmFtbWFyKCk7
Ci0jZW5kaWYKICAgICB9ICAgIAogfQogCkBAIC0yMjA3LDE3ICsyMjAxLDE0IEBAIHZvaWQgRWRp
dG9yOjptYXJrTWlzc3BlbGxpbmdzKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwg
UmVmUHRyPFJhbmdlPiYKICAgICAKIHZvaWQgRWRpdG9yOjptYXJrQmFkR3JhbW1hcihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiB7Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VS
CisgICAgQVNTRVJUKFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORyk7CiAgICAgUmVmUHRyPFJhbmdl
PiBmaXJzdE1pc3NwZWxsaW5nUmFuZ2U7CiAgICAgbWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1h
cihzZWxlY3Rpb24sIGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotI2Vsc2UKLSAgICBV
TlVTRURfUEFSQU0oc2VsZWN0aW9uKTsKLSNlbmRpZgogfQogCi0jaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFu
Z2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxs
aW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFuZ2UpCiB7CisjaWYgVVNFKFVOSUZJRURfVEVYVF9D
SEVDS0lORykKICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgcGVuZGluZyBhdXRvY29ycmVjdGlv
biBhdCB0aGlzIG1vbWVudC4KICAgICBBU1NFUlQoIW1fY29ycmVjdGlvblBhbmVsSW5mby5yYW5n
ZVRvQmVSZXBsYWNlZCk7CiAKQEAgLTIyNzgsNiArMjI2OSw3IEBAIHZvaWQgRWRpdG9yOjptYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMg
dGV4dENoCiAgICAgaWYgKHNob3VsZFNob3dDb3JyZWN0aW9uUGFuZWwpCiAgICAgICAgIGNoZWNr
aW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247CiAgICAgaWYgKHNob3VsZFBl
cmZvcm1SZXBsYWNlbWVudCkgeworI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkK
ICAgICAgICAgaWYgKGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJsZWQoKSkKICAgICAgICAg
ICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUxpbms7CiAgICAgICAgIGlmIChp
c0F1dG9tYXRpY1F1b3RlU3Vic3RpdHV0aW9uRW5hYmxlZCgpKQpAQCAtMjI4OCw2ICsyMjgwLDcg
QEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMo
VGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gKICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0g
VGV4dENoZWNraW5nVHlwZVJlcGxhY2VtZW50OwogICAgICAgICBpZiAoc2hvdWxkTWFya1NwZWxs
aW5nICYmIGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKQogICAgICAgICAg
ICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKKyNlbmRpZgog
ICAgIH0KICAgICB0ZXh0Q2hlY2tlcigpLT5jaGVja1RleHRPZlBhcmFncmFwaChwYXJhZ3JhcGgu
dGV4dENoYXJhY3RlcnMoKSwgcGFyYWdyYXBoLnRleHRMZW5ndGgoKSwgY2hlY2tpbmdUeXBlcywg
cmVzdWx0cyk7CiAKQEAgLTI0NTYsMTAgKzI0NDksMTcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxN
aXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0
Q2gKICAgICAgICAgICAgIG1fZnJhbWUtPnNlbGVjdGlvbigpLT5tb2RpZnkoU2VsZWN0aW9uQ29u
dHJvbGxlcjo6QWx0ZXJhdGlvbk1vdmUsIERpcmVjdGlvbkZvcndhcmQsIENoYXJhY3RlckdyYW51
bGFyaXR5KTsKICAgICAgICAgfQogICAgIH0KKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CisgICAgVU5VU0VEX1BBUkFNKHRleHRDaGVja2luZ09wdGlvbnMpOworICAgIFVOVVNFRF9Q
QVJBTShzcGVsbGluZ1JhbmdlKTsKKyAgICBVTlVTRURfUEFSQU0oZ3JhbW1hclJhbmdlKTsKKyNl
bmRpZiAvLyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiB2b2lkIEVkaXRvcjo6Y2hh
bmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNlZFN0cmluZykKIHsK
KyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIGlmIChyZXBsYWNlZFN0cmluZy5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtMjQ3OCwxMyArMjQ3OCwxNiBAQCB2b2lk
IEVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiByZXBsYWNl
ZFN0cmluZykKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgY2hhbmdlZFJh
bmdlLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihj
aGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0aW9u
KTsKICNlbmRpZgorI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICBVTlVTRURf
UEFSQU0ocmVwbGFjZWRTdHJpbmcpOworI2VuZGlmIC8vIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJ
TkcpCiB9CiAKLSNlbmRpZgogCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3BlbGxpbmdTZWxlY3Rpb24sIGJvb2wgbWFy
a0dyYW1tYXIsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIGdyYW1tYXJTZWxlY3Rpb24pCiB7Ci0j
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQog
ICAgIGlmICghaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoZWNraW5nT3B0aW9ucyA9IE1hcmtT
cGVsbGluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IGUxYTcxMTkyNDVlODNiZWQxMGQ3
M2QyMDVlZmUyMTU0MDg1YzU2OWUuLjYwM2MyZjVkZWJjZjJiNjljMzcyZjMyMjgzNzY0YTA5NmYy
YTY2MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMjIyLDcgKzIyMiw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIG1hcmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJl
ZlB0cjxSYW5nZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3Jh
bW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdz
QW5kQmFkR3JhbW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwg
Ym9vbCBtYXJrR3JhbW1hciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlv
bik7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQ
TEFDRU1FTlQpCiAgICAgdm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dlcmNhc2VX
b3JkKCk7CiAgICAgdm9pZCBjYXBpdGFsaXplV29yZCgpOwpAQCAtMjM5LDYgKzIzOSw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJv
b2wgaXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dn
bGVBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb24oKTsKKyNlbmRpZgorCiAgICAgZW51bSBUZXh0
Q2hlY2tpbmdPcHRpb25GbGFncyB7CiAgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKICAg
ICAgICAgTWFya0dyYW1tYXIgPSAxIDw8IDEsCkBAIC0yNDksNyArMjUxLDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBtYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRD
aGVja2luZ09wdGlvbnMsIFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdl
KTsKICAgICB2b2lkIGNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVw
bGFjZWRTdHJpbmcpOwotI2VuZGlmCisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGlu
Zyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uID0gZmFsc2UpOwogICAgIHZvaWQgc2hvd1NwZWxs
aW5nR3Vlc3NQYW5lbCgpOwogICAgIGJvb2wgc3BlbGxpbmdQYW5lbElzU2hvd2luZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGU1NTUz
ZmQxMDI5MmZlNTg3ZjBlMjMzMGQxNjVlOGUxNzcyOGU0MWQuLjAwOWM4MDc0MTQzMTU4ZGM2OTYy
NGQ5OWU2NmZhYmEwYjM4MmQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VGV4dENoZWNraW5nSGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRD
aGVja2luZ0hlbHBlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5n
SGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQs
IGJvbwogCiBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09y
QmFkR3JhbW1hcihib29sIGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBv
dXRGaXJzdEZvdW5kT2Zmc2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewot
I2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykK
ICAgICBTdHJpbmcgZmlyc3RGb3VuZEl0ZW07CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwog
ICAgIFN0cmluZyBiYWRHcmFtbWFyUGhyYXNlOwpAQCAtMzUwLDEyICszNTAsMTIgQEAgU3RyaW5n
IFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9v
bCBjaGVja0dyYW1tYXIsIGIKICAgICBVTlVTRURfUEFSQU0ob3V0Rmlyc3RGb3VuZE9mZnNldCk7
CiAgICAgVU5VU0VEX1BBUkFNKG91dEdyYW1tYXJEZXRhaWwpOwogICAgIHJldHVybiAiIjsKLSNl
bmRpZgorI2VuZGlmIC8vIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIGludCBUZXh0
Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1t
YXJEZXRhaWw+JiBncmFtbWFyRGV0YWlscywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwg
aW50IC8qYmFkR3JhbW1hclBocmFzZUxlbmd0aCovLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRP
ZmZzZXQsIGJvb2wgbWFya0FsbCkKIHsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyNpZiBV
U0UoR1JBTU1BUl9DSEVDS0lORykKICAgICAvLyBGb3VuZCBzb21lIGJhZCBncmFtbWFyLiBGaW5k
IHRoZSBlYXJsaWVzdCBkZXRhaWwgcmFuZ2UgdGhhdCBzdGFydHMgaW4gb3VyIHNlYXJjaCByYW5n
ZSAoaWYgYW55KS4KICAgICAvLyBPcHRpb25hbGx5IGFkZCBhIERvY3VtZW50TWFya2VyIGZvciBl
YWNoIGRldGFpbCBpbiB0aGUgcmFuZ2UuCiAgICAgaW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25T
b0ZhciA9IC0xOwpAQCAtNDAyLDcgKzQwMiw3IEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZp
bmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAK
IFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRl
dGFpbCYgb3V0R3JhbW1hckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29s
IG1hcmtBbGwpCiB7Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgQVNTRVJUKFdURl9V
U0VfR1JBTU1BUl9DSEVDS0lORyk7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1ldGVyczsg
dGhlc2Ugd2lsbCBiZSB1cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVybi4KICAg
ICBvdXRHcmFtbWFyRGV0YWlsLmxvY2F0aW9uID0gLTE7CiAgICAgb3V0R3JhbW1hckRldGFpbC5s
ZW5ndGggPSAwOwpAQCAtNDU4LDE4ICs0NTgsMTIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBl
cjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAog
ICAgIH0KICAgICAKICAgICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlOwotI2Vsc2UKLSAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBVTlVTRURfUEFSQU0ob3V0R3JhbW1hckRldGFp
bCk7Ci0gICAgVU5VU0VEX1BBUkFNKG91dEdyYW1tYXJQaHJhc2VPZmZzZXQpOwotICAgIFVOVVNF
RF9QQVJBTShtYXJrQWxsKTsKLSNlbmRpZgogfQogCiAKIGJvb2wgVGV4dENoZWNraW5nSGVscGVy
Ojppc1VuZ3JhbW1hdGljYWwoVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXNWZWN0b3IpIGNvbnN0CiB7
Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgQVNTRVJUKFdURl9VU0VfR1JBTU1BUl9D
SEVDS0lORyk7CiAgICAgaWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBA
IC01MTEsMTYgKzUwNSwxMSBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRp
Y2FsKFZlY3RvcjxTdHJpbmc+JiBndWVzc2VzVmVjdG9yKSBjb25zdAogICAgIG1fY2xpZW50LT51
cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoYmFkR3JhbW1hclBocmFzZSwgZ3JhbW1h
ckRldGFpbCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIFVOVVNFRF9QQVJBTShndWVzc2VzVmVjdG9yKTsKLSAgICByZXR1cm4g
dHJ1ZTsKLSNlbmRpZgogfQogCiBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1
ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbCBjaGVja0dyYW1tYXIs
IGJvb2wmIG1pc3NwZWxsZWQsIGJvb2wmIHVuZ3JhbW1hdGljYWwpIGNvbnN0CiB7Ci0jaWYgUExB
VEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJ
TERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIFZl
Y3RvcjxTdHJpbmc+IGd1ZXNzZXM7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBtaXNzcGVs
bGVkID0gZmFsc2U7CkBAIC01NzgsNyArNTY3LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNr
aW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wK
ICAgICBVTlVTRURfUEFSQU0obWlzc3BlbGxlZCk7CiAgICAgVU5VU0VEX1BBUkFNKHVuZ3JhbW1h
dGljYWwpOwogICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlmCisjZW5kaWYgLy8g
VVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0KIAogCkBAIC01OTIsMTUgKzU4MSwxMiBAQCB2
b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+
JiBmaXJzdE1pc3NwZWxsaW5nUmFuZwogCiB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0Fs
bEJhZEdyYW1tYXIoKQogewotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIC8vIFVzZSB0
aGUgIm1hcmtBbGwiIGZlYXR1cmUgb2YgZmluZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSBy
ZXR1cm4gdmFsdWUgYW5kICJvdXQgcGFyYW1ldGVycyI7IGFsbCB3ZSBuZWVkIHRvCisgICAgQVNT
RVJUKFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORyk7CisgICAgLy8gVXNlIHRoZSAibWFya0FsbCIg
ZmVhdHVyZSBvZiBvZmluZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUg
YW5kICJvdXQgcGFyYW1ldGVycyI7IGFsbCB3ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFyayBl
dmVyeSBpbnN0YW5jZS4KICAgICBHcmFtbWFyRGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWlsOwog
ICAgIGludCBpZ25vcmVkT2Zmc2V0OwogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdy
YW1tYXJEZXRhaWwsIGlnbm9yZWRPZmZzZXQsIHRydWUpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSNlbmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRW1wdHlDbGllbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRz
LmgKaW5kZXggZWQ5MmYxMTJjYmE4NzdmZDUyYzM0NjQwN2Y1YjRmZmUyNjEyMGY2Yy4uN2YyZGUz
ZTI0YTRhYzY4MGY3Mzc3OGM4YzM2NjZiMTkxOTk1N2YxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9F
bXB0eUNsaWVudHMuaApAQCAtNDA2LDcgKzQwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJp
bmcmKSB7IHJldHVybiBTdHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJP
ZlN0cmluZyhjb25zdCBVQ2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50Kiwg
aW50KikgeyB9CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJ
R0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RF
WFRfQ0hFQ0tJTkcpCiAgICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0
IFVDaGFyKiwgaW50LCB1aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0
Q2hlY2tlckNsaWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tl
ckNsaWVudC5oCmluZGV4IGFjYWEwMmNmNjJhMDcwZjkwY2Y5NGM2ZTEyNmM1ZDBkNjdiZmJiOGUu
LjcwZTcxODBhZjVjYzRiZDJiYmEyMTY0ZTBmM2U0ZGE3OTBhZjQ2NGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKQEAgLTcwLDcgKzcw
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29u
c3QgVUNoYXIqLCBpbnQgbGVuZ3RoLCBpbnQqIG1pc3NwZWxsaW5nTG9jYXRpb24sIGludCogbWlz
c3BlbGxpbmdMZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29ycmVjdFN1
Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1hck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwg
aW50IGxlbmd0aCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiBiYWRHcmFtbWFyTG9jYXRp
b24sIGludCogYmFkR3JhbW1hckxlbmd0aCkgPSAwOwotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQp
CisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tU
ZXh0T2ZQYXJhZ3JhcGgoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsIHVpbnQ2NF90IGNo
ZWNraW5nVHlwZXMsIFZlY3RvcjxUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKSA9IDA7CiAj
ZW5kaWYKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86744</attachid>
            <date>2011-03-23 22:54:38 -0700</date>
            <delta_ts>2011-03-23 23:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56818-20110324145435.patch</filename>
            <type>text/plain</type>
            <size>28903</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVk
MmZmY2ViOThhY2U2MWQzZGIyOTk2ZDM3NGJlMTNmZmYxN2Y3MTUuLmIyMmE1NTQzMWNkZWQ1NThh
NjA2MWE4NDlmOTMwYjcxNGUzZGNlODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDExLTAzLTIzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNwZWxs
Y2hlY2sgZmVhdHVyZSBzcGVjaWZpYyBzeW1ib2xzIHNob3VsZCBiZSBkZWZpbmVkLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTY4MTgKKworICAgICAg
ICBJbnJvZHVjZWQKKyAgICAgICAgLSBXVEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORworICAg
ICAgICAtIFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORworICAgICAgICAtIFdURl9VU0VfQVVUT01B
VElDX1RFWFRfUkVQTEFDRU1FTlQKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDEx
LTAzLTIzICBNYXJrIFJvd2UgIDxtcm93ZUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTFkMWU3OWNlMDIxMzJkMGM2Y2JjZjFjNzA0
MmQwNzZhMjE3NzdhZi4uNWUyZTljY2Y3MGNhZmUwNTQyNTE2ZDM2NjcyN2JmNmJiODdmMGE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDExLTAzLTIzICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFNwZWxsY2hlY2sgZmVhdHVyZSBzcGVjaWZpYyBzeW1ib2xzIHNob3VsZCBi
ZSBkZWZpbmVkLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NTY4MTgKKyAgICAgICAgCisgICAgICAgICogSW50cm9kdWNlZCBVU0UoVU5JRklFRF9URVhU
X0NIRUNLSU5HKSwgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpIGFuZCBVU0UoQVVUT01BVElDX1RFWFRf
UkVQTEFDRU1FTlQpCisgICAgICAgICogUmVwbGFjZWQgYSBwYXJ0IG9mIG9mIEJVSUxESU5HX09O
XyogY29uZGl0aW9uYWxzIHdpdGggdGhlbS4KKworICAgICAgICBOb3RlIHRoYXQgc21hbGwgYW1v
dW50IG9mIGNvZGUgcGF0aCBvbiBFZGl0b3IuY3BwIGlzIG5vdyBjb21waWxlZCB1bmRlciBVU0Uo
R1JBTU1BUl9DSEVDS0lORykKKyAgICAgICAgYmVjYXVzZSB0aGVzZSBjb2RlIHBhdGggaXMgYWxy
ZWFkeSBidWlsdCB1bmRlciBub24tTWFjIHBvcnRzIGFuZAorICAgICAgICBLZWVwaW5nIHRoZW0g
YnVpbGRhYmxlIGZvciBzdWNoIHBsYXRmb3JtcyByZWR1Y2VzIHRoZSBidWlsZCBicmVha2FnZSBy
aXNrLgorICAgICAgICBUaGVzZSBwYXRoIGlzIGd1YXJkZWQgYnkgU2V0dGluZ3MgdGh1cyBzaG91
bGQgbmV2ZXIgZ2V0IHJlYWNoZWQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBiZWhhdmlv
cmFsIGNoYW5nZS4KKworICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3Jl
LnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAg
KiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjppc1NlbGVjdGlvblVuZ3JhbW1hdGlj
YWwpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpndWVzc2VzRm9yVW5ncmFtbWF0aWNhbFNl
bGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVk
T3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFy
a01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9Xb3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc09yQmFkR3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6Om1hcmtCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FsbE1p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0
b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIpOgorICAgICAgICAqIGVkaXRpbmcvRWRp
dG9yLmg6CisgICAgICAgICogZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFk
R3JhbW1hcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJz
dEdyYW1tYXJEZXRhaWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENoZWNraW5nSGVscGVyOjpm
aW5kRmlyc3RCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBl
cjo6aXNVbmdyYW1tYXRpY2FsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBl
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6Om1hcmtBbGxCYWRHcmFtbWFyKToKKyAgICAgICAg
KiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hl
Y2tlckNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmg6IEFk
ZGVkLgorCiAyMDExLTAzLTIzICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXgg
OWJmNTdiMTQ3YzJkYWQ1NDczYjU4NGFjOGNkMjU3NjZiZmMxNjkxZS4uNjc2ZjMwNGIwNjY4OTRl
OGYwYzdiMDI3NDc1NzQ2MjJjNGU2NzQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtOTEwLDYgKzkx
MCw3IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9UZXh0QnJlYWtJdGVyYXRvci5oJywK
ICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0ZXJhdG9ySW50ZXJuYWxJQ1Uu
aCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oJywKKyAg
ICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2luZy5oJywKICAgICAgICAgICAgICdw
bGF0Zm9ybS90ZXh0L1RleHRDb2RlYy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1Rl
eHRDb2RlY0lDVS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1RleHRDb2RlY0xhdGlu
MS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMmE5MzQwN2I3ZTM2YjcxMDJmOTI1OGRiOWU2ZjhjNDcx
N2EzZmQyMS4uMGVmOGVkYWZkNGQ5YzQ5N2UzNTRiODQ4ZTU0ZGJjODE3Y2ZlYmU5NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8KQEAgLTE5NDcsNiArMTk0Nyw3IEBAIEhFQURFUlMgKz0gXAogICAgIHBsYXRmb3Jt
L0xlbmd0aC5oIFwKICAgICBwbGF0Zm9ybS90ZXh0L0xpbmVFbmRpbmcuaCBcCiAgICAgcGxhdGZv
cm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oIFwKKyAgICBwbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2luZy5oIFwKICAgICBwbGF0Zm9ybS9MaW5rSGFzaC5oIFwKICAgICBwbGF0Zm9ybS9Mb2dnaW5n
LmggXAogICAgIHBsYXRmb3JtL0xhbmd1YWdlLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvagppbmRleCA1ZTk3YmIyZWJmNDcxNzIwOTUxMjhlZWNmZTE5
Nzc0Y2UzMDEyY2UwLi43ZDY4NzhhYWU3MjAwNzczODg2N2E3MWQzNzBjY2MzZThmYzJjZDM0IDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagpAQCAtMzA1
NjUsNiArMzA1NjUsMTAgQEAKIAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXHRleHRcVGV4dENoZWNraW5nLmgiCisJCQkJCT4KKwkJ
CQk8L0ZpbGU+CisJCQkJPEZpbGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVx0ZXh0
XFRleHRDb2RlYy5jcHAiCiAJCQkJCT4KIAkJCQk8L0ZpbGU+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNmQxYmNlYmZmZDdhN2Uy
NmYzMTQ5YTg2NGVlOGExNjM1NGE3YzNiNy4uNTY2N2IwY2FhMmEzZjk5N2UwNzgxZDIyOTI1Y2Qz
MjcyZDM5ZTJkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMzIwNSw2ICszMjA1LDcgQEAKIAkJQTc3OTc5MjgwRDZCOUU2NDAw
Mzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5j
cHAgKi87IH07CiAJCUE3Nzk3OTI5MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjUwRDZC
OUU2NDAwMzg1MUI5IC8qIEpTSW1hZ2VEYXRhLmggKi87IH07CiAJCUE3N0I0MUEwMTJFNjc1QTkw
MDU0MzQzRCAvKiBUZXh0RXZlbnRJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0I0MTlGMTJFNjc1QTkwMDU0MzQzRCAvKiBUZXh0RXZl
bnRJbnB1dFR5cGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlBNzdEMDAxMjEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzdEMDAxMTEzM0IwQUVC
MDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc4NDk0MUIwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2Fy
ZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzg0
OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLzsgfTsKIAkJQTc4RkUxM0Ix
MjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzhGRTEzOTEyMzY2QjEwMDBBQ0U4RDAgLyogU3Bl
bGxDaGVja2VyLmNwcCAqLzsgfTsKIAkJQTc4RkUxM0MxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxs
Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTc4RkUxM0ExMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05Njk1LDYgKzk2OTYsNyBAQAog
CQlBNzc5NzkyNDBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNJbWFnZURhdGEuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNJbWFnZURhdGEuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRF
dmVudElucHV0VHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0RXZl
bnRJbnB1dFR5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc3RDAwMTExMzNC
MEFFQjAwRDY2NThDIC8qIFRleHRDaGVja2luZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBUZXh0Q2hlY2tpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc4
NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gQ2xpcGJvYXJkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTc4RkUxMzkxMjM2NkIxMDAwQUNFOEQwIC8qIFNwZWxsQ2hlY2tlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTcGVsbENoZWNrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzhGRTEzQTEyMzY2QjEwMDBBQ0U4RDAgLyogU3Bl
bGxDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBmaWxlRW5jb2RpbmcgPSA0OyBwYXRoID0gU3BlbGxDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzc1OCw2ICsxNzc2MCw3IEBACiAJ
CQkJQjJDM0RBMDcwRDAwNkMxRDAwRUY2RjI2IC8qIFRleHRCcmVha0l0ZXJhdG9ySUNVLmNwcCAq
LywKIAkJCQlCMkMzREEwODBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0b3JJbnRl
cm5hbElDVS5oICovLAogCQkJCUE3MTUxQkQ3MTJGMTU1OEYwMDVBMEY2NCAvKiBUZXh0Q2hlY2tl
ckNsaWVudC5oICovLAorCQkJCUE3N0QwMDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tp
bmcuaCAqLywKIAkJCQlCMkMzREEwOTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmNwcCAq
LywKIAkJCQlCMkMzREEwQTBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjLmggKi8sCiAJCQkJ
MjZFOThBMEYxMzBBOUZDQTAwOEVCN0IyIC8qIFRleHRDb2RlY0FTQ0lJRmFzdFBhdGguaCAqLywK
QEAgLTIyNjk0LDYgKzIyNjk3LDcgQEAKIAkJCQkzMTlFNjlCNjEzMjk5QkJEMDA0QUM5MUEgLyog
V2ViS2l0QW5pbWF0aW9uTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM3NzJFMTMxMzMxNjIw
QzAwMUVDOUNFIC8qIENTU0xpbmVCb3hDb250YWluVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTRGMTQ0MjI5MTMzOUZENjIwMEUwRDZGOCAvKiBET01Ob2RlSGlnaGxpZ2h0ZXIuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IGI4Yzk1Y2NlNThh
YzU3YWMxZDk5OTc2ZjRkZjg2YTZjOGNiZTBmMjguLmEyMmE0ZjE3NjZhY2MzZDI0OTkwNWFlNDJh
MzA1OTNkZTgxODNkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTEzNzEsNyAr
MTM3MSw3IEBAIGludCBFZGl0b3I6OnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkKICAgICByZXR1
cm4gY2xpZW50KCkgPyBjbGllbnQoKS0+c3BlbGxDaGVja2VyRG9jdW1lbnRUYWcoKSA6IDA7CiB9
CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9SRVBM
QUNFTUVOVCkKIAogdm9pZCBFZGl0b3I6OnVwcGVyY2FzZVdvcmQoKQogewpAQCAtMTgyMywxNCAr
MTgyMywxNiBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3Rh
cnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgaW50IHNlYXJjaEVuZE9mZnNldEFmdGVyV3JhcCA9IHNw
ZWxsaW5nU2VhcmNoUmFuZ2UtPmVuZE9mZnNldChlYyk7CiAgICAgCiAgICAgaW50IG1pc3NwZWxs
aW5nT2Zmc2V0ID0gMDsKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQotICAgIFJlZlB0cjxSYW5n
ZT4gZ3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShl
Yyk7Ci0gICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwotICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlOworICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAgICBpbnQgZ3JhbW1hclBo
cmFzZU9mZnNldCA9IDA7CisgICAgUmVmUHRyPFJhbmdlPiBncmFtbWFyU2VhcmNoUmFuZ2U7Cisg
ICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CisgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwor
CisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKKyAgICBncmFtbWFyU2VhcmNoUmFuZ2Ug
PSBzcGVsbGluZ1NlYXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBib29sIGlzU3BlbGxp
bmcgPSB0cnVlOwogICAgIGludCBmb3VuZE9mZnNldCA9IDA7Ci0gICAgR3JhbW1hckRldGFpbCBn
cmFtbWFyRGV0YWlsOwogICAgIFN0cmluZyBmb3VuZEl0ZW0gPSBUZXh0Q2hlY2tpbmdIZWxwZXIo
Y2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3NwZWxsaW5nT3JCYWRH
cmFtbWFyKGlzR3JhbW1hckNoZWNraW5nRW5hYmxlZCgpLCBpc1NwZWxsaW5nLCBmb3VuZE9mZnNl
dCwgZ3JhbW1hckRldGFpbCk7CiAgICAgaWYgKGlzU3BlbGxpbmcpIHsKICAgICAgICAgbWlzc3Bl
bGxlZFdvcmQgPSBmb3VuZEl0ZW07CkBAIC0xODQxLDE1ICsxODQzLDExIEBAIHZvaWQgRWRpdG9y
OjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAg
ICB9CiAjZWxzZQogICAgIFJlZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwotICAg
IFN0cmluZyBtaXNzcGVsbGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3Bl
bGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmcobWlzc3BlbGxpbmdPZmZzZXQs
IGZhbHNlLCBmaXJzdE1pc3NwZWxsaW5nUmFuZ2UpOwotICAgIFN0cmluZyBiYWRHcmFtbWFyUGhy
YXNlOwotCi0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgaW50IGdyYW1tYXJQaHJhc2VP
ZmZzZXQgPSAwOwotICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKKyAgICBtaXNzcGVs
bGVkV29yZCA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgc3BlbGxpbmdTZWFyY2hSYW5n
ZSkuZmluZEZpcnN0TWlzc3BlbGxpbmcobWlzc3BlbGxpbmdPZmZzZXQsIGZhbHNlLCBmaXJzdE1p
c3NwZWxsaW5nUmFuZ2UpOwogCisjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAgICAgLy8gU2Vh
cmNoIGZvciBiYWQgZ3JhbW1hciB0aGF0IG9jY3VycyBwcmlvciB0byB0aGUgbmV4dCBtaXNzcGVs
bGVkIHdvcmQgKGlmIGFueSkKLSAgICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hSYW5nZSA9
IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOworICAgIGdyYW1tYXJTZWFyY2hS
YW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwogICAgIGlmICghbWlz
c3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFy
dCBvZiBuZXh0IG1pc3NwZWxsZWQgd29yZAogICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjaGFy
cyhncmFtbWFyU2VhcmNoUmFuZ2UuZ2V0KCkpOwpAQCAtMTg2OSw3ICsxODY3LDcgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgICAgICAvLyBnb2luZyB1bnRpbCB0aGUgZW5kIG9mIHRoZSB2ZXJ5IGZpcnN0IGNodW5r
IHdlIHRlc3RlZCBpcyBmYXIgZW5vdWdoCiAgICAgICAgIHNwZWxsaW5nU2VhcmNoUmFuZ2UtPnNl
dEVuZChzZWFyY2hFbmROb2RlQWZ0ZXJXcmFwLCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAsIGVj
KTsKICAgICAgICAgCi0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9U
SUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKQogICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJj
aFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICAgICAgZm91bmRJdGVtID0gVGV4dENoZWNraW5n
SGVscGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGlu
Z09yQmFkR3JhbW1hcihpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgaXNTcGVsbGluZywgZm91
bmRPZmZzZXQsIGdyYW1tYXJEZXRhaWwpOwogICAgICAgICBpZiAoaXNTcGVsbGluZykgewpAQCAt
MTg4Miw3ICsxODgwLDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhi
b29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogI2Vsc2UKICAgICAgICAgbWlzc3BlbGxlZFdvcmQg
PSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRG
aXJzdE1pc3NwZWxsaW5nKG1pc3NwZWxsaW5nT2Zmc2V0LCBmYWxzZSwgZmlyc3RNaXNzcGVsbGlu
Z1JhbmdlKTsKIAotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgorI2lmIFVTRShHUkFNTUFSX0NI
RUNLSU5HKQogICAgICAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJhbmdl
LT5jbG9uZVJhbmdlKGVjKTsKICAgICAgICAgaWYgKCFtaXNzcGVsbGVkV29yZC5pc0VtcHR5KCkp
IHsKICAgICAgICAgICAgIC8vIFN0b3AgbG9va2luZyBhdCBzdGFydCBvZiBuZXh0IG1pc3NwZWxs
ZWQgd29yZApAQCAtMTg5OCw5ICsxODk2LDcgQEAgdm9pZCBFZGl0b3I6OmFkdmFuY2VUb05leHRN
aXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9uKQogICAgIH0KICAgICAKICAgICBp
ZiAoIWJhZEdyYW1tYXJQaHJhc2UuaXNFbXB0eSgpKSB7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElH
RVIKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQorICAgICAgICBBU1NFUlQo
V1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HKTsKICAgICAgICAgLy8gV2UgZm91bmQgYmFkIGdyYW1t
YXIuIFNpbmNlIHdlIG9ubHkgc2VhcmNoZWQgZm9yIGJhZCBncmFtbWFyIHVwIHRvIHRoZSBmaXJz
dCBtaXNzcGVsbGVkIHdvcmQsIHRoZSBiYWQgZ3JhbW1hcgogICAgICAgICAvLyB0YWtlcyBwcmVj
ZWRlbmNlIGFuZCB3ZSBpZ25vcmUgYW55IHBvdGVudGlhbCBtaXNzcGVsbGVkIHdvcmQuIFNlbGVj
dCB0aGUgZ3JhbW1hciBkZXRhaWwsIHVwZGF0ZSB0aGUgc3BlbGxpbmcKICAgICAgICAgLy8gcGFu
ZWwsIGFuZCBzdG9yZSBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSBncmVlbiBzcXVpZ2dsZSBsYXRl
ci4KQEAgLTE5MTUsNyArMTkxMSw2IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgCiAgICAgICAgIGNsaWVu
dCgpLT51cGRhdGVTcGVsbGluZ1VJV2l0aEdyYW1tYXJTdHJpbmcoYmFkR3JhbW1hclBocmFzZSwg
Z3JhbW1hckRldGFpbCk7CiAgICAgICAgIGZyYW1lKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+
YWRkTWFya2VyKGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIs
IGdyYW1tYXJEZXRhaWwudXNlckRlc2NyaXB0aW9uKTsKLSNlbmRpZiAgICAgICAgCiAgICAgfSBl
bHNlIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFdlIGZvdW5k
IGEgbWlzc3BlbGxpbmcsIGJ1dCBub3QgYW55IGVhcmxpZXIgYmFkIGdyYW1tYXIuIFNlbGVjdCB0
aGUgbWlzc3BlbGxpbmcsIHVwZGF0ZSB0aGUgc3BlbGxpbmcgcGFuZWwsIGFuZCBzdG9yZQogICAg
ICAgICAvLyBhIG1hcmtlciBzbyB3ZSBkcmF3IHRoZSByZWQgc3F1aWdnbGUgbGF0ZXIuCkBAIC0x
OTU4LDIzICsxOTUzLDIzIEBAIGJvb2wgRWRpdG9yOjppc1NlbGVjdGlvbk1pc3NwZWxsZWQoKQog
CiBib29sIEVkaXRvcjo6aXNTZWxlY3Rpb25VbmdyYW1tYXRpY2FsKCkKIHsKLSNpZmRlZiBCVUlM
RElOR19PTl9USUdFUgotICAgIHJldHVybiBmYWxzZTsKLSNlbHNlCisjaWYgVVNFKEdSQU1NQVJf
Q0hFQ0tJTkcpCiAgICAgVmVjdG9yPFN0cmluZz4gaWdub3JlZEd1ZXNzZXM7CiAgICAgcmV0dXJu
IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnRvTm9y
bWFsaXplZFJhbmdlKCkpLmlzVW5ncmFtbWF0aWNhbChpZ25vcmVkR3Vlc3Nlcyk7CisjZWxzZQor
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogfQogCiBWZWN0b3I8U3RyaW5nPiBFZGl0b3I6Omd1
ZXNzZXNGb3JVbmdyYW1tYXRpY2FsU2VsZWN0aW9uKCkKIHsKLSNpZmRlZiBCVUlMRElOR19PTl9U
SUdFUgotICAgIHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2Vsc2UKKyNpZiBVU0UoR1JBTU1B
Ul9DSEVDS0lORykKICAgICBWZWN0b3I8U3RyaW5nPiBndWVzc2VzOwogICAgIC8vIElnbm9yZSB0
aGUgcmVzdWx0IG9mIGlzVW5ncmFtbWF0aWNhbDsgd2UganVzdCB3YW50IHRoZSBndWVzc2VzLCB3
aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgYW55CiAgICAgVGV4dENoZWNraW5nSGVscGVyKGNsaWVu
dCgpLCBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+dG9Ob3JtYWxpemVkUmFuZ2UoKSkuaXNVbmdyYW1t
YXRpY2FsKGd1ZXNzZXMpOwogICAgIHJldHVybiBndWVzc2VzOworI2Vsc2UKKyAgICByZXR1cm4g
VmVjdG9yPFN0cmluZz4oKTsKICNlbmRpZgogfQogCkBAIC0xOTkxLDcgKzE5ODYsNyBAQCBWZWN0
b3I8U3RyaW5nPiBFZGl0b3I6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkU2VsZWN0aW9uKCkKIAogVmVj
dG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFNl
bGVjdGlvbihib29sJiBtaXNzcGVsbGVkLCBib29sJiB1bmdyYW1tYXRpY2FsKQogewotI2lmIFBM
QVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJV
SUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBy
ZXR1cm4gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBmcmFtZSgpLT5zZWxlY3Rpb24oKS0+
dG9Ob3JtYWxpemVkUmFuZ2UoKSkuZ3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxS
YW5nZShpc0dyYW1tYXJDaGVja2luZ0VuYWJsZWQoKSwgbWlzc3BlbGxlZCwgdW5ncmFtbWF0aWNh
bCk7CiAjZWxzZQogICAgIG1pc3NwZWxsZWQgPSBpc1NlbGVjdGlvbk1pc3NwZWxsZWQoKTsKQEAg
LTIwNjAsNyArMjA1NSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3Jh
bW1hcihjb25zdCBWaXNpYmxlU2VsZWN0aW9uICZtb3ZpbmdTZWxlY3RpCiAKIHZvaWQgRWRpdG9y
OjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9u
ICZ3b3JkU3RhcnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbkFmdGVyVHlwaW5n
KQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYm
ICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVD
S0lORykKICNpZiBTVVBQT1JUX0FVVE9DT1JSRUNUSU9OX1BBTkVMCiAgICAgLy8gQXBwbHkgcGVu
ZGluZyBhdXRvY29ycmVjdGlvbiBiZWZvcmUgbmV4dCByb3VuZCBvZiBzcGVsbCBjaGVja2luZy4K
ICAgICBib29sIGRvQXBwbHlDb3JyZWN0aW9uID0gdHJ1ZTsKQEAgLTIwODIsMTIgKzIwNzcsMTQg
QEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGluZ3NBZnRlclR5cGluZ1RvV29yZChjb25zdCBW
aXNpYmxlUG9zaXRpb24gJndvcmRTdGFydCwKICAgICBpZiAoaXNDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKSkKICAgICAgICAgdGV4dENoZWNraW5nT3B0aW9ucyB8PSBNYXJrU3BlbGxp
bmc7CiAKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAgaWYgKGlzQXV0
b21hdGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkKICAgICAgICAgfHwgaXNBdXRvbWF0aWNM
aW5rRGV0ZWN0aW9uRW5hYmxlZCgpCiAgICAgICAgIHx8IGlzQXV0b21hdGljRGFzaFN1YnN0aXR1
dGlvbkVuYWJsZWQoKQogICAgICAgICB8fCBpc0F1dG9tYXRpY1RleHRSZXBsYWNlbWVudEVuYWJs
ZWQoKQogICAgICAgICB8fCAoKHRleHRDaGVja2luZ09wdGlvbnMgJiBNYXJrU3BlbGxpbmcpICYm
IGlzQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uRW5hYmxlZCgpKSkKICAgICAgICAgdGV4dENo
ZWNraW5nT3B0aW9ucyB8PSBQZXJmb3JtUmVwbGFjZW1lbnQ7CisjZW5kaWYKIAogICAgIGlmICgh
dGV4dENoZWNraW5nT3B0aW9ucyAmIChNYXJrU3BlbGxpbmcgfCBQZXJmb3JtUmVwbGFjZW1lbnQp
KQogICAgICAgICByZXR1cm47CkBAIC0yMTc2LDEyICsyMTczLDkgQEAgdm9pZCBFZGl0b3I6Om1h
cmtNaXNzcGVsbGluZ3NPckJhZEdyYW1tYXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0
aW9uLCBib28KICAgICBpZiAoY2hlY2tTcGVsbGluZykKICAgICAgICAgY2hlY2tlci5tYXJrQWxs
TWlzc3BlbGxpbmdzKGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgZWxzZSB7Ci0jaWZkZWYg
QlVJTERJTkdfT05fVElHRVIKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0jZWxzZQor
ICAgICAgICBBU1NFUlQoV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HKTsKICAgICAgICAgaWYgKGlz
R3JhbW1hckNoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgY2hlY2tlci5tYXJrQWxsQmFk
R3JhbW1hcigpOwotI2VuZGlmCiAgICAgfSAgICAKIH0KIApAQCAtMjIwNywxNyArMjIwMSwxNCBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBz
ZWxlY3Rpb24sIFJlZlB0cjxSYW5nZT4mCiAgICAgCiB2b2lkIEVkaXRvcjo6bWFya0JhZEdyYW1t
YXIoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogewotI2lmbmRlZiBCVUlMRElO
R19PTl9USUdFUgorICAgIEFTU0VSVChXVEZfVVNFX0dSQU1NQVJfQ0hFQ0tJTkcpOwogICAgIFJl
ZlB0cjxSYW5nZT4gZmlyc3RNaXNzcGVsbGluZ1JhbmdlOwogICAgIG1hcmtNaXNzcGVsbGluZ3NP
ckJhZEdyYW1tYXIoc2VsZWN0aW9uLCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKLSNl
bHNlCi0gICAgVU5VU0VEX1BBUkFNKHNlbGVjdGlvbik7Ci0jZW5kaWYKIH0KIAotI2lmIFBMQVRG
T1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX0xFT1BBUkQpCiB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdy
YW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlvbnMsIFJh
bmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKQogeworI2lmIFVTRShVTklG
SUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAgLy8gVGhlcmUgc2hvdWxkbid0IGJlIHBlbmRpbmcgYXV0
b2NvcnJlY3Rpb24gYXQgdGhpcyBtb21lbnQuCiAgICAgQVNTRVJUKCFtX2NvcnJlY3Rpb25QYW5l
bEluZm8ucmFuZ2VUb0JlUmVwbGFjZWQpOwogCkBAIC0yMjc4LDYgKzIyNjksNyBAQCB2b2lkIEVk
aXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tp
bmdPcHRpb25zIHRleHRDaAogICAgIGlmIChzaG91bGRTaG93Q29ycmVjdGlvblBhbmVsKQogICAg
ICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOwogICAgIGlm
IChzaG91bGRQZXJmb3JtUmVwbGFjZW1lbnQpIHsKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQ
TEFDRU1FTlQpCiAgICAgICAgIGlmIChpc0F1dG9tYXRpY0xpbmtEZXRlY3Rpb25FbmFibGVkKCkp
CiAgICAgICAgICAgICBjaGVja2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVMaW5rOwogICAg
ICAgICBpZiAoaXNBdXRvbWF0aWNRdW90ZVN1YnN0aXR1dGlvbkVuYWJsZWQoKSkKQEAgLTIyODgs
NiArMjI4MCw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1h
ckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMgdGV4dENoCiAgICAgICAgICAgICBjaGVja2lu
Z1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVSZXBsYWNlbWVudDsKICAgICAgICAgaWYgKHNob3Vs
ZE1hcmtTcGVsbGluZyAmJiBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkK
ICAgICAgICAgICAgIGNoZWNraW5nVHlwZXMgfD0gVGV4dENoZWNraW5nVHlwZUNvcnJlY3Rpb247
CisjZW5kaWYKICAgICB9CiAgICAgdGV4dENoZWNrZXIoKS0+Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
cGFyYWdyYXBoLnRleHRDaGFyYWN0ZXJzKCksIHBhcmFncmFwaC50ZXh0TGVuZ3RoKCksIGNoZWNr
aW5nVHlwZXMsIHJlc3VsdHMpOwogCkBAIC0yNDU2LDEwICsyNDQ5LDE3IEBAIHZvaWQgRWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09w
dGlvbnMgdGV4dENoCiAgICAgICAgICAgICBtX2ZyYW1lLT5zZWxlY3Rpb24oKS0+bW9kaWZ5KFNl
bGVjdGlvbkNvbnRyb2xsZXI6OkFsdGVyYXRpb25Nb3ZlLCBEaXJlY3Rpb25Gb3J3YXJkLCBDaGFy
YWN0ZXJHcmFudWxhcml0eSk7CiAgICAgICAgIH0KICAgICB9CisjZWxzZQorICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIFVOVVNFRF9QQVJBTSh0ZXh0Q2hlY2tpbmdPcHRpb25zKTsKKyAg
ICBVTlVTRURfUEFSQU0oc3BlbGxpbmdSYW5nZSk7CisgICAgVU5VU0VEX1BBUkFNKGdyYW1tYXJS
YW5nZSk7CisjZW5kaWYgLy8gVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0KIAogdm9pZCBF
ZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRT
dHJpbmcpCiB7CisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBpZiAocmVwbGFj
ZWRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTI0NzgsMTMgKzI0Nzgs
MTYgQEAgdm9pZCBFZGl0b3I6OmNoYW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgcmVwbGFjZWRTdHJpbmcpCiAjaWYgU1VQUE9SVF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAg
IGNoYW5nZWRSYW5nZS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS0+bWFya2VycygpLT5h
ZGRNYXJrZXIoY2hhbmdlZFJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2lu
Z0V4ZW1wdGlvbik7CiAjZW5kaWYKKyNlbHNlCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cisg
ICAgVU5VU0VEX1BBUkFNKHJlcGxhY2VkU3RyaW5nKTsKKyNlbmRpZiAvLyBVU0UoVU5JRklFRF9U
RVhUX0NIRUNLSU5HKQogfQogCi0jZW5kaWYKIAogdm9pZCBFZGl0b3I6Om1hcmtNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9u
LCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0
aW9uKQogewotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIp
ICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9D
SEVDS0lORykKICAgICBpZiAoIWlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKICAgICBUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaGVja2luZ09wdGlv
bnMgPSBNYXJrU3BlbGxpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAppbmRleCA1ZmI0OGM1ZDA1
NmM1NTA5ZDdkYjJjNTMzN2I5ZmRjMzg4Y2I1OTYyLi4yNWU3MzVlOGEzNzUxZjRiODUxZDQxOThi
ZTIzNDUyZDcyYjRkMmM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKQEAgLTM2LDYgKzM2LDcg
QEAKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaW5kT3B0aW9u
cy5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJUZXh0Q2hl
Y2tpbmcuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJXcml0aW5nRGlyZWN0aW9uLmgiCkBAIC0yMjIsNyArMjIzLDcgQEAgcHVi
bGljOgogICAgIHZvaWQgbWFya01pc3NwZWxsaW5ncyhjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwg
UmVmUHRyPFJhbmdlPiYgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsKICAgICB2b2lkIG1hcmtCYWRH
cmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKICAgICB2b2lkIG1hcmtNaXNzcGVsbGlu
Z3NBbmRCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNwZWxsaW5nU2VsZWN0aW9u
LCBib29sIG1hcmtHcmFtbWFyLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBncmFtbWFyU2VsZWN0
aW9uKTsKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShBVVRPTUFUSUNfVEVYVF9S
RVBMQUNFTUVOVCkKICAgICB2b2lkIHVwcGVyY2FzZVdvcmQoKTsKICAgICB2b2lkIGxvd2VyY2Fz
ZVdvcmQoKTsKICAgICB2b2lkIGNhcGl0YWxpemVXb3JkKCk7CkBAIC0yMzksNiArMjQwLDggQEAg
cHVibGljOgogICAgIHZvaWQgdG9nZ2xlQXV0b21hdGljVGV4dFJlcGxhY2VtZW50KCk7CiAgICAg
Ym9vbCBpc0F1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbkVuYWJsZWQoKTsKICAgICB2b2lkIHRv
Z2dsZUF1dG9tYXRpY1NwZWxsaW5nQ29ycmVjdGlvbigpOworI2VuZGlmCisKICAgICBlbnVtIFRl
eHRDaGVja2luZ09wdGlvbkZsYWdzIHsKICAgICAgICAgTWFya1NwZWxsaW5nID0gMSA8PCAwLAog
ICAgICAgICBNYXJrR3JhbW1hciA9IDEgPDwgMSwKQEAgLTI0OSw3ICsyNTIsNyBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIG1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nT3B0aW9ucywgUmFuZ2UqIHNwZWxsaW5nUmFuZ2UsIFJhbmdlKiBncmFtbWFyUmFu
Z2UpOwogICAgIHZvaWQgY2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcoY29uc3QgU3RyaW5nJiBy
ZXBsYWNlZFN0cmluZyk7Ci0jZW5kaWYKKwogICAgIHZvaWQgYWR2YW5jZVRvTmV4dE1pc3NwZWxs
aW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24gPSBmYWxzZSk7CiAgICAgdm9pZCBzaG93U3Bl
bGxpbmdHdWVzc1BhbmVsKCk7CiAgICAgYm9vbCBzcGVsbGluZ1BhbmVsSXNTaG93aW5nKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggZTU1
NTNmZDEwMjkyZmU1ODdmMGUyMzMwZDE2NWU4ZTE3NzI4ZTQxZC4uMDA5YzgwNzQxNDMxNThkYzY5
NjI0ZDk5ZTY2ZmFiYTBiMzgyZDJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIFN0cmluZyBUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5nKGludCYgZmlyc3RNaXNzcGVsbGluZ09mZnNl
dCwgYm9vCiAKIFN0cmluZyBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3NwZWxsaW5n
T3JCYWRHcmFtbWFyKGJvb2wgY2hlY2tHcmFtbWFyLCBib29sJiBvdXRJc1NwZWxsaW5nLCBpbnQm
IG91dEZpcnN0Rm91bmRPZmZzZXQsIEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWwpCiB7
Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRl
ZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5H
KQogICAgIFN0cmluZyBmaXJzdEZvdW5kSXRlbTsKICAgICBTdHJpbmcgbWlzc3BlbGxlZFdvcmQ7
CiAgICAgU3RyaW5nIGJhZEdyYW1tYXJQaHJhc2U7CkBAIC0zNTAsMTIgKzM1MCwxMiBAQCBTdHJp
bmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihi
b29sIGNoZWNrR3JhbW1hciwgYgogICAgIFVOVVNFRF9QQVJBTShvdXRGaXJzdEZvdW5kT2Zmc2V0
KTsKICAgICBVTlVTRURfUEFSQU0ob3V0R3JhbW1hckRldGFpbCk7CiAgICAgcmV0dXJuICIiOwot
I2VuZGlmCisjZW5kaWYgLy8gVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0KIAogaW50IFRl
eHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3Jh
bW1hckRldGFpbD4mIGdyYW1tYXJEZXRhaWxzLCBpbnQgYmFkR3JhbW1hclBocmFzZUxvY2F0aW9u
LCBpbnQgLypiYWRHcmFtbWFyUGhyYXNlTGVuZ3RoKi8sIGludCBzdGFydE9mZnNldCwgaW50IGVu
ZE9mZnNldCwgYm9vbCBtYXJrQWxsKQogewotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgorI2lm
IFVTRShHUkFNTUFSX0NIRUNLSU5HKQogICAgIC8vIEZvdW5kIHNvbWUgYmFkIGdyYW1tYXIuIEZp
bmQgdGhlIGVhcmxpZXN0IGRldGFpbCByYW5nZSB0aGF0IHN0YXJ0cyBpbiBvdXIgc2VhcmNoIHJh
bmdlIChpZiBhbnkpLgogICAgIC8vIE9wdGlvbmFsbHkgYWRkIGEgRG9jdW1lbnRNYXJrZXIgZm9y
IGVhY2ggZGV0YWlsIGluIHRoZSByYW5nZS4KICAgICBpbnQgZWFybGllc3REZXRhaWxMb2NhdGlv
blNvRmFyID0gLTE7CkBAIC00MDIsNyArNDAyLDcgQEAgaW50IFRleHRDaGVja2luZ0hlbHBlcjo6
ZmluZEZpcnN0R3JhbW1hckRldGFpbChjb25zdCBWZWN0b3I8R3JhbW1hckRldGFpbD4mIGdyYW0K
IAogU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFkR3JhbW1hcihHcmFtbWFy
RGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLCBpbnQmIG91dEdyYW1tYXJQaHJhc2VPZmZzZXQsIGJv
b2wgbWFya0FsbCkKIHsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBBU1NFUlQoV1RG
X1VTRV9HUkFNTUFSX0NIRUNLSU5HKTsKICAgICAvLyBJbml0aWFsaXplIG91dCBwYXJhbWV0ZXJz
OyB0aGVzZSB3aWxsIGJlIHVwZGF0ZWQgaWYgd2UgZmluZCBzb21ldGhpbmcgdG8gcmV0dXJuLgog
ICAgIG91dEdyYW1tYXJEZXRhaWwubG9jYXRpb24gPSAtMTsKICAgICBvdXRHcmFtbWFyRGV0YWls
Lmxlbmd0aCA9IDA7CkBAIC00NTgsMTggKzQ1OCwxMiBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVs
cGVyOjpmaW5kRmlyc3RCYWRHcmFtbWFyKEdyYW1tYXJEZXRhaWwmIG91dEdyYW1tYXJEZXRhaWws
CiAgICAgfQogICAgIAogICAgIHJldHVybiBmaXJzdEJhZEdyYW1tYXJQaHJhc2U7Ci0jZWxzZQot
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIFVOVVNFRF9QQVJBTShvdXRHcmFtbWFyRGV0
YWlsKTsKLSAgICBVTlVTRURfUEFSQU0ob3V0R3JhbW1hclBocmFzZU9mZnNldCk7Ci0gICAgVU5V
U0VEX1BBUkFNKG1hcmtBbGwpOwotI2VuZGlmCiB9CiAKIAogYm9vbCBUZXh0Q2hlY2tpbmdIZWxw
ZXI6OmlzVW5ncmFtbWF0aWNhbChWZWN0b3I8U3RyaW5nPiYgZ3Vlc3Nlc1ZlY3RvcikgY29uc3QK
IHsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBBU1NFUlQoV1RGX1VTRV9HUkFNTUFS
X0NIRUNLSU5HKTsKICAgICBpZiAoIW1fY2xpZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTUxMSwxNiArNTA1LDExIEBAIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1h
dGljYWwoVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXNWZWN0b3IpIGNvbnN0CiAgICAgbV9jbGllbnQt
PnVwZGF0ZVNwZWxsaW5nVUlXaXRoR3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFt
bWFyRGV0YWlsKTsKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKLSNlbHNlCi0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgVU5VU0VEX1BBUkFNKGd1ZXNzZXNWZWN0b3IpOwotICAgIHJldHVy
biB0cnVlOwotI2VuZGlmCiB9CiAKIFZlY3RvcjxTdHJpbmc+IFRleHRDaGVja2luZ0hlbHBlcjo6
Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxSYW5nZShib29sIGNoZWNrR3JhbW1h
ciwgYm9vbCYgbWlzc3BlbGxlZCwgYm9vbCYgdW5ncmFtbWF0aWNhbCkgY29uc3QKIHsKLSNpZiBQ
TEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChC
VUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAg
VmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICBFeGNlcHRpb25Db2RlIGVjOwogICAgIG1pc3Nw
ZWxsZWQgPSBmYWxzZTsKQEAgLTU3OCw3ICs1NjcsNyBAQCBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hl
Y2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9v
bAogICAgIFVOVVNFRF9QQVJBTShtaXNzcGVsbGVkKTsKICAgICBVTlVTRURfUEFSQU0odW5ncmFt
bWF0aWNhbCk7CiAgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7Ci0jZW5kaWYKKyNlbmRpZiAv
LyBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogfQogCiAKQEAgLTU5MiwxNSArNTgxLDEyIEBA
IHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJrQWxsTWlzc3BlbGxpbmdzKFJlZlB0cjxSYW5n
ZT4mIGZpcnN0TWlzc3BlbGxpbmdSYW5nCiAKIHZvaWQgVGV4dENoZWNraW5nSGVscGVyOjptYXJr
QWxsQmFkR3JhbW1hcigpCiB7Ci0jaWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgLy8gVXNl
IHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBmaW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhl
IHJldHVybiB2YWx1ZSBhbmQgIm91dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KKyAgICBB
U1NFUlQoV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HKTsKKyAgICAvLyBVc2UgdGhlICJtYXJrQWxs
IiBmZWF0dXJlIG9mIG9maW5kRmlyc3RCYWRHcmFtbWFyLiBJZ25vcmUgdGhlIHJldHVybiB2YWx1
ZSBhbmQgIm91dCBwYXJhbWV0ZXJzIjsgYWxsIHdlIG5lZWQgdG8KICAgICAvLyBkbyBpcyBtYXJr
IGV2ZXJ5IGluc3RhbmNlLgogICAgIEdyYW1tYXJEZXRhaWwgaWdub3JlZEdyYW1tYXJEZXRhaWw7
CiAgICAgaW50IGlnbm9yZWRPZmZzZXQ7CiAgICAgZmluZEZpcnN0QmFkR3JhbW1hcihpZ25vcmVk
R3JhbW1hckRldGFpbCwgaWdub3JlZE9mZnNldCwgdHJ1ZSk7Ci0jZWxzZQotICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9FbXB0eUNsaWVudHMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVu
dHMuaAppbmRleCAzYjBhZDJlN2FkNjRiNzA5NTkzYzhkMTNmMzA0MThkY2NlNTFmMGEwLi4yYzEw
ODNjNTE4NjcyYjQyMmZiMDUxY2FkOTc2NzU3OTc0MDgyNWJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0VtcHR5Q2xpZW50cy5oCkBAIC00MDYsNyArNDA2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwg
U3RyaW5nIGdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYpIHsgcmV0dXJuIFN0cmluZygpOyB9CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrR3JhbW1h
ck9mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50LCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQq
LCBpbnQqKSB7IH0KIAotI2lmIFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05f
VElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURf
VEVYVF9DSEVDS0lORykKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoY29u
c3QgVUNoYXIqLCBpbnQsIHVpbnQ2NF90LCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiYpIHsg
fTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRDaGVj
a2VyQ2xpZW50LmgKaW5kZXggYWNhYTAyY2Y2MmEwNzBmOTBjZjk0YzZlMTI2YzVkMGQ2N2JmYmI4
ZS4uOGFiYmVkNDEyMzFkNjgxNjg1NmIxZjc3ZDQ3YTNiYWYxMWQxNGU0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaApAQCAtMjgsNiAr
MjgsOCBAQAogI2lmbmRlZiBUZXh0Q2hlY2tlckNsaWVudF9oCiAjZGVmaW5lIFRleHRDaGVja2Vy
Q2xpZW50X2gKIAorI2luY2x1ZGUgIlRleHRDaGVja2luZy5oIgorCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC03MCw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgY2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiwgaW50IGxlbmd0aCwgaW50KiBtaXNzcGVs
bGluZ0xvY2F0aW9uLCBpbnQqIG1pc3NwZWxsaW5nTGVuZ3RoKSA9IDA7CiAgICAgdmlydHVhbCBT
dHJpbmcgZ2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3Ry
aW5nJiBtaXNzcGVsbGVkV29yZCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJP
ZlN0cmluZyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIFZlY3RvcjxHcmFtbWFyRGV0YWlsPiYs
IGludCogYmFkR3JhbW1hckxvY2F0aW9uLCBpbnQqIGJhZEdyYW1tYXJMZW5ndGgpID0gMDsKLSNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAg
ICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLCB1aW50NjRfdCBjaGVja2luZ1R5cGVzLCBWZWN0b3I8VGV4dENoZWNraW5nUmVz
dWx0PiYgcmVzdWx0cykgPSAwOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRDaGVja2luZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMmZiODI0M2IyZGRmMWFiN2RhOWZlNTA1
MmUwYTIyYmE1NWM0YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90ZXh0L1RleHRDaGVja2luZy5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KGMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIAorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKiAKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqIAorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFRleHRDaGVj
a2luZ19oCisjZGVmaW5lIFRleHRDaGVja2luZ19oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
I2lmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKQorI2RlZmluZSBXVEZfVVNFX0dSQU1NQVJf
Q0hFQ0tJTkcgMQorI2VuZGlmCisKKyNpZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxE
SU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2RlZmluZSBX
VEZfVVNFX1VOSUZJRURfVEVYVF9DSEVDS0lORyAxCisjZGVmaW5lIFdURl9VU0VfQVVUT01BVElD
X1RFWFRfUkVQTEFDRU1FTlQgMQorI2VuZGlmCisKK30KKworI2VuZGlmIC8vIFRleHRDaGVja2lu
Z19oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>86749</attachid>
            <date>2011-03-23 23:32:12 -0700</date>
            <delta_ts>2011-03-23 23:33:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-56818-20110324153209.patch</filename>
            <type>text/plain</type>
            <size>28316</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODE4NTEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MWQxZTc5Y2UwMjEzMmQw
YzZjYmNmMWM3MDQyZDA3NmEyMTc3N2FmLi41ZTJlOWNjZjcwY2FmZTA1NDI1MTZkMzY2NzI3YmY2
YmI4N2YwYTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDcgQEAKKzIwMTEtMDMtMjMgIE1PUklU
QSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgU3BlbGxjaGVjayBmZWF0dXJlIHNwZWNpZmljIHN5bWJv
bHMgc2hvdWxkIGJlIGRlZmluZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD01NjgxOAorICAgICAgICAKKyAgICAgICAgKiBJbnRyb2R1Y2VkIFVTRShV
TklGSUVEX1RFWFRfQ0hFQ0tJTkcpLCBVU0UoR1JBTU1BUl9DSEVDS0lORykgYW5kIFVTRShBVVRP
TUFUSUNfVEVYVF9SRVBMQUNFTUVOVCkKKyAgICAgICAgKiBSZXBsYWNlZCBhIHBhcnQgb2Ygb2Yg
QlVJTERJTkdfT05fKiBjb25kaXRpb25hbHMgd2l0aCB0aGVtLgorCisgICAgICAgIE5vdGUgdGhh
dCBzbWFsbCBhbW91bnQgb2YgY29kZSBwYXRoIG9uIEVkaXRvci5jcHAgaXMgbm93IGNvbXBpbGVk
IHVuZGVyIFVTRShHUkFNTUFSX0NIRUNLSU5HKQorICAgICAgICBiZWNhdXNlIHRoZXNlIGNvZGUg
cGF0aCBpcyBhbHJlYWR5IGJ1aWx0IHVuZGVyIG5vbi1NYWMgcG9ydHMgYW5kCisgICAgICAgIEtl
ZXBpbmcgdGhlbSBidWlsZGFibGUgZm9yIHN1Y2ggcGxhdGZvcm1zIHJlZHVjZXMgdGhlIGJ1aWxk
IGJyZWFrYWdlIHJpc2suCisgICAgICAgIFRoZXNlIHBhdGggaXMgZ3VhcmRlZCBieSBTZXR0aW5n
cyB0aHVzIHNob3VsZCBuZXZlciBnZXQgcmVhY2hlZC4KKworICAgICAgICBObyBuZXcgdGVzdHMu
IE5vIGJlaGF2aW9yYWwgY2hhbmdlLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAg
ICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9q
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmFkdmFuY2VU
b05leHRNaXNzcGVsbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6OmlzU2VsZWN0aW9u
VW5ncmFtbWF0aWNhbCk6CisgICAgICAgIChXZWJDb3JlOjpFZGl0b3I6Omd1ZXNzZXNGb3JVbmdy
YW1tYXRpY2FsU2VsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6Z3Vlc3Nlc0Zv
ck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6
RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6bWFya0JhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9y
OjptYXJrQWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRvcjo6Y2hhbmdlQmFja1RvUmVwbGFjZWRTdHJpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcik6CisgICAgICAgICog
ZWRpdGluZy9FZGl0b3IuaDoKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdE1pc3Nw
ZWxsaW5nT3JCYWRHcmFtbWFyKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBl
cjo6ZmluZEZpcnN0R3JhbW1hckRldGFpbCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0Q2hlY2tp
bmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENo
ZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGljYWwpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dENo
ZWNraW5nSGVscGVyOjpndWVzc2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIp
OgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS90
ZXh0L1RleHRDaGVja2VyQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0Q2hl
Y2tpbmcuaDogQWRkZWQuCisKIDIwMTEtMDMtMjMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQppbmRleCA5YmY1N2IxNDdjMmRhZDU0NzNiNTg0YWM4Y2QyNTc2NmJmYzE2OTFlLi42NzZm
MzA0YjA2Njg5NGU4ZjBjN2IwMjc0NzU3NDYyMmM0ZTY3NDAxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC05MTAsNiArOTEwLDcgQEAKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1RleHRCcmVha0l0
ZXJhdG9yLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dEJyZWFrSXRlcmF0b3JJ
bnRlcm5hbElDVS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xp
ZW50LmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dENoZWNraW5nLmgnLAogICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4dENvZGVjLmgnLAogICAgICAgICAgICAgJ3BsYXRm
b3JtL3RleHQvVGV4dENvZGVjSUNVLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvVGV4
dENvZGVjTGF0aW4xLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8g
Yi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwppbmRleCAyYTkzNDA3YjdlMzZiNzEwMmY5MjU4
ZGI5ZTZmOGM0NzE3YTNmZDIxLi4wZWY4ZWRhZmQ0ZDljNDk3ZTM1NGI4NDhlNTRkYmM4MTdjZmVi
ZTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtMTk0Nyw2ICsxOTQ3LDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vTGVuZ3RoLmggXAogICAgIHBsYXRmb3JtL3RleHQvTGluZUVuZGluZy5oIFwK
ICAgICBwbGF0Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmggXAorICAgIHBsYXRmb3JtL3Rl
eHQvVGV4dENoZWNraW5nLmggXAogICAgIHBsYXRmb3JtL0xpbmtIYXNoLmggXAogICAgIHBsYXRm
b3JtL0xvZ2dpbmcuaCBcCiAgICAgcGxhdGZvcm0vTGFuZ3VhZ2UuaCBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IDVlOTdiYjJlYmY0NzE3MjA5
NTEyOGVlY2ZlMTk3NzRjZTMwMTJjZTAuLjdkNjg3OGFhZTcyMDA3NzM4ODY3YTcxZDM3MGNjYzNl
OGZjMmNkMzQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNv
cmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCkBAIC0zMDU2NSw2ICszMDU2NSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJCTxG
aWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cdGV4dFxUZXh0Q2hlY2tpbmcuaCIK
KwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXHRleHRcVGV4dENvZGVjLmNwcCIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ZDFi
Y2ViZmZkN2E3ZTI2ZjMxNDlhODY0ZWU4YTE2MzU0YTdjM2I3Li4xNjg3MWI3ZTMwNjY1NjNlNTRj
OTIxMTkwOTRhMDU2NDE3MTE4NmIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zMjA1LDYgKzMyMDUsNyBAQAogCQlBNzc5Nzky
ODBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3OTc5MjQwRDZCOUU2NDAwMzg1MUI5IC8qIEpT
SW1hZ2VEYXRhLmNwcCAqLzsgfTsKIAkJQTc3OTc5MjkwRDZCOUU2NDAwMzg1MUI5IC8qIEpTSW1h
Z2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
Nzc5NzkyNTBENkI5RTY0MDAzODUxQjkgLyogSlNJbWFnZURhdGEuaCAqLzsgfTsKIAkJQTc3QjQx
QTAxMkU2NzVBOTAwNTQzNDNEIC8qIFRleHRFdmVudElucHV0VHlwZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc3QjQxOUYxMkU2NzVBOTAwNTQzNDNE
IC8qIFRleHRFdmVudElucHV0VHlwZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CisJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tp
bmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3N0Qw
MDExMTMzQjBBRUIwMEQ2NjU4QyAvKiBUZXh0Q2hlY2tpbmcuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNzg0OTQxQjBCNUZFNTA3MDAxRTIzN0Eg
LyogQ2xpcGJvYXJkLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwICovOyB9Owog
CQlBNzhGRTEzQjEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3OEZFMTM5MTIzNjZCMTAwMEFD
RThEMCAvKiBTcGVsbENoZWNrZXIuY3BwICovOyB9OwogCQlBNzhGRTEzQzEyMzY2QjEwMDBBQ0U4
RDAgLyogU3BlbGxDaGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzhGRTEzQTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVja2VyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTk2OTUsNiAr
OTY5Niw3IEBACiAJCUE3Nzk3OTI0MEQ2QjlFNjQwMDM4NTFCOSAvKiBKU0ltYWdlRGF0YS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0ltYWdlRGF0YS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3Nzk3OTI1MEQ2QjlFNjQwMDM4NTFCOSAvKiBK
U0ltYWdlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0ltYWdlRGF0
YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzdCNDE5RjEyRTY3NUE5MDA1NDM0
M0QgLyogVGV4dEV2ZW50SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFRleHRFdmVudElucHV0VHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlB
NzdEMDAxMTEzM0IwQUVCMDBENjY1OEMgLyogVGV4dENoZWNraW5nLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFRleHRDaGVja2luZy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGlwYm9hcmQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlBNzhGRTEzOTEyMzY2QjEwMDBBQ0U4RDAgLyogU3BlbGxDaGVj
a2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNwZWxsQ2hlY2tl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3OEZFMTNBMTIzNjZCMTAwMEFD
RThEMCAvKiBTcGVsbENoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBs
aWNpdEZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IGZpbGVFbmNvZGluZyA9IDQ7IHBhdGggPSBT
cGVsbENoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3NzU4LDYgKzE3
NzYwLDcgQEAKIAkJCQlCMkMzREEwNzBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dEJyZWFrSXRlcmF0
b3JJQ1UuY3BwICovLAogCQkJCUIyQzNEQTA4MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0QnJlYWtJ
dGVyYXRvckludGVybmFsSUNVLmggKi8sCiAJCQkJQTcxNTFCRDcxMkYxNTU4RjAwNUEwRjY0IC8q
IFRleHRDaGVja2VyQ2xpZW50LmggKi8sCisJCQkJQTc3RDAwMTExMzNCMEFFQjAwRDY2NThDIC8q
IFRleHRDaGVja2luZy5oICovLAogCQkJCUIyQzNEQTA5MEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0
Q29kZWMuY3BwICovLAogCQkJCUIyQzNEQTBBMEQwMDZDMUQwMEVGNkYyNiAvKiBUZXh0Q29kZWMu
aCAqLywKIAkJCQkyNkU5OEEwRjEzMEE5RkNBMDA4RUI3QjIgLyogVGV4dENvZGVjQVNDSUlGYXN0
UGF0aC5oICovLApAQCAtMjI0MzgsNiArMjI0NDEsNyBAQAogCQkJCUIyQzNEQTM4MEQwMDZDMUQw
MEVGNkYyNiAvKiBUZXh0QnJlYWtJdGVyYXRvckludGVybmFsSUNVLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNzE1MUJEODEyRjE1NThGMDA1QTBGNjQgLyogVGV4dENoZWNrZXJDbGllbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUE3REJGOERFMTI3NjkxOUMwMDZCNjAwOCAvKiBUZXh0Q2hlY2tpbmdI
ZWxwZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3N0QwMDEyMTMzQjBBRUIwMEQ2NjU4QyAvKiBU
ZXh0Q2hlY2tpbmcuaCBpbiBIZWFkZXJzICovLAogCQkJCUIyQzNEQTNBMEQwMDZDMUQwMEVGNkYy
NiAvKiBUZXh0Q29kZWMuaCBpbiBIZWFkZXJzICovLAogCQkJCTI2RTk4QTEwMTMwQTlGQ0EwMDhF
QjdCMiAvKiBUZXh0Q29kZWNBU0NJSUZhc3RQYXRoLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMz
REEzQzBEMDA2QzFEMDBFRjZGMjYgLyogVGV4dENvZGVjSUNVLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCBiOGM5NWNjZTU4YWM1N2FjMWQ5OTk3NmY0ZGY4
NmE2YzhjYmUwZjI4Li5hMjJhNGYxNzY2YWNjM2QyNDk5MDVhZTQyYTMwNTkzZGU4MTgzZDk1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0xMzcxLDcgKzEzNzEsNyBAQCBpbnQgRWRp
dG9yOjpzcGVsbENoZWNrZXJEb2N1bWVudFRhZygpCiAgICAgcmV0dXJuIGNsaWVudCgpID8gY2xp
ZW50KCktPnNwZWxsQ2hlY2tlckRvY3VtZW50VGFnKCkgOiAwOwogfQogCi0jaWYgUExBVEZPUk0o
TUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdf
T05fTEVPUEFSRCkKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAKIHZvaWQg
RWRpdG9yOjp1cHBlcmNhc2VXb3JkKCkKIHsKQEAgLTE4MjMsMTQgKzE4MjMsMTYgQEAgdm9pZCBF
ZGl0b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVmb3JlU2VsZWN0aW9u
KQogICAgIGludCBzZWFyY2hFbmRPZmZzZXRBZnRlcldyYXAgPSBzcGVsbGluZ1NlYXJjaFJhbmdl
LT5lbmRPZmZzZXQoZWMpOwogICAgIAogICAgIGludCBtaXNzcGVsbGluZ09mZnNldCA9IDA7Ci0j
aWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmlu
ZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKLSAgICBSZWZQdHI8UmFuZ2U+IGdyYW1tYXJTZWFyY2hS
YW5nZSA9IHNwZWxsaW5nU2VhcmNoUmFuZ2UtPmNsb25lUmFuZ2UoZWMpOwotICAgIFN0cmluZyBt
aXNzcGVsbGVkV29yZDsKLSAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZTsKKyAgICBHcmFtbWFy
RGV0YWlsIGdyYW1tYXJEZXRhaWw7CiAgICAgaW50IGdyYW1tYXJQaHJhc2VPZmZzZXQgPSAwOwor
ICAgIFJlZlB0cjxSYW5nZT4gZ3JhbW1hclNlYXJjaFJhbmdlOworICAgIFN0cmluZyBiYWRHcmFt
bWFyUGhyYXNlOworICAgIFN0cmluZyBtaXNzcGVsbGVkV29yZDsKKworI2lmIFVTRShVTklGSUVE
X1RFWFRfQ0hFQ0tJTkcpCisgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hS
YW5nZS0+Y2xvbmVSYW5nZShlYyk7CiAgICAgYm9vbCBpc1NwZWxsaW5nID0gdHJ1ZTsKICAgICBp
bnQgZm91bmRPZmZzZXQgPSAwOwotICAgIEdyYW1tYXJEZXRhaWwgZ3JhbW1hckRldGFpbDsKICAg
ICBTdHJpbmcgZm91bmRJdGVtID0gVGV4dENoZWNraW5nSGVscGVyKGNsaWVudCgpLCBzcGVsbGlu
Z1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihpc0dyYW1tYXJD
aGVja2luZ0VuYWJsZWQoKSwgaXNTcGVsbGluZywgZm91bmRPZmZzZXQsIGdyYW1tYXJEZXRhaWwp
OwogICAgIGlmIChpc1NwZWxsaW5nKSB7CiAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gZm91bmRJ
dGVtOwpAQCAtMTg0MSwxNSArMTg0MywxMSBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1p
c3NwZWxsaW5nKGJvb2wgc3RhcnRCZWZvcmVTZWxlY3Rpb24pCiAgICAgfQogI2Vsc2UKICAgICBS
ZWZQdHI8UmFuZ2U+IGZpcnN0TWlzc3BlbGxpbmdSYW5nZTsKLSAgICBTdHJpbmcgbWlzc3BlbGxl
ZFdvcmQgPSBUZXh0Q2hlY2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2Up
LmZpbmRGaXJzdE1pc3NwZWxsaW5nKG1pc3NwZWxsaW5nT2Zmc2V0LCBmYWxzZSwgZmlyc3RNaXNz
cGVsbGluZ1JhbmdlKTsKLSAgICBTdHJpbmcgYmFkR3JhbW1hclBocmFzZTsKLQotI2lmbmRlZiBC
VUlMRElOR19PTl9USUdFUgotICAgIGludCBncmFtbWFyUGhyYXNlT2Zmc2V0ID0gMDsKLSAgICBH
cmFtbWFyRGV0YWlsIGdyYW1tYXJEZXRhaWw7CisgICAgbWlzc3BlbGxlZFdvcmQgPSBUZXh0Q2hl
Y2tpbmdIZWxwZXIoY2xpZW50KCksIHNwZWxsaW5nU2VhcmNoUmFuZ2UpLmZpbmRGaXJzdE1pc3Nw
ZWxsaW5nKG1pc3NwZWxsaW5nT2Zmc2V0LCBmYWxzZSwgZmlyc3RNaXNzcGVsbGluZ1JhbmdlKTsK
IAorI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5HKQogICAgIC8vIFNlYXJjaCBmb3IgYmFkIGdyYW1t
YXIgdGhhdCBvY2N1cnMgcHJpb3IgdG8gdGhlIG5leHQgbWlzc3BlbGxlZCB3b3JkIChpZiBhbnkp
Ci0gICAgUmVmUHRyPFJhbmdlPiBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1NlYXJjaFJh
bmdlLT5jbG9uZVJhbmdlKGVjKTsKKyAgICBncmFtbWFyU2VhcmNoUmFuZ2UgPSBzcGVsbGluZ1Nl
YXJjaFJhbmdlLT5jbG9uZVJhbmdlKGVjKTsKICAgICBpZiAoIW1pc3NwZWxsZWRXb3JkLmlzRW1w
dHkoKSkgewogICAgICAgICAvLyBTdG9wIGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVs
bGVkIHdvcmQKICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhcnMoZ3JhbW1hclNlYXJjaFJh
bmdlLmdldCgpKTsKQEAgLTE4NjksNyArMTg2Nyw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNlbGVjdGlvbikKICAgICAgICAgLy8gZ29p
bmcgdW50aWwgdGhlIGVuZCBvZiB0aGUgdmVyeSBmaXJzdCBjaHVuayB3ZSB0ZXN0ZWQgaXMgZmFy
IGVub3VnaAogICAgICAgICBzcGVsbGluZ1NlYXJjaFJhbmdlLT5zZXRFbmQoc2VhcmNoRW5kTm9k
ZUFmdGVyV3JhcCwgc2VhcmNoRW5kT2Zmc2V0QWZ0ZXJXcmFwLCBlYyk7CiAgICAgICAgIAotI2lm
IFBMQVRGT1JNKE1BQykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVk
KEJVSUxESU5HX09OX0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAg
ICAgICAgZ3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5n
ZShlYyk7CiAgICAgICAgIGZvdW5kSXRlbSA9IFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwg
c3BlbGxpbmdTZWFyY2hSYW5nZSkuZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoaXNH
cmFtbWFyQ2hlY2tpbmdFbmFibGVkKCksIGlzU3BlbGxpbmcsIGZvdW5kT2Zmc2V0LCBncmFtbWFy
RGV0YWlsKTsKICAgICAgICAgaWYgKGlzU3BlbGxpbmcpIHsKQEAgLTE4ODIsNyArMTg4MCw3IEBA
IHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBzdGFydEJlZm9yZVNl
bGVjdGlvbikKICNlbHNlCiAgICAgICAgIG1pc3NwZWxsZWRXb3JkID0gVGV4dENoZWNraW5nSGVs
cGVyKGNsaWVudCgpLCBzcGVsbGluZ1NlYXJjaFJhbmdlKS5maW5kRmlyc3RNaXNzcGVsbGluZyht
aXNzcGVsbGluZ09mZnNldCwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAKLSNpZm5k
ZWYgQlVJTERJTkdfT05fVElHRVIKKyNpZiBVU0UoR1JBTU1BUl9DSEVDS0lORykKICAgICAgICAg
Z3JhbW1hclNlYXJjaFJhbmdlID0gc3BlbGxpbmdTZWFyY2hSYW5nZS0+Y2xvbmVSYW5nZShlYyk7
CiAgICAgICAgIGlmICghbWlzc3BlbGxlZFdvcmQuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAv
LyBTdG9wIGxvb2tpbmcgYXQgc3RhcnQgb2YgbmV4dCBtaXNzcGVsbGVkIHdvcmQKQEAgLTE4OTgs
OSArMTg5Niw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxpbmcoYm9vbCBz
dGFydEJlZm9yZVNlbGVjdGlvbikKICAgICB9CiAgICAgCiAgICAgaWYgKCFiYWRHcmFtbWFyUGhy
YXNlLmlzRW1wdHkoKSkgewotI2lmZGVmIEJVSUxESU5HX09OX1RJR0VSCi0gICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotI2Vsc2UKKyAgICAgICAgQVNTRVJUKFdURl9VU0VfR1JBTU1BUl9D
SEVDS0lORyk7CiAgICAgICAgIC8vIFdlIGZvdW5kIGJhZCBncmFtbWFyLiBTaW5jZSB3ZSBvbmx5
IHNlYXJjaGVkIGZvciBiYWQgZ3JhbW1hciB1cCB0byB0aGUgZmlyc3QgbWlzc3BlbGxlZCB3b3Jk
LCB0aGUgYmFkIGdyYW1tYXIKICAgICAgICAgLy8gdGFrZXMgcHJlY2VkZW5jZSBhbmQgd2UgaWdu
b3JlIGFueSBwb3RlbnRpYWwgbWlzc3BlbGxlZCB3b3JkLiBTZWxlY3QgdGhlIGdyYW1tYXIgZGV0
YWlsLCB1cGRhdGUgdGhlIHNwZWxsaW5nCiAgICAgICAgIC8vIHBhbmVsLCBhbmQgc3RvcmUgYSBt
YXJrZXIgc28gd2UgZHJhdyB0aGUgZ3JlZW4gc3F1aWdnbGUgbGF0ZXIuCkBAIC0xOTE1LDcgKzE5
MTEsNiBAQCB2b2lkIEVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKGJvb2wgc3RhcnRC
ZWZvcmVTZWxlY3Rpb24pCiAgICAgICAgIAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxp
bmdVSVdpdGhHcmFtbWFyU3RyaW5nKGJhZEdyYW1tYXJQaHJhc2UsIGdyYW1tYXJEZXRhaWwpOwog
ICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPmFkZE1hcmtlcihiYWRHcmFt
bWFyUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpHcmFtbWFyLCBncmFtbWFyRGV0YWlsLnVz
ZXJEZXNjcmlwdGlvbik7Ci0jZW5kaWYgICAgICAgIAogICAgIH0gZWxzZSBpZiAoIW1pc3NwZWxs
ZWRXb3JkLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBXZSBmb3VuZCBhIG1pc3NwZWxsaW5nLCBi
dXQgbm90IGFueSBlYXJsaWVyIGJhZCBncmFtbWFyLiBTZWxlY3QgdGhlIG1pc3NwZWxsaW5nLCB1
cGRhdGUgdGhlIHNwZWxsaW5nIHBhbmVsLCBhbmQgc3RvcmUKICAgICAgICAgLy8gYSBtYXJrZXIg
c28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxhdGVyLgpAQCAtMTk1OCwyMyArMTk1MywyMyBA
QCBib29sIEVkaXRvcjo6aXNTZWxlY3Rpb25NaXNzcGVsbGVkKCkKIAogYm9vbCBFZGl0b3I6Omlz
U2VsZWN0aW9uVW5ncmFtbWF0aWNhbCgpCiB7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAg
ICByZXR1cm4gZmFsc2U7Ci0jZWxzZQorI2lmIFVTRShHUkFNTUFSX0NIRUNLSU5HKQogICAgIFZl
Y3RvcjxTdHJpbmc+IGlnbm9yZWRHdWVzc2VzOwogICAgIHJldHVybiBUZXh0Q2hlY2tpbmdIZWxw
ZXIoY2xpZW50KCksIGZyYW1lKCktPnNlbGVjdGlvbigpLT50b05vcm1hbGl6ZWRSYW5nZSgpKS5p
c1VuZ3JhbW1hdGljYWwoaWdub3JlZEd1ZXNzZXMpOworI2Vsc2UKKyAgICByZXR1cm4gZmFsc2U7
CiAjZW5kaWYKIH0KIAogVmVjdG9yPFN0cmluZz4gRWRpdG9yOjpndWVzc2VzRm9yVW5ncmFtbWF0
aWNhbFNlbGVjdGlvbigpCiB7Ci0jaWZkZWYgQlVJTERJTkdfT05fVElHRVIKLSAgICByZXR1cm4g
VmVjdG9yPFN0cmluZz4oKTsKLSNlbHNlCisjaWYgVVNFKEdSQU1NQVJfQ0hFQ0tJTkcpCiAgICAg
VmVjdG9yPFN0cmluZz4gZ3Vlc3NlczsKICAgICAvLyBJZ25vcmUgdGhlIHJlc3VsdCBvZiBpc1Vu
Z3JhbW1hdGljYWw7IHdlIGp1c3Qgd2FudCB0aGUgZ3Vlc3Nlcywgd2hldGhlciBvciBub3QgdGhl
cmUgYXJlIGFueQogICAgIFRleHRDaGVja2luZ0hlbHBlcihjbGllbnQoKSwgZnJhbWUoKS0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCkpLmlzVW5ncmFtbWF0aWNhbChndWVzc2VzKTsK
ICAgICByZXR1cm4gZ3Vlc3NlczsKKyNlbHNlCisgICAgcmV0dXJuIFZlY3RvcjxTdHJpbmc+KCk7
CiAjZW5kaWYKIH0KIApAQCAtMTk5MSw3ICsxOTg2LDcgQEAgVmVjdG9yPFN0cmluZz4gRWRpdG9y
OjpndWVzc2VzRm9yTWlzc3BlbGxlZFNlbGVjdGlvbigpCiAKIFZlY3RvcjxTdHJpbmc+IEVkaXRv
cjo6Z3Vlc3Nlc0Zvck1pc3NwZWxsZWRPclVuZ3JhbW1hdGljYWxTZWxlY3Rpb24oYm9vbCYgbWlz
c3BlbGxlZCwgYm9vbCYgdW5ncmFtbWF0aWNhbCkKIHsKLSNpZiBQTEFURk9STShNQUMpICYmICFk
ZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJE
KQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAgcmV0dXJuIFRleHRDaGVja2lu
Z0hlbHBlcihjbGllbnQoKSwgZnJhbWUoKS0+c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdl
KCkpLmd1ZXNzZXNGb3JNaXNzcGVsbGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoaXNHcmFtbWFyQ2hl
Y2tpbmdFbmFibGVkKCksIG1pc3NwZWxsZWQsIHVuZ3JhbW1hdGljYWwpOwogI2Vsc2UKICAgICBt
aXNzcGVsbGVkID0gaXNTZWxlY3Rpb25NaXNzcGVsbGVkKCk7CkBAIC0yMDYwLDcgKzIwNTUsNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiAmbW92aW5nU2VsZWN0aQogCiB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5n
c0FmdGVyVHlwaW5nVG9Xb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiAmd29yZFN0YXJ0LCBjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb25BZnRlclR5cGluZykKIHsKLSNpZiBQTEFURk9S
TShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElO
R19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAjaWYgU1VQUE9S
VF9BVVRPQ09SUkVDVElPTl9QQU5FTAogICAgIC8vIEFwcGx5IHBlbmRpbmcgYXV0b2NvcnJlY3Rp
b24gYmVmb3JlIG5leHQgcm91bmQgb2Ygc3BlbGwgY2hlY2tpbmcuCiAgICAgYm9vbCBkb0FwcGx5
Q29ycmVjdGlvbiA9IHRydWU7CkBAIC0yMDgyLDEyICsyMDc3LDE0IEBAIHZvaWQgRWRpdG9yOjpt
YXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uICZ3
b3JkU3RhcnQsCiAgICAgaWYgKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkpCiAg
ICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0gTWFya1NwZWxsaW5nOwogCisjaWYgVVNFKEFV
VE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgIGlmIChpc0F1dG9tYXRpY1F1b3RlU3Vic3Rp
dHV0aW9uRW5hYmxlZCgpCiAgICAgICAgIHx8IGlzQXV0b21hdGljTGlua0RldGVjdGlvbkVuYWJs
ZWQoKQogICAgICAgICB8fCBpc0F1dG9tYXRpY0Rhc2hTdWJzdGl0dXRpb25FbmFibGVkKCkKICAg
ICAgICAgfHwgaXNBdXRvbWF0aWNUZXh0UmVwbGFjZW1lbnRFbmFibGVkKCkKICAgICAgICAgfHwg
KCh0ZXh0Q2hlY2tpbmdPcHRpb25zICYgTWFya1NwZWxsaW5nKSAmJiBpc0F1dG9tYXRpY1NwZWxs
aW5nQ29ycmVjdGlvbkVuYWJsZWQoKSkpCiAgICAgICAgIHRleHRDaGVja2luZ09wdGlvbnMgfD0g
UGVyZm9ybVJlcGxhY2VtZW50OworI2VuZGlmCiAKICAgICBpZiAoIXRleHRDaGVja2luZ09wdGlv
bnMgJiAoTWFya1NwZWxsaW5nIHwgUGVyZm9ybVJlcGxhY2VtZW50KSkKICAgICAgICAgcmV0dXJu
OwpAQCAtMjE3NiwxMiArMjE3Myw5IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzT3JC
YWRHcmFtbWFyKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vCiAgICAgaWYg
KGNoZWNrU3BlbGxpbmcpCiAgICAgICAgIGNoZWNrZXIubWFya0FsbE1pc3NwZWxsaW5ncyhmaXJz
dE1pc3NwZWxsaW5nUmFuZ2UpOwogICAgIGVsc2UgewotI2lmZGVmIEJVSUxESU5HX09OX1RJR0VS
Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotI2Vsc2UKKyAgICAgICAgQVNTRVJUKFdU
Rl9VU0VfR1JBTU1BUl9DSEVDS0lORyk7CiAgICAgICAgIGlmIChpc0dyYW1tYXJDaGVja2luZ0Vu
YWJsZWQoKSkKICAgICAgICAgICAgIGNoZWNrZXIubWFya0FsbEJhZEdyYW1tYXIoKTsKLSNlbmRp
ZgogICAgIH0gICAgCiB9CiAKQEAgLTIyMDcsMTcgKzIyMDEsMTQgQEAgdm9pZCBFZGl0b3I6Om1h
cmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBSZWZQdHI8
UmFuZ2U+JgogICAgIAogdm9pZCBFZGl0b3I6Om1hcmtCYWRHcmFtbWFyKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIHNlbGVjdGlvbikKIHsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyAgICBB
U1NFUlQoV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HKTsKICAgICBSZWZQdHI8UmFuZ2U+IGZpcnN0
TWlzc3BlbGxpbmdSYW5nZTsKICAgICBtYXJrTWlzc3BlbGxpbmdzT3JCYWRHcmFtbWFyKHNlbGVj
dGlvbiwgZmFsc2UsIGZpcnN0TWlzc3BlbGxpbmdSYW5nZSk7Ci0jZWxzZQotICAgIFVOVVNFRF9Q
QVJBTShzZWxlY3Rpb24pOwotI2VuZGlmCiB9CiAKLSNpZiBQTEFURk9STShNQUMpICYmICFkZWZp
bmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9MRU9QQVJEKQog
dm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNzcGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4
dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zLCBSYW5nZSogc3BlbGxpbmdSYW5n
ZSwgUmFuZ2UqIGdyYW1tYXJSYW5nZSkKIHsKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5H
KQogICAgIC8vIFRoZXJlIHNob3VsZG4ndCBiZSBwZW5kaW5nIGF1dG9jb3JyZWN0aW9uIGF0IHRo
aXMgbW9tZW50LgogICAgIEFTU0VSVCghbV9jb3JyZWN0aW9uUGFuZWxJbmZvLnJhbmdlVG9CZVJl
cGxhY2VkKTsKIApAQCAtMjI3OCw2ICsyMjY5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtBbGxNaXNz
cGVsbGluZ3NBbmRCYWRHcmFtbWFySW5SYW5nZXMoVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2gK
ICAgICBpZiAoc2hvdWxkU2hvd0NvcnJlY3Rpb25QYW5lbCkKICAgICAgICAgY2hlY2tpbmdUeXBl
cyB8PSBUZXh0Q2hlY2tpbmdUeXBlQ29ycmVjdGlvbjsKICAgICBpZiAoc2hvdWxkUGVyZm9ybVJl
cGxhY2VtZW50KSB7CisjaWYgVVNFKEFVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5UKQogICAgICAg
ICBpZiAoaXNBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZCgpKQogICAgICAgICAgICAgY2hl
Y2tpbmdUeXBlcyB8PSBUZXh0Q2hlY2tpbmdUeXBlTGluazsKICAgICAgICAgaWYgKGlzQXV0b21h
dGljUXVvdGVTdWJzdGl0dXRpb25FbmFibGVkKCkpCkBAIC0yMjg4LDYgKzIyODAsNyBAQCB2b2lk
IEVkaXRvcjo6bWFya0FsbE1pc3NwZWxsaW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hl
Y2tpbmdPcHRpb25zIHRleHRDaAogICAgICAgICAgICAgY2hlY2tpbmdUeXBlcyB8PSBUZXh0Q2hl
Y2tpbmdUeXBlUmVwbGFjZW1lbnQ7CiAgICAgICAgIGlmIChzaG91bGRNYXJrU3BlbGxpbmcgJiYg
aXNBdXRvbWF0aWNTcGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCkpCiAgICAgICAgICAgICBjaGVj
a2luZ1R5cGVzIHw9IFRleHRDaGVja2luZ1R5cGVDb3JyZWN0aW9uOworI2VuZGlmCiAgICAgfQog
ICAgIHRleHRDaGVja2VyKCktPmNoZWNrVGV4dE9mUGFyYWdyYXBoKHBhcmFncmFwaC50ZXh0Q2hh
cmFjdGVycygpLCBwYXJhZ3JhcGgudGV4dExlbmd0aCgpLCBjaGVja2luZ1R5cGVzLCByZXN1bHRz
KTsKIApAQCAtMjQ1NiwxMCArMjQ0OSwxNyBAQCB2b2lkIEVkaXRvcjo6bWFya0FsbE1pc3NwZWxs
aW5nc0FuZEJhZEdyYW1tYXJJblJhbmdlcyhUZXh0Q2hlY2tpbmdPcHRpb25zIHRleHRDaAogICAg
ICAgICAgICAgbV9mcmFtZS0+c2VsZWN0aW9uKCktPm1vZGlmeShTZWxlY3Rpb25Db250cm9sbGVy
OjpBbHRlcmF0aW9uTW92ZSwgRGlyZWN0aW9uRm9yd2FyZCwgQ2hhcmFjdGVyR3JhbnVsYXJpdHkp
OwogICAgICAgICB9CiAgICAgfQorI2Vsc2UKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICBVTlVTRURfUEFSQU0odGV4dENoZWNraW5nT3B0aW9ucyk7CisgICAgVU5VU0VEX1BBUkFNKHNw
ZWxsaW5nUmFuZ2UpOworICAgIFVOVVNFRF9QQVJBTShncmFtbWFyUmFuZ2UpOworI2VuZGlmIC8v
IFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIHZvaWQgRWRpdG9yOjpjaGFuZ2VCYWNr
VG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5nKQogeworI2lmIFVT
RShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAgaWYgKHJlcGxhY2VkU3RyaW5nLmlzRW1wdHko
KSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yNDc4LDEzICsyNDc4LDE2IEBAIHZvaWQgRWRpdG9y
OjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2VkU3RyaW5n
KQogI2lmIFNVUFBPUlRfQVVUT0NPUlJFQ1RJT05fUEFORUwKICAgICBjaGFuZ2VkUmFuZ2UtPnN0
YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+YWRkTWFya2VyKGNoYW5nZWRS
YW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsQ2hlY2tpbmdFeGVtcHRpb24pOwogI2Vu
ZGlmCisjZWxzZQorICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIFVOVVNFRF9QQVJBTShy
ZXBsYWNlZFN0cmluZyk7CisjZW5kaWYgLy8gVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKIH0K
IAotI2VuZGlmCiAKIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1h
ciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbikKIHsKLSNpZiBQTEFU
Rk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5lZChCVUlM
RElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAgICAgaWYg
KCFpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpKQogICAgICAgICByZXR1cm47CiAg
ICAgVGV4dENoZWNraW5nT3B0aW9ucyB0ZXh0Q2hlY2tpbmdPcHRpb25zID0gTWFya1NwZWxsaW5n
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKaW5kZXggNWZiNDhjNWQwNTZjNTUwOWQ3ZGIyYzUzMzdi
OWZkYzM4OGNiNTk2Mi4uMjVlNzM1ZThhMzc1MWY0Yjg1MWQ0MTk4YmUyMzQ1MmQ3MmI0ZDJjNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiRWRp
dG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAiRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJT
ZWxlY3Rpb25Db250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGV4dENoZWNraW5nLmgiCiAjaW5jbHVk
ZSAiVGltZXIuaCIKICNpbmNsdWRlICJWaXNpYmxlU2VsZWN0aW9uLmgiCiAjaW5jbHVkZSAiV3Jp
dGluZ0RpcmVjdGlvbi5oIgpAQCAtMjIyLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIG1h
cmtNaXNzcGVsbGluZ3MoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYsIFJlZlB0cjxSYW5nZT4mIGZp
cnN0TWlzc3BlbGxpbmdSYW5nZSk7CiAgICAgdm9pZCBtYXJrQmFkR3JhbW1hcihjb25zdCBWaXNp
YmxlU2VsZWN0aW9uJik7CiAgICAgdm9pZCBtYXJrTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hcihj
b25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzcGVsbGluZ1NlbGVjdGlvbiwgYm9vbCBtYXJrR3JhbW1h
ciwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZ3JhbW1hclNlbGVjdGlvbik7Ci0jaWYgUExBVEZP
Uk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJ
TkdfT05fTEVPUEFSRCkKKyNpZiBVU0UoQVVUT01BVElDX1RFWFRfUkVQTEFDRU1FTlQpCiAgICAg
dm9pZCB1cHBlcmNhc2VXb3JkKCk7CiAgICAgdm9pZCBsb3dlcmNhc2VXb3JkKCk7CiAgICAgdm9p
ZCBjYXBpdGFsaXplV29yZCgpOwpAQCAtMjM5LDYgKzI0MCw4IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRvZ2dsZUF1dG9tYXRpY1RleHRSZXBsYWNlbWVudCgpOwogICAgIGJvb2wgaXNBdXRvbWF0aWNT
cGVsbGluZ0NvcnJlY3Rpb25FbmFibGVkKCk7CiAgICAgdm9pZCB0b2dnbGVBdXRvbWF0aWNTcGVs
bGluZ0NvcnJlY3Rpb24oKTsKKyNlbmRpZgorCiAgICAgZW51bSBUZXh0Q2hlY2tpbmdPcHRpb25G
bGFncyB7CiAgICAgICAgIE1hcmtTcGVsbGluZyA9IDEgPDwgMCwKICAgICAgICAgTWFya0dyYW1t
YXIgPSAxIDw8IDEsCkBAIC0yNDksNyArMjUyLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBtYXJr
QWxsTWlzc3BlbGxpbmdzQW5kQmFkR3JhbW1hckluUmFuZ2VzKFRleHRDaGVja2luZ09wdGlvbnMs
IFJhbmdlKiBzcGVsbGluZ1JhbmdlLCBSYW5nZSogZ3JhbW1hclJhbmdlKTsKICAgICB2b2lkIGNo
YW5nZUJhY2tUb1JlcGxhY2VkU3RyaW5nKGNvbnN0IFN0cmluZyYgcmVwbGFjZWRTdHJpbmcpOwot
I2VuZGlmCisKICAgICB2b2lkIGFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhib29sIHN0YXJ0QmVm
b3JlU2VsZWN0aW9uID0gZmFsc2UpOwogICAgIHZvaWQgc2hvd1NwZWxsaW5nR3Vlc3NQYW5lbCgp
OwogICAgIGJvb2wgc3BlbGxpbmdQYW5lbElzU2hvd2luZygpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IGU1NTUzZmQxMDI5MmZlNTg3ZjBl
MjMzMGQxNjVlOGUxNzcyOGU0MWQuLjAwOWM4MDc0MTQzMTU4ZGM2OTYyNGQ5OWU2NmZhYmEwYjM4
MmQyZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVs
cGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5j
cHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBTdHJpbmcgVGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmly
c3RNaXNzcGVsbGluZyhpbnQmIGZpcnN0TWlzc3BlbGxpbmdPZmZzZXQsIGJvbwogCiBTdHJpbmcg
VGV4dENoZWNraW5nSGVscGVyOjpmaW5kRmlyc3RNaXNzcGVsbGluZ09yQmFkR3JhbW1hcihib29s
IGNoZWNrR3JhbW1hciwgYm9vbCYgb3V0SXNTcGVsbGluZywgaW50JiBvdXRGaXJzdEZvdW5kT2Zm
c2V0LCBHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsKQogewotI2lmIFBMQVRGT1JNKE1B
QykgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fVElHRVIpICYmICFkZWZpbmVkKEJVSUxESU5HX09O
X0xFT1BBUkQpCisjaWYgVVNFKFVOSUZJRURfVEVYVF9DSEVDS0lORykKICAgICBTdHJpbmcgZmly
c3RGb3VuZEl0ZW07CiAgICAgU3RyaW5nIG1pc3NwZWxsZWRXb3JkOwogICAgIFN0cmluZyBiYWRH
cmFtbWFyUGhyYXNlOwpAQCAtMzUwLDEyICszNTAsMTIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hl
bHBlcjo6ZmluZEZpcnN0TWlzc3BlbGxpbmdPckJhZEdyYW1tYXIoYm9vbCBjaGVja0dyYW1tYXIs
IGIKICAgICBVTlVTRURfUEFSQU0ob3V0Rmlyc3RGb3VuZE9mZnNldCk7CiAgICAgVU5VU0VEX1BB
UkFNKG91dEdyYW1tYXJEZXRhaWwpOwogICAgIHJldHVybiAiIjsKLSNlbmRpZgorI2VuZGlmIC8v
IFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiB9CiAKIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6
OmZpbmRGaXJzdEdyYW1tYXJEZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFt
bWFyRGV0YWlscywgaW50IGJhZEdyYW1tYXJQaHJhc2VMb2NhdGlvbiwgaW50IC8qYmFkR3JhbW1h
clBocmFzZUxlbmd0aCovLCBpbnQgc3RhcnRPZmZzZXQsIGludCBlbmRPZmZzZXQsIGJvb2wgbWFy
a0FsbCkKIHsKLSNpZm5kZWYgQlVJTERJTkdfT05fVElHRVIKKyNpZiBVU0UoR1JBTU1BUl9DSEVD
S0lORykKICAgICAvLyBGb3VuZCBzb21lIGJhZCBncmFtbWFyLiBGaW5kIHRoZSBlYXJsaWVzdCBk
ZXRhaWwgcmFuZ2UgdGhhdCBzdGFydHMgaW4gb3VyIHNlYXJjaCByYW5nZSAoaWYgYW55KS4KICAg
ICAvLyBPcHRpb25hbGx5IGFkZCBhIERvY3VtZW50TWFya2VyIGZvciBlYWNoIGRldGFpbCBpbiB0
aGUgcmFuZ2UuCiAgICAgaW50IGVhcmxpZXN0RGV0YWlsTG9jYXRpb25Tb0ZhciA9IC0xOwpAQCAt
NDAyLDcgKzQwMiw3IEBAIGludCBUZXh0Q2hlY2tpbmdIZWxwZXI6OmZpbmRGaXJzdEdyYW1tYXJE
ZXRhaWwoY29uc3QgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiBncmFtCiAKIFN0cmluZyBUZXh0Q2hl
Y2tpbmdIZWxwZXI6OmZpbmRGaXJzdEJhZEdyYW1tYXIoR3JhbW1hckRldGFpbCYgb3V0R3JhbW1h
ckRldGFpbCwgaW50JiBvdXRHcmFtbWFyUGhyYXNlT2Zmc2V0LCBib29sIG1hcmtBbGwpCiB7Ci0j
aWZuZGVmIEJVSUxESU5HX09OX1RJR0VSCisgICAgQVNTRVJUKFdURl9VU0VfR1JBTU1BUl9DSEVD
S0lORyk7CiAgICAgLy8gSW5pdGlhbGl6ZSBvdXQgcGFyYW1ldGVyczsgdGhlc2Ugd2lsbCBiZSB1
cGRhdGVkIGlmIHdlIGZpbmQgc29tZXRoaW5nIHRvIHJldHVybi4KICAgICBvdXRHcmFtbWFyRGV0
YWlsLmxvY2F0aW9uID0gLTE7CiAgICAgb3V0R3JhbW1hckRldGFpbC5sZW5ndGggPSAwOwpAQCAt
NDU4LDE4ICs0NTgsMTIgQEAgU3RyaW5nIFRleHRDaGVja2luZ0hlbHBlcjo6ZmluZEZpcnN0QmFk
R3JhbW1hcihHcmFtbWFyRGV0YWlsJiBvdXRHcmFtbWFyRGV0YWlsLAogICAgIH0KICAgICAKICAg
ICByZXR1cm4gZmlyc3RCYWRHcmFtbWFyUGhyYXNlOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICBVTlVTRURfUEFSQU0ob3V0R3JhbW1hckRldGFpbCk7Ci0gICAgVU5VU0VE
X1BBUkFNKG91dEdyYW1tYXJQaHJhc2VPZmZzZXQpOwotICAgIFVOVVNFRF9QQVJBTShtYXJrQWxs
KTsKLSNlbmRpZgogfQogCiAKIGJvb2wgVGV4dENoZWNraW5nSGVscGVyOjppc1VuZ3JhbW1hdGlj
YWwoVmVjdG9yPFN0cmluZz4mIGd1ZXNzZXNWZWN0b3IpIGNvbnN0CiB7Ci0jaWZuZGVmIEJVSUxE
SU5HX09OX1RJR0VSCisgICAgQVNTRVJUKFdURl9VU0VfR1JBTU1BUl9DSEVDS0lORyk7CiAgICAg
aWYgKCFtX2NsaWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC01MTEsMTYgKzUwNSwx
MSBAQCBib29sIFRleHRDaGVja2luZ0hlbHBlcjo6aXNVbmdyYW1tYXRpY2FsKFZlY3RvcjxTdHJp
bmc+JiBndWVzc2VzVmVjdG9yKSBjb25zdAogICAgIG1fY2xpZW50LT51cGRhdGVTcGVsbGluZ1VJ
V2l0aEdyYW1tYXJTdHJpbmcoYmFkR3JhbW1hclBocmFzZSwgZ3JhbW1hckRldGFpbCk7CiAgICAg
CiAgICAgcmV0dXJuIHRydWU7Ci0jZWxzZQotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IFVOVVNFRF9QQVJBTShndWVzc2VzVmVjdG9yKTsKLSAgICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgog
fQogCiBWZWN0b3I8U3RyaW5nPiBUZXh0Q2hlY2tpbmdIZWxwZXI6Omd1ZXNzZXNGb3JNaXNzcGVs
bGVkT3JVbmdyYW1tYXRpY2FsUmFuZ2UoYm9vbCBjaGVja0dyYW1tYXIsIGJvb2wmIG1pc3NwZWxs
ZWQsIGJvb2wmIHVuZ3JhbW1hdGljYWwpIGNvbnN0CiB7Ci0jaWYgUExBVEZPUk0oTUFDKSAmJiAh
ZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFS
RCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIFZlY3RvcjxTdHJpbmc+IGd1
ZXNzZXM7CiAgICAgRXhjZXB0aW9uQ29kZSBlYzsKICAgICBtaXNzcGVsbGVkID0gZmFsc2U7CkBA
IC01NzgsNyArNTY3LDcgQEAgVmVjdG9yPFN0cmluZz4gVGV4dENoZWNraW5nSGVscGVyOjpndWVz
c2VzRm9yTWlzc3BlbGxlZE9yVW5ncmFtbWF0aWNhbFJhbmdlKGJvb2wKICAgICBVTlVTRURfUEFS
QU0obWlzc3BlbGxlZCk7CiAgICAgVU5VU0VEX1BBUkFNKHVuZ3JhbW1hdGljYWwpOwogICAgIHJl
dHVybiBWZWN0b3I8U3RyaW5nPigpOwotI2VuZGlmCisjZW5kaWYgLy8gVVNFKFVOSUZJRURfVEVY
VF9DSEVDS0lORykKIH0KIAogCkBAIC01OTIsMTUgKzU4MSwxMiBAQCB2b2lkIFRleHRDaGVja2lu
Z0hlbHBlcjo6bWFya0FsbE1pc3NwZWxsaW5ncyhSZWZQdHI8UmFuZ2U+JiBmaXJzdE1pc3NwZWxs
aW5nUmFuZwogCiB2b2lkIFRleHRDaGVja2luZ0hlbHBlcjo6bWFya0FsbEJhZEdyYW1tYXIoKQog
ewotI2lmbmRlZiBCVUlMRElOR19PTl9USUdFUgotICAgIC8vIFVzZSB0aGUgIm1hcmtBbGwiIGZl
YXR1cmUgb2YgZmluZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5k
ICJvdXQgcGFyYW1ldGVycyI7IGFsbCB3ZSBuZWVkIHRvCisgICAgQVNTRVJUKFdURl9VU0VfR1JB
TU1BUl9DSEVDS0lORyk7CisgICAgLy8gVXNlIHRoZSAibWFya0FsbCIgZmVhdHVyZSBvZiBvZmlu
ZEZpcnN0QmFkR3JhbW1hci4gSWdub3JlIHRoZSByZXR1cm4gdmFsdWUgYW5kICJvdXQgcGFyYW1l
dGVycyI7IGFsbCB3ZSBuZWVkIHRvCiAgICAgLy8gZG8gaXMgbWFyayBldmVyeSBpbnN0YW5jZS4K
ICAgICBHcmFtbWFyRGV0YWlsIGlnbm9yZWRHcmFtbWFyRGV0YWlsOwogICAgIGludCBpZ25vcmVk
T2Zmc2V0OwogICAgIGZpbmRGaXJzdEJhZEdyYW1tYXIoaWdub3JlZEdyYW1tYXJEZXRhaWwsIGln
bm9yZWRPZmZzZXQsIHRydWUpOwotI2Vsc2UKLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSNl
bmRpZgogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgKaW5kZXggM2IwYWQy
ZTdhZDY0YjcwOTU5M2M4ZDEzZjMwNDE4ZGNjZTUxZjBhMC4uMmMxMDgzYzUxODY3MmI0MjJmYjA1
MWNhZDk3Njc1Nzk3NDA4MjViZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaApA
QCAtNDA2LDcgKzQwNiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmKSB7IHJldHVybiBT
dHJpbmcoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBjaGVja0dyYW1tYXJPZlN0cmluZyhjb25zdCBV
Q2hhciosIGludCwgVmVjdG9yPEdyYW1tYXJEZXRhaWw+JiwgaW50KiwgaW50KikgeyB9CiAKLSNp
ZiBQTEFURk9STShNQUMpICYmICFkZWZpbmVkKEJVSUxESU5HX09OX1RJR0VSKSAmJiAhZGVmaW5l
ZChCVUlMRElOR19PTl9MRU9QQVJEKQorI2lmIFVTRShVTklGSUVEX1RFWFRfQ0hFQ0tJTkcpCiAg
ICAgdmlydHVhbCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKGNvbnN0IFVDaGFyKiwgaW50LCB1
aW50NjRfdCwgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mKSB7IH07CiAjZW5kaWYKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tlckNsaWVudC5oCmluZGV4
IGFjYWEwMmNmNjJhMDcwZjkwY2Y5NGM2ZTEyNmM1ZDBkNjdiZmJiOGUuLjhhYmJlZDQxMjMxZDY4
MTY4NTZiMWY3N2Q0N2EzYmFmMTFkMTRlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RleHQvVGV4dENoZWNrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRDaGVja2VyQ2xpZW50LmgKQEAgLTI4LDYgKzI4LDggQEAKICNpZm5kZWYg
VGV4dENoZWNrZXJDbGllbnRfaAogI2RlZmluZSBUZXh0Q2hlY2tlckNsaWVudF9oCiAKKyNpbmNs
dWRlICJUZXh0Q2hlY2tpbmcuaCIKKwogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNzAs
NyArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNoZWNrU3BlbGxpbmdPZlN0cmlu
Zyhjb25zdCBVQ2hhciosIGludCBsZW5ndGgsIGludCogbWlzc3BlbGxpbmdMb2NhdGlvbiwgaW50
KiBtaXNzcGVsbGluZ0xlbmd0aCkgPSAwOwogICAgIHZpcnR1YWwgU3RyaW5nIGdldEF1dG9Db3Jy
ZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdv
cmQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2hlY2tHcmFtbWFyT2ZTdHJpbmcoY29uc3QgVUNo
YXIqLCBpbnQgbGVuZ3RoLCBWZWN0b3I8R3JhbW1hckRldGFpbD4mLCBpbnQqIGJhZEdyYW1tYXJM
b2NhdGlvbiwgaW50KiBiYWRHcmFtbWFyTGVuZ3RoKSA9IDA7Ci0jaWYgUExBVEZPUk0oTUFDKSAm
JiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYgIWRlZmluZWQoQlVJTERJTkdfT05fTEVP
UEFSRCkKKyNpZiBVU0UoVU5JRklFRF9URVhUX0NIRUNLSU5HKQogICAgIHZpcnR1YWwgdm9pZCBj
aGVja1RleHRPZlBhcmFncmFwaChjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwgdWludDY0
X3QgY2hlY2tpbmdUeXBlcywgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpID0g
MDsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1Rl
eHRDaGVja2luZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tpbmcu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wMjJmYjgyNDNiMmRkZjFhYjdkYTlmZTUwNTJlMGEyMmJhNTVjNGI0Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0Q2hlY2tp
bmcuaApAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorICogbWV0OgorICogCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKiAKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXh0Q2hlY2tpbmdfaAorI2RlZmluZSBU
ZXh0Q2hlY2tpbmdfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiAhZGVmaW5lZChCVUlM
RElOR19PTl9USUdFUikKKyNkZWZpbmUgV1RGX1VTRV9HUkFNTUFSX0NIRUNLSU5HIDEKKyNlbmRp
ZgorCisjaWYgUExBVEZPUk0oTUFDKSAmJiAhZGVmaW5lZChCVUlMRElOR19PTl9USUdFUikgJiYg
IWRlZmluZWQoQlVJTERJTkdfT05fTEVPUEFSRCkKKyNkZWZpbmUgV1RGX1VTRV9VTklGSUVEX1RF
WFRfQ0hFQ0tJTkcgMQorI2RlZmluZSBXVEZfVVNFX0FVVE9NQVRJQ19URVhUX1JFUExBQ0VNRU5U
IDEKKyNlbmRpZgorCit9CisKKyNlbmRpZiAvLyBUZXh0Q2hlY2tpbmdfaAo=
</data>
<flag name="review"
          id="79072"
          type_id="1"
          status="+"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>