<?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>106256</bug_id>
          
          <creation_ts>2013-01-07 14:32:52 -0800</creation_ts>
          <short_desc>HTMLTreeBuilder should not depend on Frame</short_desc>
          <delta_ts>2013-01-07 17:23:08 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>106127</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>801675</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 14:32:52 -0800</bug_when>
    <thetext>HTMLTreeBuilder should not depend on Frame</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801678</commentid>
    <comment_count>1</comment_count>
      <attachid>181569</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 14:37:58 -0800</bug_when>
    <thetext>Created attachment 181569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801679</commentid>
    <comment_count>2</comment_count>
      <attachid>181569</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-07 14:46:20 -0800</bug_when>
    <thetext>Comment on attachment 181569
Patch

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

I&apos;m slightly confused as to why you changed the test.  But otherwise this looks fine.  I think you should move to a more explicit method name for getting the right options before landing.

&gt; Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp:44
&gt; +    : m_tokenizer(HTMLTokenizer::create(HTMLParserOptions())) // No pre-HTML5 parser quirks.

This feels a bit odd.  Maybe we should give it a better name?  Like HTMLParserOptions::defaultOptions()?  or HTMLParserOptions::allOptionsDisabled()?

&gt; Source/WebCore/html/parser/HTMLParserOptions.h:44
&gt;          , maximumDOMTreeDepth(0)

Is 0 the value you want for &quot;default&quot; in my previous comment?  That&apos;s part of where my confusion comes from.  It&apos;s not clear what the empty/default constructor is supposed to return there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801686</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 14:54:34 -0800</bug_when>
    <thetext>&gt; I&apos;m slightly confused as to why you changed the test.

Previously, the HTMLTreeBuilder would pull the &quot;is scripting enabled&quot; bit from the Frame.  Now, we push the information when we start parsing.  That means if the Frame changes its mind between when it starts parsing and when the &lt;noscript&gt; tag gets processed, we&apos;ll parse the &lt;noscript&gt; tag differently.

In this specific case, the overridePreference API on testRunner is twiddling the &quot;is scripting enabled&quot; bit on the Frame (really on the Frame&apos;s Page&apos;s Settings).

&gt; &gt; Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp:44
&gt; &gt; +    : m_tokenizer(HTMLTokenizer::create(HTMLParserOptions())) // No pre-HTML5 parser quirks.
&gt; 
&gt; This feels a bit odd.  Maybe we should give it a better name?  Like HTMLParserOptions::defaultOptions()?  or HTMLParserOptions::allOptionsDisabled()?

Good idea.

&gt; &gt; Source/WebCore/html/parser/HTMLParserOptions.h:44
&gt; &gt;          , maximumDOMTreeDepth(0)
&gt; 
&gt; Is 0 the value you want for &quot;default&quot; in my previous comment?  That&apos;s part of where my confusion comes from.  It&apos;s not clear what the empty/default constructor is supposed to return there.

Yeah, we should probably use the default value from Settings.  I&apos;ll fix that before landing too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801688</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-07 14:55:59 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; &gt; Source/WebCore/html/parser/HTMLMetaCharsetParser.cpp:44
&gt; &gt; &gt; +    : m_tokenizer(HTMLTokenizer::create(HTMLParserOptions())) // No pre-HTML5 parser quirks.
&gt; &gt; 
&gt; &gt; This feels a bit odd.  Maybe we should give it a better name?  Like HTMLParserOptions::defaultOptions()?  or HTMLParserOptions::allOptionsDisabled()?
&gt; 
&gt; Good idea.

You could also just construct a HTMLParserOptions as normal here, and then twiddle the one bit you care about.  That would also be clearer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801690</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-01-07 14:56:18 -0800</bug_when>
    <thetext>In general I&apos;m not a big fan of HTMLParserOptions have a default constructor or any smarts of its own. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801712</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 15:18:16 -0800</bug_when>
    <thetext>&gt; In general I&apos;m not a big fan of HTMLParserOptions have a default constructor or any smarts of its own. :)

Ok, I&apos;ll remove the default constructor.  I agree that it&apos;s likely to be misused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801809</commentid>
    <comment_count>7</comment_count>
      <attachid>181597</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-07 16:38:15 -0800</bug_when>
    <thetext>Created attachment 181597
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801874</commentid>
    <comment_count>8</comment_count>
      <attachid>181597</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 17:23:04 -0800</bug_when>
    <thetext>Comment on attachment 181597
Patch for landing

Clearing flags on attachment: 181597

Committed r139020: &lt;http://trac.webkit.org/changeset/139020&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>801876</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-07 17:23:08 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181569</attachid>
            <date>2013-01-07 14:37:58 -0800</date>
            <delta_ts>2013-01-07 16:38:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106256-20130107143503.patch</filename>
            <type>text/plain</type>
            <size>23021</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM4OTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2NmRkOTgyOGM0NmRk
ZTdhOTIyODAwZWU1MzYyYjU2YmRjMTRiMS4uYjMzMDNjOWRiMzhlZGNmMjI3Y2I4Yzk4MmQ2ZGE0
ZWY1ZjNlZmQwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDUwIEBACiAyMDEzLTAxLTA3ICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKKyAgICAgICAgSFRNTFRyZWVCdWlsZGVyIHNo
b3VsZCBub3QgZGVwZW5kIG9uIEZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDYyNTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSYXRoZXIgdGhhbiBoYXZlIHRoZSB0cmVlIGJ1aWxkZXIgYXNrIHRo
ZSBGcmFtZSB3aGV0aGVyIHNjcmlwdGluZyBhbmQKKyAgICAgICAgcGx1Z2lucyBhcmUgZW5hYmxl
ZCwgd2Ugbm93IHB1c2ggdGhhdCBpbmZvcm1hdGlvbiB0byB0aGUgdHJlZSBidWlsZGVyCisgICAg
ICAgIHZpYSBIVE1MUGFyc2VyT3B0aW9ucywgbGV0dGluZyB1cyByZW1vdmUgdGhlIEZyYW1lIGRl
cGVuZGVuY3kgZnJvbSB0aGUKKyAgICAgICAgdHJlZSBidWlsZGVyLgorCisgICAgICAgIEFzIGEg
Y29uc2VxdWVuY2Ugb2YgdGhpcyBjaGFuZ2UsIHRoZSAic2NyaXB0IGVuYWJsZWQiIGJpdCBpbiB0
aGUgcGFyc2VyCisgICAgICAgIGlzIG5vdyBsb2NrZWQgaW4gd2hlbiB0aGUgcGFyc2VyIHN0YXJ0
cy4gVGhpcyBiaXQgZG9lc24ndCBhY3R1YWxseQorICAgICAgICBjb250cm9sIHdoZW4gc2NyaXB0
IGV4ZWN1dGUsIG9ubHkgaG93IHRoZSA8bm9zY3JpcHQ+IGVsZW1lbnQgaXMgcGFyc2VkLgorCisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGh0
bWwvcGFyc2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MTWV0YUNoYXJzZXRQYXJzZXI6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQpOgorICAg
ICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUxQYXJzZXJPcHRpb25zOjpIVE1MUGFyc2VyT3B0aW9ucyk6CisgICAgICAgICogaHRt
bC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuaDoKKyAgICAgICAgKEhUTUxQYXJzZXJPcHRpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJPcHRpb25zOjpIVE1MUGFyc2VyT3B0aW9u
cyk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxvYWRTY2FubmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAg
ICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUb2tlbml6ZXI6OkhUTUxUb2tlbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnVwZGF0
ZVN0YXRlRm9yKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmg6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpjcmVhdGUpOgorICAgICAgICAoSFRNTFRva2Vu
aXplcik6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5I
ZWFkKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAg
KiBodG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MVmlld1NvdXJjZVBhcnNlcjo6SFRNTFZpZXdTb3VyY2VQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToKKwor
MjAxMy0wMS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCiAgICAgICAgIElu
dHJvZHVjZSBIVE1MUGFyc2VyT3B0aW9ucyB0byBlbmNhcHN1bGF0ZSBIVE1MIHBhcnNlciBvcHRp
b25zCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDYy
NTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50
UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAKaW5kZXggNDg1NTNhYWE4MWU5MWIyYTA4NWE2Y2RmN2U2MzNjZWMxNjIzZGFhNi4uMDFm
NjU3MDQ2NDVkZmI4YTAyNTc0MzllYjE2MmUxOWZhZWJjY2ZhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC00Nyw3ICs0Nyw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIC8vIFRoaXMgaXMgYSBkaXJlY3QgdHJh
bnNjcmlwdGlvbiBvZiBzdGVwIDQgZnJvbToKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVj
cy93ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1lbmQuaHRtbCNmcmFnbWVudC1j
YXNlCi1zdGF0aWMgSFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNv
bnRleHRFbGVtZW50KEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBib29sIHJlcG9ydEVycm9ycykK
K3N0YXRpYyBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4
dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzLCBjb25z
dCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucykKIHsKICAgICBpZiAoIWNvbnRleHRFbGVtZW50
KQogICAgICAgICByZXR1cm4gSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGU7CkBAIC01OSw4
ICs1OSw4IEBAIHN0YXRpYyBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRl
Rm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4CiAgICAgaWYgKGNvbnRleHRUYWcubWF0
Y2hlcyhzdHlsZVRhZykKICAgICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKHhtcFRhZykKICAg
ICAgICAgfHwgY29udGV4dFRhZy5tYXRjaGVzKGlmcmFtZVRhZykKLSAgICAgICAgfHwgKGNvbnRl
eHRUYWcubWF0Y2hlcyhub2VtYmVkVGFnKSAmJiBIVE1MVHJlZUJ1aWxkZXI6OnBsdWdpbnNFbmFi
bGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKLSAgICAgICAgfHwgKGNv
bnRleHRUYWcubWF0Y2hlcyhub3NjcmlwdFRhZykgJiYgSFRNTFRyZWVCdWlsZGVyOjpzY3JpcHRF
bmFibGVkKGNvbnRleHRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpKSkKKyAgICAgICAgfHwg
KGNvbnRleHRUYWcubWF0Y2hlcyhub2VtYmVkVGFnKSAmJiBvcHRpb25zLnBsdWdpbnNFbmFibGVk
KQorICAgICAgICB8fCAoY29udGV4dFRhZy5tYXRjaGVzKG5vc2NyaXB0VGFnKSAmJiBvcHRpb25z
LnNjcmlwdEVuYWJsZWQpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhub2ZyYW1lc1Rh
ZykpCiAgICAgICAgIHJldHVybiByZXBvcnRFcnJvcnMgPyBIVE1MVG9rZW5pemVyU3RhdGU6OlJB
V1RFWFRTdGF0ZSA6IEhUTUxUb2tlbml6ZXJTdGF0ZTo6UExBSU5URVhUU3RhdGU7CiAgICAgaWYg
KGNvbnRleHRUYWcubWF0Y2hlcyhzY3JpcHRUYWcpKQpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMg
SFRNTFRva2VuaXplclN0YXRlOjpTdGF0ZSB0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRFbGVtZW50
KEVsZW1lbnQqIGNvbnRleAogSFRNTERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIo
SFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCByZXBvcnRFcnJvcnMpCiAgICAgOiBTY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAgICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCi0g
ICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zLnVzZVByZUhU
TUw1UGFyc2VyUXVpcmtzKSkKKyAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0
ZShtX29wdGlvbnMpKQogICAgICwgbV9zY3JpcHRSdW5uZXIoSFRNTFNjcmlwdFJ1bm5lcjo6Y3Jl
YXRlKGRvY3VtZW50LCB0aGlzKSkKICAgICAsIG1fdHJlZUJ1aWxkZXIoSFRNTFRyZWVCdWlsZGVy
OjpjcmVhdGUodGhpcywgZG9jdW1lbnQsIHJlcG9ydEVycm9ycywgbV9vcHRpb25zKSkKICAgICAs
IG1fcGFyc2VyU2NoZWR1bGVyKEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNyZWF0ZSh0aGlzKSkKQEAg
LTg4LDE0ICs4OCwxNCBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihI
VE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycwogSFRNTERvY3VtZW50UGFy
c2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQsIEVsZW1l
bnQqIGNvbnRleHRFbGVtZW50LCBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24gc2NyaXB0aW5n
UGVybWlzc2lvbikKICAgICA6IFNjcmlwdGFibGVEb2N1bWVudFBhcnNlcihmcmFnbWVudC0+ZG9j
dW1lbnQoKSkKICAgICAsIG1fb3B0aW9ucyhmcmFnbWVudC0+ZG9jdW1lbnQoKSkKLSAgICAsIG1f
dG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3MpKQorICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3JlYXRlKG1fb3B0
aW9ucykpCiAgICAgLCBtX3RyZWVCdWlsZGVyKEhUTUxUcmVlQnVpbGRlcjo6Y3JlYXRlKHRoaXMs
IGZyYWdtZW50LCBjb250ZXh0RWxlbWVudCwgc2NyaXB0aW5nUGVybWlzc2lvbiwgbV9vcHRpb25z
KSkKICAgICAsIG1feHNzQXVkaXRvcih0aGlzKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNl
KQogICAgICwgbV9wdW1wU2Vzc2lvbk5lc3RpbmdMZXZlbCgwKQogewogICAgIGJvb2wgcmVwb3J0
RXJyb3JzID0gZmFsc2U7IC8vIEZvciBub3cgZG9jdW1lbnQgZnJhZ21lbnQgcGFyc2luZyBuZXZl
ciByZXBvcnRzIGVycm9ycy4KLSAgICBtX3Rva2VuaXplci0+c2V0U3RhdGUodG9rZW5pemVyU3Rh
dGVGb3JDb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCwgcmVwb3J0RXJyb3JzKSk7CisgICAg
bV90b2tlbml6ZXItPnNldFN0YXRlKHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQoY29u
dGV4dEVsZW1lbnQsIHJlcG9ydEVycm9ycywgbV9vcHRpb25zKSk7CiB9CiAKIEhUTUxEb2N1bWVu
dFBhcnNlcjo6fkhUTUxEb2N1bWVudFBhcnNlcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MTWV0YUNoYXJzZXRQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAppbmRleCA1NTFlOThmZDg4N2E5
MWExNzZkYmQxOGExZjcwMzMzZDJhNDM4ZDI3Li4wYjM3MDBiZmEwYTE3YWI1N2E2MThjMjgxMzVl
YWU1NTU0OGUzM2E4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
TWV0YUNoYXJzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxNZXRhQ2hhcnNldFBhcnNlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKKyNpbmNsdWRlICJIVE1M
UGFyc2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlICJU
ZXh0Q29kZWMuaCIKICNpbmNsdWRlICJUZXh0RW5jb2RpbmdSZWdpc3RyeS5oIgpAQCAtNDAsNyAr
NDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CiBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcigpCi0gICAgOiBt
X3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUoZmFsc2UpKSAvLyBObyBwcmUtSFRNTDUg
cGFyc2VyIHF1aXJrcy4KKyAgICA6IG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShI
VE1MUGFyc2VyT3B0aW9ucygpKSkgLy8gTm8gcHJlLUhUTUw1IHBhcnNlciBxdWlya3MuCiAgICAg
LCBtX2Fzc3VtZWRDb2RlYyhuZXdUZXh0Q29kZWMoTGF0aW4xRW5jb2RpbmcoKSkpCiAgICAgLCBt
X2luSGVhZFNlY3Rpb24odHJ1ZSkKICAgICAsIG1fZG9uZUNoZWNraW5nKGZhbHNlKQpAQCAtMTc5
LDcgKzE4MCw3IEBAIGJvb2wgSFRNTE1ldGFDaGFyc2V0UGFyc2VyOjpjaGVja0Zvck1ldGFDaGFy
c2V0KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgpCiAgICAgICAgIGlmIChlbmQgfHwg
bV90b2tlbi50eXBlKCkgPT0gSFRNTFRva2VuVHlwZXM6OlN0YXJ0VGFnKSB7CiAgICAgICAgICAg
ICBBdG9taWNTdHJpbmcgdGFnTmFtZShtX3Rva2VuLm5hbWUoKS5kYXRhKCksIG1fdG9rZW4ubmFt
ZSgpLnNpemUoKSk7CiAgICAgICAgICAgICBpZiAoIWVuZCkgewotICAgICAgICAgICAgICAgIG1f
dG9rZW5pemVyLT51cGRhdGVTdGF0ZUZvcih0YWdOYW1lLCAwKTsKKyAgICAgICAgICAgICAgICBt
X3Rva2VuaXplci0+dXBkYXRlU3RhdGVGb3IodGFnTmFtZSk7CiAgICAgICAgICAgICAgICAgaWYg
KHRhZ05hbWUgPT0gbWV0YVRhZyAmJiBwcm9jZXNzTWV0YSgpKSB7CiAgICAgICAgICAgICAgICAg
ICAgIG1fZG9uZUNoZWNraW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0
aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0aW9ucy5j
cHAKaW5kZXggODY0NjZmYWE5ZjkyZmU5ZWE0NmZkZWQwODE0Yzk3NTQzODE1MzJkMS4uYzUyNTlj
ZTJkZThiODE4MTc5MjVjMGM5Yjk2MTg1ODhiNWU4NThmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcApAQCAtMjcsNiArMjcsNyBAQAog
I2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgiCiAKICNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpAQCAtMzQsNiArMzUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogSFRNTFBhcnNl
ck9wdGlvbnM6OkhUTUxQYXJzZXJPcHRpb25zKERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBB
U1NFUlQoZG9jdW1lbnQpOworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOwor
ICAgIHNjcmlwdEVuYWJsZWQgPSBmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVT
Y3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKKyAgICBwbHVnaW5zRW5hYmxlZCA9IGZy
YW1lICYmIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5v
dEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbik7CisKICAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudC0+c2V0dGluZ3MoKTsKICAgICB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyA9IHNldHRp
bmdzICYmIHNldHRpbmdzLT51c2VQcmVIVE1MNVBhcnNlclF1aXJrcygpOwogICAgIG1heGltdW1E
T01UcmVlRGVwdGggPSBzZXR0aW5ncyA/IHNldHRpbmdzLT5tYXhpbXVtSFRNTFBhcnNlckRPTVRy
ZWVEZXB0aCgpIDogU2V0dGluZ3M6OmRlZmF1bHRNYXhpbXVtSFRNTFBhcnNlckRPTVRyZWVEZXB0
aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRp
b25zLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyT3B0aW9ucy5oCmlu
ZGV4IDVmZmRjMjUzZGExMTRlMWIxM2Q3OGY0MDZmMDIzMjNlNDk3NTQxZjkuLjQ4ZThiZGQzNmY4
NjZlM2ZjMzNkZWY0OWY3MmYzNzAxNDUyNjZlNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuaApAQCAtMzIsMTEgKzMyLDE1IEBAIGNsYXNzIERv
Y3VtZW50OwogCiBjbGFzcyBIVE1MUGFyc2VyT3B0aW9ucyB7CiBwdWJsaWM6CisgICAgYm9vbCBz
Y3JpcHRFbmFibGVkOworICAgIGJvb2wgcGx1Z2luc0VuYWJsZWQ7CiAgICAgYm9vbCB1c2VQcmVI
VE1MNVBhcnNlclF1aXJrczsKICAgICB1bnNpZ25lZCBtYXhpbXVtRE9NVHJlZURlcHRoOwogCiAg
ICAgSFRNTFBhcnNlck9wdGlvbnMoKQotICAgICAgICA6IHVzZVByZUhUTUw1UGFyc2VyUXVpcmtz
KGZhbHNlKQorICAgICAgICA6IHNjcmlwdEVuYWJsZWQoZmFsc2UpCisgICAgICAgICwgcGx1Z2lu
c0VuYWJsZWQoZmFsc2UpCisgICAgICAgICwgdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoZmFsc2Up
CiAgICAgICAgICwgbWF4aW11bURPTVRyZWVEZXB0aCgwKQogICAgIHsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAppbmRleCBk
YmFlZjAzYmFiOTA1MGQ4ZTNjODgwMjgxODBjYzRlZjAwNjEzMjRjLi45NGZlYjU2OWY1YTY0ZGZi
NDdkM2UyMWJkZDVlMmQ5NmY2NzJjODM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCBwcml2YXRl
OgogSFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucykKICAgICA6IG1fZG9jdW1lbnQo
ZG9jdW1lbnQpCiAgICAgLCBtX2Nzc1NjYW5uZXIoZG9jdW1lbnQpCi0gICAgLCBtX3Rva2VuaXpl
cihIVE1MVG9rZW5pemVyOjpjcmVhdGUob3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcykp
CisgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUob3B0aW9ucykpCiAgICAg
LCBtX2luU3R5bGUoZmFsc2UpCiB7CiB9CkBAIC0yMDMsNyArMjAzLDcgQEAgdm9pZCBIVE1MUHJl
bG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbigpCiAgICAgICAgIHJldHVybjsKIAogICAgIFByZWxv
YWRUYXNrIHRhc2sobV90b2tlbik7Ci0gICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRh
c2sudGFnTmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBtX3Rva2VuaXplci0+dXBk
YXRlU3RhdGVGb3IodGFzay50YWdOYW1lKCkpOwogCiAgICAgaWYgKHRhc2sudGFnTmFtZSgpID09
IHN0eWxlVGFnKQogICAgICAgICBtX2luU3R5bGUgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAppbmRleCAwZjIzYWEyNzUwYTZlNmJkNzc1MjAy
MTM0YTBlMmI2ZGRkYjljNmZhLi44YjE3NDVkOWJlMWRhMzc4NWZkNTg3NmMzNjFjNjhjZjE4M2Fj
NTI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcApA
QCAtMTA3LDggKzEwNyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0VuZFRhZ0J1ZmZlcmluZ1N0
YXRlKEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgc3RhdGUpCiAjZGVmaW5lIEhUTUxfQURWQU5D
RV9UTyhzdGF0ZU5hbWUpIEFEVkFOQ0VfVE8oSFRNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUp
CiAjZGVmaW5lIEhUTUxfU1dJVENIX1RPKHN0YXRlTmFtZSkgU1dJVENIX1RPKEhUTUxUb2tlbml6
ZXJTdGF0ZSwgc3RhdGVOYW1lKQogCi1IVE1MVG9rZW5pemVyOjpIVE1MVG9rZW5pemVyKGJvb2wg
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpCi0gICAgOiBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtz
KHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKQorSFRNTFRva2VuaXplcjo6SFRNTFRva2VuaXplcihj
b25zdCBIVE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IG1fb3B0aW9ucyhvcHRpb25z
KQogewogICAgIHJlc2V0KCk7CiB9CkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBIVE1MVG9rZW5p
emVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUxUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFydFRhZ1N0YXRlKTsK
ICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRS
ZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAg
ZWxzZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCisgICAgICAg
IGVsc2UgaWYgKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcp
CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2Vu
aXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2Mp
KSB7CiAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUodG9Mb3dlckNhc2UoY2MpKTsK
QEAgLTgxNCw3ICs4MTQsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEhUTUxfQURW
QU5DRV9UTyhTZWxmQ2xvc2luZ1N0YXJ0VGFnU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPicpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRv
a2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICBlbHNlIGlmIChtX3VzZVByZUhUTUw1
UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKKyAgICAgICAgZWxzZSBpZiAobV9vcHRpb25zLnVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykKICAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVjb25zdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7
CiAgICAgICAgIGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykpIHsKICAgICAgICAgICAgIG1fdG9r
ZW4tPmFkZE5ld0F0dHJpYnV0ZSgpOwpAQCAtODQ4LDcgKzg0OCw3IEBAIGJvb2wgSFRNTFRva2Vu
aXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4mIHRva2Vu
KQogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgbV90b2tlbi0+
ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0
YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJR
dWlya3MgJiYgY2MgPT0gJzwnKSB7CisgICAgICAgIH0gZWxzZSBpZiAobV9vcHRpb25zLnVzZVBy
ZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykgewogICAgICAgICAgICAgbV90b2tlbi0+
ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29uc3VtZWQoKSk7CiAg
ICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXpl
clN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVNDSUlVcHBlcihjYykp
IHsKQEAgLTg3Niw3ICs4NzYsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgICAgIEhUTUxf
QURWQU5DRV9UTyhCZWZvcmVBdHRyaWJ1dGVWYWx1ZVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAo
Y2MgPT0gJz4nKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKLSAgICAgICAgZWxzZSBpZiAobV91c2VQcmVI
VE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCisgICAgICAgIGVsc2UgaWYgKG1fb3B0aW9u
cy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAnPCcpCiAgICAgICAgICAgICByZXR1
cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3Rh
dGUpOwogICAgICAgICBlbHNlIGlmIChpc0FTQ0lJVXBwZXIoY2MpKSB7CiAgICAgICAgICAgICBt
X3Rva2VuLT5hZGROZXdBdHRyaWJ1dGUoKTsKQEAgLTEwMTksNyArMTAxOSw3IEBAIGJvb2wgSFRN
TFRva2VuaXplcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MVG9rZW4m
IHRva2VuKQogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNlbGZDbG9zaW5nU3RhcnRUYWdT
dGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAgICAgIHJldHVybiBl
bWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZSk7Ci0g
ICAgICAgIGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKQor
ICAgICAgICBlbHNlIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYgY2Mg
PT0gJzwnKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJbihzb3VyY2UsIEhU
TUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gSW5w
dXRTdHJlYW1QcmVwcm9jZXNzb3I6OmVuZE9mRmlsZU1hcmtlcikgewogICAgICAgICAgICAgcGFy
c2VFcnJvcigpOwpAQCAtMTU4OSw3ICsxNTg5LDcgQEAgU3RyaW5nIEhUTUxUb2tlbml6ZXI6OmJ1
ZmZlcmVkQ2hhcmFjdGVycygpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMudG9TdHJpbmco
KTsKIH0KIAotdm9pZCBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNT
dHJpbmcmIHRhZ05hbWUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSFRNTFRva2VuaXplcjo6dXBkYXRl
U3RhdGVGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewogICAgIGlmICh0YWdOYW1l
ID09IHRleHRhcmVhVGFnIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcpCiAgICAgICAgIHNldFN0YXRl
KEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwpAQCAtMTYwMCw5ICsxNjAwLDkgQEAg
dm9pZCBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJpbmcmIHRh
Z05hbWUsIEZyYW1lKiBmcmFtZSkKICAgICBlbHNlIGlmICh0YWdOYW1lID09IHN0eWxlVGFnCiAg
ICAgICAgIHx8IHRhZ05hbWUgPT0gaWZyYW1lVGFnCiAgICAgICAgIHx8IHRhZ05hbWUgPT0geG1w
VGFnCi0gICAgICAgIHx8ICh0YWdOYW1lID09IG5vZW1iZWRUYWcgJiYgSFRNTFRyZWVCdWlsZGVy
OjpwbHVnaW5zRW5hYmxlZChmcmFtZSkpCisgICAgICAgIHx8ICh0YWdOYW1lID09IG5vZW1iZWRU
YWcgJiYgbV9vcHRpb25zLnBsdWdpbnNFbmFibGVkKQogICAgICAgICB8fCB0YWdOYW1lID09IG5v
ZnJhbWVzVGFnCi0gICAgICAgIHx8ICh0YWdOYW1lID09IG5vc2NyaXB0VGFnICYmIEhUTUxUcmVl
QnVpbGRlcjo6c2NyaXB0RW5hYmxlZChmcmFtZSkpKQorICAgICAgICB8fCAodGFnTmFtZSA9PSBu
b3NjcmlwdFRhZyAmJiBtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkpCiAgICAgICAgIHNldFN0YXRl
KEhUTUxUb2tlbml6ZXJTdGF0ZTo6UkFXVEVYVFN0YXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCmluZGV4IGQ4YjUzNmQ1Mzk4YzBlMmE3M2FhYmFi
MGY2NTgwMzJmMDU5OTU3OTIuLmZiOTA5YmRkN2NhMDk3ZWU1NDkwOGU2YmEyOWUxODNmYzFjMjlj
ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUb2tlbml6ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKQEAgLTI3
LDE0ICsyNywxMyBAQAogI2lmbmRlZiBIVE1MVG9rZW5pemVyX2gKICNkZWZpbmUgSFRNTFRva2Vu
aXplcl9oCiAKKyNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9ucy5oIgogI2luY2x1ZGUgIkhUTUxU
b2tlbi5oIgogI2luY2x1ZGUgIk1hcmt1cFRva2VuaXplckJhc2UuaCIKICNpbmNsdWRlICJTZWdt
ZW50ZWRTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBGcmFtZTsKLQog
Y2xhc3MgSFRNTFRva2VuaXplclN0YXRlIHsKIHB1YmxpYzoKICAgICBlbnVtIFN0YXRlIHsKQEAg
LTEyMCw3ICsxMTksNyBAQCBjbGFzcyBIVE1MVG9rZW5pemVyIDogcHVibGljIE1hcmt1cFRva2Vu
aXplckJhc2U8SFRNTFRva2VuLCBIVE1MVG9rZW5pemVyU3RhdGU+CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoSFRNTFRva2VuaXplcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4gY3JlYXRlKGJvb2wg
dXNlUHJlSFRNTDVQYXJzZXJRdWlya3MpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MVG9rZW5p
emVyKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxI
VE1MVG9rZW5pemVyPiBjcmVhdGUoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpIHsg
cmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MVG9rZW5pemVyKG9wdGlvbnMpKTsgfQogICAgIH5IVE1M
VG9rZW5pemVyKCk7CiAKICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNTcsNyArMTU2LDcgQEAgcHVi
bGljOgogICAgIC8vICAqIENEQVRBIHNlY3Rpb25zIGluIGZvcmVpZ24gY29udGVudCB3aWxsIGJl
IHRva2VuaXplZCBhcyBib2d1cyBjb21tZW50cwogICAgIC8vICAgIGluc3RlYWQgb2YgYXMgY2hh
cmFjdGVyIHRva2Vucy4KICAgICAvLwotICAgIHZvaWQgdXBkYXRlU3RhdGVGb3IoY29uc3QgQXRv
bWljU3RyaW5nJiB0YWdOYW1lLCBGcmFtZSopOworICAgIHZvaWQgdXBkYXRlU3RhdGVGb3IoY29u
c3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKTsKIAogICAgIGJvb2wgZm9yY2VOdWxsQ2hhcmFjdGVy
UmVwbGFjZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2Vt
ZW50OyB9CiAgICAgdm9pZCBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudChib29sIHZh
bHVlKSB7IG1fZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgPSB2YWx1ZTsgfQpAQCAtMTY2
LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEFsbG93Q0RBVEEoYm9vbCB2
YWx1ZSkgeyBtX3Nob3VsZEFsbG93Q0RBVEEgPSB2YWx1ZTsgfQogCiBwcml2YXRlOgotICAgIGV4
cGxpY2l0IEhUTUxUb2tlbml6ZXIoYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyk7CisgICAg
ZXhwbGljaXQgSFRNTFRva2VuaXplcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYpOwogCiAgICAg
aW5saW5lIGJvb2wgcHJvY2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmKTsKIApAQCAtMjE2LDcg
KzIxNSw3IEBAIHByaXZhdGU6CiAgICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJlciBpdCBu
ZXh0IHRpbWUgd2UgcmUtZW50ZXIgdGhlIHRva2VuaXplci4KICAgICBWZWN0b3I8TENoYXIsIDMy
PiBtX2J1ZmZlcmVkRW5kVGFnTmFtZTsKIAotICAgIGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1
aXJrczsKKyAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAppbmRleCAwZjRkNTUx
Y2Q0ZDQ0NTU1MDFkYTg3NTAxZTc4MjU1NmY5MmZhNGNiLi5iOWY5NTdmMDIyYzBmZTVlYTI3Y2Uw
N2FmYjhlYTAyZmU4ZjdkMjZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MVHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJET01XaW5kb3cu
aCIKICNpbmNsdWRlICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBl
LmgiCi0jaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MRG9jdW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZhY3Rvcnku
aCIKQEAgLTg5NCwxMSArODkzLDExIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3Rh
cnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKICAgICAgICAgcHJvY2Vzc0dl
bmVyaWNSYXdUZXh0U3RhcnRUYWcodG9rZW4pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlmICh0b2tlbi0+bmFtZSgpID09IG5vZW1iZWRUYWcgJiYgcGx1Z2luc0VuYWJsZWQobV9kb2N1
bWVudC0+ZnJhbWUoKSkpIHsKKyAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBub2VtYmVkVGFnICYm
IG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkgewogICAgICAgICBwcm9jZXNzR2VuZXJpY1Jhd1Rl
eHRTdGFydFRhZyh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHRva2Vu
LT5uYW1lKCkgPT0gbm9zY3JpcHRUYWcgJiYgc2NyaXB0RW5hYmxlZChtX2RvY3VtZW50LT5mcmFt
ZSgpKSkgeworICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG5vc2NyaXB0VGFnICYmIG1fb3B0aW9u
cy5zY3JpcHRFbmFibGVkKSB7CiAgICAgICAgIHByb2Nlc3NHZW5lcmljUmF3VGV4dFN0YXJ0VGFn
KHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2OTAsNyArMjY4OSw3IEBAIGJv
b2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3JJbkhlYWQoQXRvbWljSFRNTFRv
a2VuKiB0b2tlbikKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmICh0b2tlbi0+
bmFtZSgpID09IG5vc2NyaXB0VGFnKSB7Ci0gICAgICAgIGlmIChzY3JpcHRFbmFibGVkKG1fZG9j
dW1lbnQtPmZyYW1lKCkpKSB7CisgICAgICAgIGlmIChtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkg
ewogICAgICAgICAgICAgcHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcodG9rZW4pOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTI5MTMsMTggKzI5MTIsNCBAQCB2
b2lkIEhUTUxUcmVlQnVpbGRlcjo6cGFyc2VFcnJvcihBdG9taWNIVE1MVG9rZW4qKQogewogfQog
Ci1ib29sIEhUTUxUcmVlQnVpbGRlcjo6c2NyaXB0RW5hYmxlZChGcmFtZSogZnJhbWUpCi17Ci0g
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBmcmFtZS0+
c2NyaXB0KCktPmNhbkV4ZWN1dGVTY3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKLX0K
LQotYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnBsdWdpbnNFbmFibGVkKEZyYW1lKiBmcmFtZSkKLXsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1l
LT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5vdEFib3V0VG9JbnN0
YW50aWF0ZVBsdWdpbik7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
cGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmgKaW5kZXggMzkxNGQ1YmU1YTgzMWViYTg3NzNlOGU3NDk4MmYxM2IwYjU3
ODczZC4uMDhmNzVlMjE2MzU1ZDM3YWI3OTU3YjRkNWQxMzI2ZDJkMTI4ODU5ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKQEAgLTkxLDkgKzkxLDYg
QEAgcHVibGljOgogCiAgICAgdm9pZCBzZXRTaG91bGRTa2lwTGVhZGluZ05ld2xpbmUoYm9vbCBz
aG91bGRTa2lwKSB7IG1fc2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lID0gc2hvdWxkU2tpcDsgfQog
Ci0gICAgc3RhdGljIGJvb2wgc2NyaXB0RW5hYmxlZChGcmFtZSopOwotICAgIHN0YXRpYyBib29s
IHBsdWdpbnNFbmFibGVkKEZyYW1lKik7Ci0KIHByaXZhdGU6CiAgICAgY2xhc3MgRXh0ZXJuYWxD
aGFyYWN0ZXJUb2tlbkJ1ZmZlcjsKICAgICAvLyBSZXByZXNlbnRzIEhUTUw1ICJpbnNlcnRpb24g
bW9kZSIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291
cmNlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxWaWV3U291cmNl
UGFyc2VyLmNwcAppbmRleCA1YTU1ODUzZWQ3ZjI3YzBmMWZjZDhlMzBjZTliZThkZThlNWJhNTky
Li4yODRlMTM5NmI5MjMyZWNjOGZhYzVjNzVjNzk3Yzc2MTVlMzdjNTUzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCkBAIC0z
NSw3ICszNSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRNTFZpZXdTb3VyY2VQYXJzZXI6
OkhUTUxWaWV3U291cmNlUGFyc2VyKEhUTUxWaWV3U291cmNlRG9jdW1lbnQqIGRvY3VtZW50KQog
ICAgIDogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlcihkb2N1bWVudCkKLSAgICAsIG1fdG9rZW5p
emVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShIVE1MUGFyc2VyT3B0aW9ucyhkb2N1bWVudCkudXNl
UHJlSFRNTDVQYXJzZXJRdWlya3MpKQorICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6
Y3JlYXRlKEhUTUxQYXJzZXJPcHRpb25zKGRvY3VtZW50KSkpCiB7CiB9CiAKQEAgLTgwLDcgKzgw
LDcgQEAgdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNlcjo6dXBkYXRlVG9rZW5pemVyU3RhdGUoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBBdG9taWNTdHJpbmcgdGFnTmFtZShtX3Rva2VuLm5hbWUo
KS5kYXRhKCksIG1fdG9rZW4ubmFtZSgpLnNpemUoKSk7Ci0gICAgbV90b2tlbml6ZXItPnVwZGF0
ZVN0YXRlRm9yKHRhZ05hbWUsIGRvY3VtZW50KCktPmZyYW1lKCkpOworICAgIG1fdG9rZW5pemVy
LT51cGRhdGVTdGF0ZUZvcih0YWdOYW1lKTsKIH0KIAogdm9pZCBIVE1MVmlld1NvdXJjZVBhcnNl
cjo6ZmluaXNoKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwppbmRleCA4MjYwMGViY2RiNDM1Y2M4NjFiMDYyMDBlMTBlZDZhOTIzMDQw
Mjc4Li5iODQwMTgxYTRlZDIzMjQ3ZTRiYzEyODhhM2JjY2Q4YTA3MmU3MjIzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTMtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBIVE1MVHJlZUJ1aWxkZXIgc2hvdWxkIG5vdCBkZXBlbmQgb24gRnJhbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjI1NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgbmVlZGVkIHRv
IHVwZGF0ZSB0aGlzIHRlc3Qgc2xpZ2h0bHkgYmVjYXVzZSBub3cgd2UgbG9jayBpbiB0aGUKKyAg
ICAgICAgInNjcmlwdCBlbmFibGVkIiBiaXQgZm9yIHRoZSBwYXJzZXIgd2hlbiB0aGUgcGFyc2Vy
IHN0YXJ0cy4gVGhhdCBtZWFucworICAgICAgICB3ZSdsbCBwYXJzZSB0aGUgZG9jdW1lbnQgaW4g
YSBjb25zaXN0ZW50IHdheSBldmVuIGlmIHRoZSAic2NyaXB0CisgICAgICAgIGVuYWJsZWQiIGJp
dCBnZXRzIGZsaXBwZWQgbGF0ZXIuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9ub3NjcmlwdC13
aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcGFy
c2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorCiAyMDEzLTAxLTA3
ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmViYXNlbGluZXMg
YWZ0ZXIgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTM4ODM4LgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2Fi
bGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgt
amF2YXNjcmlwdC1kaXNhYmxlZC1leHBlY3RlZC50eHQKaW5kZXggMjRkZmQ3MjdlNDlkZTM3M2I2
Yzg2OTFjYWYzYWViMDFlZTU1YTVmMy4uMGFiOWQyYzYwM2FlOWQzODhiNGM1ZTZlZGIwNzAwYmRi
YTQ4ZDE4OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0
aC1qYXZhc2NyaXB0LWRpc2FibGVkLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3BhcnNlci9ub3NjcmlwdC13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQtZXhwZWN0ZWQudHh0CkBA
IC0xLDIgKzEsNiBAQAotVGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCBjb250ZW50cyBpbnNp
ZGUgPG5vc2NyaXB0PiBhcmUgcmVuZGVyZWQgd2hlbiBKYXZhc2NyaXB0IGlzIGRpc2FibGVkLgot
U3VjY2VlZGVkIQorVGhlIHRleHQgaW5zaWRlIHRoZSAnbm9zY3JpcHQnIHRhZyBpbnNpZGUgdGhl
IGlmcmFtZSBzaG91bGQgcmVuZGVyOiAgCisKKy0tLS0tLS0tCitGcmFtZTogJzwhLS1mcmFtZVBh
dGggLy88IS0tZnJhbWUwLS0+LS0+JworLS0tLS0tLS0KK1BBU1M6IFRoaXMgdGVzdCBjYXNlIHZl
cmlmaWVzIHRoYXQgY29udGVudHMgaW5zaWRlIGFyZSByZW5kZXJlZCB3aGVuIEphdmFzY3JpcHQg
aXMgZGlzYWJsZWQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3BhcnNlci9ub3Njcmlw
dC13aXRoLWphdmFzY3JpcHQtZGlzYWJsZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcGFyc2Vy
L25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCmluZGV4IDA2Y2ZkMDI1NTM5
YjNlZWYzMWYyNjI5NmVhNmZlY2MwODA3ZTdkYmQuLjkyYmM3OThiN2I4YTUyMzdkYzkzZjJkMTBm
NzBkY2M4OWRjODY0MDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2Ny
aXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cGFyc2VyL25vc2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCkBAIC0xLDE3ICsx
LDI0IEBACiA8aHRtbD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKK2lmICh3
aW5kb3cudGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRl
c3RSdW5uZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5vdmVycmlk
ZVByZWZlcmVuY2UoIldlYktpdEphdmFTY3JpcHRFbmFibGVkIiwgZmFsc2UpOworfQogPC9zY3Jp
cHQ+CiAKIDxub3NjcmlwdD4gCiA8Ym9keT4KLSAgICBUaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0
aGF0IGNvbnRlbnRzIGluc2lkZSAmbHQ7bm9zY3JpcHQmZ3Q7IGFyZSByZW5kZXJlZCB3aGVuIEph
dmFzY3JpcHQgaXMgZGlzYWJsZWQuCi0KLSAgICA8cD5TdWNjZWVkZWQhPC9wPgorICAgIEZBSUw6
IFRoaXMgY29udGVudCBzaG91bGQgbm90IHJlbmRlciBiZWNhdXNlIHdoZXRoZXIgc2NyaXB0aW5n
IGlzIGVuYWJsZWQKKyAgICAoZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgJ25vc2NyaXB0JyB0YWcp
IGlzIGxvY2tlZCBpbiB3aGVuIHRoZSBwYXJzZXIgc3RhcnRzLgogPC9ub3NjcmlwdD4KIAorVGhl
IHRleHQgaW5zaWRlIHRoZSAnbm9zY3JpcHQnIHRhZyBpbnNpZGUgdGhlIGlmcmFtZSBzaG91bGQg
cmVuZGVyOgorCis8aWZyYW1lCisgICAgc3JjPSJkYXRhOnRleHQvaHRtbCw8bm9zY3JpcHQ+PGJv
ZHk+UEFTUzogVGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCBjb250ZW50cyBpbnNpZGUgJmx0
O25vc2NyaXB0Jmd0OyBhcmUgcmVuZGVyZWQgd2hlbiBKYXZhc2NyaXB0IGlzIGRpc2FibGVkLjwv
Ym9keT48L25vc2NyaXB0PiI+Cis8L2lmcmFtZT4KKwogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181597</attachid>
            <date>2013-01-07 16:38:15 -0800</date>
            <delta_ts>2013-01-07 17:23:04 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106256-20130108003520.patch</filename>
            <type>text/plain</type>
            <size>21590</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzOTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ4IEBACisyMDEzLTAxLTA3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgSFRNTFRyZWVCdWlsZGVyIHNob3Vs
ZCBub3QgZGVwZW5kIG9uIEZyYW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDYyNTYKKworICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
KworICAgICAgICBSYXRoZXIgdGhhbiBoYXZlIHRoZSB0cmVlIGJ1aWxkZXIgYXNrIHRoZSBGcmFt
ZSB3aGV0aGVyIHNjcmlwdGluZyBhbmQKKyAgICAgICAgcGx1Z2lucyBhcmUgZW5hYmxlZCwgd2Ug
bm93IHB1c2ggdGhhdCBpbmZvcm1hdGlvbiB0byB0aGUgdHJlZSBidWlsZGVyCisgICAgICAgIHZp
YSBIVE1MUGFyc2VyT3B0aW9ucywgbGV0dGluZyB1cyByZW1vdmUgdGhlIEZyYW1lIGRlcGVuZGVu
Y3kgZnJvbSB0aGUKKyAgICAgICAgdHJlZSBidWlsZGVyLgorCisgICAgICAgIEFzIGEgY29uc2Vx
dWVuY2Ugb2YgdGhpcyBjaGFuZ2UsIHRoZSAic2NyaXB0IGVuYWJsZWQiIGJpdCBpbiB0aGUgcGFy
c2VyCisgICAgICAgIGlzIG5vdyBsb2NrZWQgaW4gd2hlbiB0aGUgcGFyc2VyIHN0YXJ0cy4gVGhp
cyBiaXQgZG9lc24ndCBhY3R1YWxseQorICAgICAgICBjb250cm9sIHdoZW4gc2NyaXB0IGV4ZWN1
dGUsIG9ubHkgaG93IHRoZSA8bm9zY3JpcHQ+IGVsZW1lbnQgaXMgcGFyc2VkLgorCisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OnRva2VuaXplclN0YXRlRm9yQ29udGV4dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRN
TERvY3VtZW50UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxNZXRhQ2hhcnNldFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWV0
YUNoYXJzZXRQYXJzZXI6OkhUTUxNZXRhQ2hhcnNldFBhcnNlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNrRm9yTWV0YUNoYXJzZXQpOgorICAgICAgICAq
IGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxQYXJzZXJPcHRpb25zOjpIVE1MUGFyc2VyT3B0aW9ucyk6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlck9wdGlvbnMuaDoKKyAgICAgICAgKEhUTUxQYXJzZXJPcHRpb25zKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJPcHRpb25zOjpIVE1MUGFyc2VyT3B0aW9ucyk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxvYWRTY2FubmVyKToKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKToKKyAgICAgICAgKiBo
dG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tl
bml6ZXI6OkhUTUxUb2tlbml6ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6
bmV4dFRva2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUb2tlbml6ZXI6OnVwZGF0ZVN0YXRl
Rm9yKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVG9rZW5pemVyOjpjcmVhdGUpOgorICAgICAgICAoSFRNTFRva2VuaXplcik6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5Cb2R5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1N0YXJ0VGFnRm9ySW5IZWFkKToK
KyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaDoKKyAgICAgICAgKiBodG1s
L3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
Vmlld1NvdXJjZVBhcnNlcjo6SFRNTFZpZXdTb3VyY2VQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFZpZXdTb3VyY2VQYXJzZXI6OnVwZGF0ZVRva2VuaXplclN0YXRlKToKKwogMjAxMy0w
MS0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIEludHJvZHVj
ZSBIVE1MUGFyc2VyT3B0aW9ucyB0byBlbmNhcHN1bGF0ZSBIVE1MIHBhcnNlciBvcHRpb25zCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNl
ci5jcHAJKHJldmlzaW9uIDEzOTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxEb2N1bWVudFBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDcgKzQ3LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAogLy8gVGhpcyBpcyBhIGRpcmVjdCB0cmFuc2NyaXB0
aW9uIG9mIHN0ZXAgNCBmcm9tOgogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1h
cHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdGhlLWVuZC5odG1sI2ZyYWdtZW50LWNhc2UKLXN0
YXRpYyBIVE1MVG9rZW5pemVyU3RhdGU6OlN0YXRlIHRva2VuaXplclN0YXRlRm9yQ29udGV4dEVs
ZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvb2wgcmVwb3J0RXJyb3JzKQorc3RhdGlj
IEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgdG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVu
dChFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgYm9vbCByZXBvcnRFcnJvcnMsIGNvbnN0IEhUTUxQ
YXJzZXJPcHRpb25zJiBvcHRpb25zKQogewogICAgIGlmICghY29udGV4dEVsZW1lbnQpCiAgICAg
ICAgIHJldHVybiBIVE1MVG9rZW5pemVyU3RhdGU6OkRhdGFTdGF0ZTsKQEAgLTU5LDggKzU5LDgg
QEAgc3RhdGljIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgdG9rZW5pegogICAgIGlmIChjb250
ZXh0VGFnLm1hdGNoZXMoc3R5bGVUYWcpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyh4
bXBUYWcpCiAgICAgICAgIHx8IGNvbnRleHRUYWcubWF0Y2hlcyhpZnJhbWVUYWcpCi0gICAgICAg
IHx8IChjb250ZXh0VGFnLm1hdGNoZXMobm9lbWJlZFRhZykgJiYgSFRNTFRyZWVCdWlsZGVyOjpw
bHVnaW5zRW5hYmxlZChjb250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCi0gICAg
ICAgIHx8IChjb250ZXh0VGFnLm1hdGNoZXMobm9zY3JpcHRUYWcpICYmIEhUTUxUcmVlQnVpbGRl
cjo6c2NyaXB0RW5hYmxlZChjb250ZXh0RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSkpCisg
ICAgICAgIHx8IChjb250ZXh0VGFnLm1hdGNoZXMobm9lbWJlZFRhZykgJiYgb3B0aW9ucy5wbHVn
aW5zRW5hYmxlZCkKKyAgICAgICAgfHwgKGNvbnRleHRUYWcubWF0Y2hlcyhub3NjcmlwdFRhZykg
JiYgb3B0aW9ucy5zY3JpcHRFbmFibGVkKQogICAgICAgICB8fCBjb250ZXh0VGFnLm1hdGNoZXMo
bm9mcmFtZXNUYWcpKQogICAgICAgICByZXR1cm4gcmVwb3J0RXJyb3JzID8gSFRNTFRva2VuaXpl
clN0YXRlOjpSQVdURVhUU3RhdGUgOiBIVE1MVG9rZW5pemVyU3RhdGU6OlBMQUlOVEVYVFN0YXRl
OwogICAgIGlmIChjb250ZXh0VGFnLm1hdGNoZXMoc2NyaXB0VGFnKSkKQEAgLTczLDcgKzczLDcg
QEAgc3RhdGljIEhUTUxUb2tlbml6ZXJTdGF0ZTo6U3RhdGUgdG9rZW5pegogSFRNTERvY3VtZW50
UGFyc2VyOjpIVE1MRG9jdW1lbnRQYXJzZXIoSFRNTERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBy
ZXBvcnRFcnJvcnMpCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZG9jdW1lbnQpCiAg
ICAgLCBtX29wdGlvbnMoZG9jdW1lbnQpCi0gICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVy
OjpjcmVhdGUobV9vcHRpb25zLnVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKSkKKyAgICAsIG1fdG9r
ZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShtX29wdGlvbnMpKQogICAgICwgbV9zY3JpcHRS
dW5uZXIoSFRNTFNjcmlwdFJ1bm5lcjo6Y3JlYXRlKGRvY3VtZW50LCB0aGlzKSkKICAgICAsIG1f
dHJlZUJ1aWxkZXIoSFRNTFRyZWVCdWlsZGVyOjpjcmVhdGUodGhpcywgZG9jdW1lbnQsIHJlcG9y
dEVycm9ycywgbV9vcHRpb25zKSkKICAgICAsIG1fcGFyc2VyU2NoZWR1bGVyKEhUTUxQYXJzZXJT
Y2hlZHVsZXI6OmNyZWF0ZSh0aGlzKSkKQEAgLTg4LDE0ICs4OCwxNCBAQCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OkhUTUxEb2N1bWVudFBhcnNlcihICiBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1
bWVudFBhcnNlcihEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIEZyYWdtZW50U2NyaXB0aW5nUGVybWlzc2lvbiBzY3JpcHRpbmdQZXJtaXNzaW9uKQog
ICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGZyYWdtZW50LT5kb2N1bWVudCgpKQogICAg
ICwgbV9vcHRpb25zKGZyYWdtZW50LT5kb2N1bWVudCgpKQotICAgICwgbV90b2tlbml6ZXIoSFRN
TFRva2VuaXplcjo6Y3JlYXRlKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcykpCisg
ICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUobV9vcHRpb25zKSkKICAgICAs
IG1fdHJlZUJ1aWxkZXIoSFRNTFRyZWVCdWlsZGVyOjpjcmVhdGUodGhpcywgZnJhZ21lbnQsIGNv
bnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9uLCBtX29wdGlvbnMpKQogICAgICwgbV94
c3NBdWRpdG9yKHRoaXMpCiAgICAgLCBtX2VuZFdhc0RlbGF5ZWQoZmFsc2UpCiAgICAgLCBtX3B1
bXBTZXNzaW9uTmVzdGluZ0xldmVsKDApCiB7CiAgICAgYm9vbCByZXBvcnRFcnJvcnMgPSBmYWxz
ZTsgLy8gRm9yIG5vdyBkb2N1bWVudCBmcmFnbWVudCBwYXJzaW5nIG5ldmVyIHJlcG9ydHMgZXJy
b3JzLgotICAgIG1fdG9rZW5pemVyLT5zZXRTdGF0ZSh0b2tlbml6ZXJTdGF0ZUZvckNvbnRleHRF
bGVtZW50KGNvbnRleHRFbGVtZW50LCByZXBvcnRFcnJvcnMpKTsKKyAgICBtX3Rva2VuaXplci0+
c2V0U3RhdGUodG9rZW5pemVyU3RhdGVGb3JDb250ZXh0RWxlbWVudChjb250ZXh0RWxlbWVudCwg
cmVwb3J0RXJyb3JzLCBtX29wdGlvbnMpKTsKIH0KIAogSFRNTERvY3VtZW50UGFyc2VyOjp+SFRN
TERvY3VtZW50UGFyc2VyKCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxN
ZXRhQ2hhcnNldFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAkocmV2aXNpb24gMTM5MDA5KQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTE1ldGFDaGFyc2V0UGFyc2VyLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjgsNiArMjgsNyBAQAogCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5j
bHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgorI2luY2x1ZGUgIkhUTUxQYXJzZXJPcHRpb25zLmgi
CiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1ZGUgIlRleHRDb2RlYy5oIgogI2lu
Y2x1ZGUgIlRleHRFbmNvZGluZ1JlZ2lzdHJ5LmgiCkBAIC00MCw3ICs0MSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIEhUTUxNZXRhQ2hhcnNl
dFBhcnNlcjo6SFRNTE1ldGFDaGFyc2V0UGFyc2VyKCkKLSAgICA6IG1fdG9rZW5pemVyKEhUTUxU
b2tlbml6ZXI6OmNyZWF0ZShmYWxzZSkpIC8vIE5vIHByZS1IVE1MNSBwYXJzZXIgcXVpcmtzLgor
ICAgIDogbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3JlYXRlKEhUTUxQYXJzZXJPcHRpb25z
KDApKSkKICAgICAsIG1fYXNzdW1lZENvZGVjKG5ld1RleHRDb2RlYyhMYXRpbjFFbmNvZGluZygp
KSkKICAgICAsIG1faW5IZWFkU2VjdGlvbih0cnVlKQogICAgICwgbV9kb25lQ2hlY2tpbmcoZmFs
c2UpCkBAIC0xNzksNyArMTgwLDcgQEAgYm9vbCBIVE1MTWV0YUNoYXJzZXRQYXJzZXI6OmNoZWNr
Rm9yTWV0YQogICAgICAgICBpZiAoZW5kIHx8IG1fdG9rZW4udHlwZSgpID09IEhUTUxUb2tlblR5
cGVzOjpTdGFydFRhZykgewogICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRhZ05hbWUobV90b2tl
bi5uYW1lKCkuZGF0YSgpLCBtX3Rva2VuLm5hbWUoKS5zaXplKCkpOwogICAgICAgICAgICAgaWYg
KCFlbmQpIHsKLSAgICAgICAgICAgICAgICBtX3Rva2VuaXplci0+dXBkYXRlU3RhdGVGb3IodGFn
TmFtZSwgMCk7CisgICAgICAgICAgICAgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRh
Z05hbWUpOwogICAgICAgICAgICAgICAgIGlmICh0YWdOYW1lID09IG1ldGFUYWcgJiYgcHJvY2Vz
c01ldGEoKSkgewogICAgICAgICAgICAgICAgICAgICBtX2RvbmVDaGVja2luZyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJPcHRpb25zLmNwcAkocmV2aXNpb24gMTM5MDA5KQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNywxNCArMjcsMTggQEAKICNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9u
cy5oIgogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIlNldHRpbmdzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogSFRNTFBhcnNlck9wdGlv
bnM6OkhUTUxQYXJzZXJPcHRpb25zKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBBU1NFUlQo
ZG9jdW1lbnQpOwotICAgIFNldHRpbmdzKiBzZXR0aW5ncyA9IGRvY3VtZW50LT5zZXR0aW5ncygp
OworICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmZyYW1lKCkgOiAwOwor
ICAgIHNjcmlwdEVuYWJsZWQgPSBmcmFtZSAmJiBmcmFtZS0+c2NyaXB0KCktPmNhbkV4ZWN1dGVT
Y3JpcHRzKE5vdEFib3V0VG9FeGVjdXRlU2NyaXB0KTsKKyAgICBwbHVnaW5zRW5hYmxlZCA9IGZy
YW1lICYmIGZyYW1lLT5sb2FkZXIoKS0+c3ViZnJhbWVMb2FkZXIoKS0+YWxsb3dQbHVnaW5zKE5v
dEFib3V0VG9JbnN0YW50aWF0ZVBsdWdpbik7CisKKyAgICBTZXR0aW5ncyogc2V0dGluZ3MgPSBk
b2N1bWVudCA/IGRvY3VtZW50LT5zZXR0aW5ncygpIDogMDsKICAgICB1c2VQcmVIVE1MNVBhcnNl
clF1aXJrcyA9IHNldHRpbmdzICYmIHNldHRpbmdzLT51c2VQcmVIVE1MNVBhcnNlclF1aXJrcygp
OwogICAgIG1heGltdW1ET01UcmVlRGVwdGggPSBzZXR0aW5ncyA/IHNldHRpbmdzLT5tYXhpbXVt
SFRNTFBhcnNlckRPTVRyZWVEZXB0aCgpIDogU2V0dGluZ3M6OmRlZmF1bHRNYXhpbXVtSFRNTFBh
cnNlckRPTVRyZWVEZXB0aDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJPcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlck9wdGlvbnMuaAkocmV2aXNpb24gMTM5MDA5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlck9wdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
MTUgKzMyLDExIEBAIGNsYXNzIERvY3VtZW50OwogCiBjbGFzcyBIVE1MUGFyc2VyT3B0aW9ucyB7
CiBwdWJsaWM6CisgICAgYm9vbCBzY3JpcHRFbmFibGVkOworICAgIGJvb2wgcGx1Z2luc0VuYWJs
ZWQ7CiAgICAgYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrczsKICAgICB1bnNpZ25lZCBtYXhp
bXVtRE9NVHJlZURlcHRoOwogCi0gICAgSFRNTFBhcnNlck9wdGlvbnMoKQotICAgICAgICA6IHVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKGZhbHNlKQotICAgICAgICAsIG1heGltdW1ET01UcmVlRGVw
dGgoMCkKLSAgICB7Ci0gICAgfQotCiAgICAgZXhwbGljaXQgSFRNTFBhcnNlck9wdGlvbnMoRG9j
dW1lbnQqKTsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVs
b2FkU2Nhbm5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFByZWxvYWRTY2FubmVyLmNwcAkocmV2aXNpb24gMTM5MDA5KQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MTY1LDcgKzE2NSw3IEBAIHByaXZhdGU6CiBIVE1MUHJlbG9hZFNjYW5uZXI6OkhUTUxQcmVsb2Fk
U2Nhbm5lcihEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEhUTUxQYXJzZXJPcHRpb25zJiBvcHRp
b25zKQogICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKICAgICAsIG1fY3NzU2Nhbm5lcihkb2N1
bWVudCkKLSAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6OmNyZWF0ZShvcHRpb25zLnVz
ZVByZUhUTUw1UGFyc2VyUXVpcmtzKSkKKyAgICAsIG1fdG9rZW5pemVyKEhUTUxUb2tlbml6ZXI6
OmNyZWF0ZShvcHRpb25zKSkKICAgICAsIG1faW5TdHlsZShmYWxzZSkKIHsKIH0KQEAgLTIwMyw3
ICsyMDMsNyBAQCB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2VuKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUHJlbG9hZFRhc2sgdGFzayhtX3Rva2VuKTsKLSAgICBtX3Rva2Vu
aXplci0+dXBkYXRlU3RhdGVGb3IodGFzay50YWdOYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCkp
OworICAgIG1fdG9rZW5pemVyLT51cGRhdGVTdGF0ZUZvcih0YXNrLnRhZ05hbWUoKSk7CiAKICAg
ICBpZiAodGFzay50YWdOYW1lKCkgPT0gc3R5bGVUYWcpCiAgICAgICAgIG1faW5TdHlsZSA9IHRy
dWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmNw
cAkocmV2aXNpb24gMTM5MDA5KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRv
a2VuaXplci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwNyw4ICsxMDcsOCBAQCBzdGF0aWMgaW5s
aW5lIGJvb2wgaXNFbmRUYWdCdWZmZXJpbmdTdGF0CiAjZGVmaW5lIEhUTUxfQURWQU5DRV9UTyhz
dGF0ZU5hbWUpIEFEVkFOQ0VfVE8oSFRNTFRva2VuaXplclN0YXRlLCBzdGF0ZU5hbWUpCiAjZGVm
aW5lIEhUTUxfU1dJVENIX1RPKHN0YXRlTmFtZSkgU1dJVENIX1RPKEhUTUxUb2tlbml6ZXJTdGF0
ZSwgc3RhdGVOYW1lKQogCi1IVE1MVG9rZW5pemVyOjpIVE1MVG9rZW5pemVyKGJvb2wgdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MpCi0gICAgOiBtX3VzZVByZUhUTUw1UGFyc2VyUXVpcmtzKHVzZVBy
ZUhUTUw1UGFyc2VyUXVpcmtzKQorSFRNTFRva2VuaXplcjo6SFRNTFRva2VuaXplcihjb25zdCBI
VE1MUGFyc2VyT3B0aW9ucyYgb3B0aW9ucykKKyAgICA6IG1fb3B0aW9ucyhvcHRpb25zKQogewog
ICAgIHJlc2V0KCk7CiB9CkBAIC0zNDMsNyArMzQzLDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkUwogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNlbGZDbG9z
aW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYg
Y2MgPT0gJzwnKQorICAgICAgICBlbHNlIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJR
dWlya3MgJiYgY2MgPT0gJzwnKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBp
ZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9OYW1l
KHRvTG93ZXJDYXNlKGNjKSk7CkBAIC04MTQsNyArODE0LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVy
OjpuZXh0VG9rZW4oU2VnbWVudGVkUwogICAgICAgICAgICAgSFRNTF9BRFZBTkNFX1RPKFNlbGZD
bG9zaW5nU3RhcnRUYWdTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAgICAg
ICAgICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6
OkRhdGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3Mg
JiYgY2MgPT0gJzwnKQorICAgICAgICBlbHNlIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3MgJiYgY2MgPT0gJzwnKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1
bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxz
ZSBpZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0
cmlidXRlKCk7CkBAIC04NDgsNyArODQ4LDcgQEAgYm9vbCBIVE1MVG9rZW5pemVyOjpuZXh0VG9r
ZW4oU2VnbWVudGVkUwogICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAg
ICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlc3VtZUluKHNvdXJjZSwgSFRN
TFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwotICAgICAgICB9IGVsc2UgaWYgKG1fdXNlUHJl
SFRNTDVQYXJzZXJRdWlya3MgJiYgY2MgPT0gJzwnKSB7CisgICAgICAgIH0gZWxzZSBpZiAobV9v
cHRpb25zLnVzZVByZUhUTUw1UGFyc2VyUXVpcmtzICYmIGNjID09ICc8JykgewogICAgICAgICAg
ICAgbV90b2tlbi0+ZW5kQXR0cmlidXRlTmFtZShzb3VyY2UubnVtYmVyT2ZDaGFyYWN0ZXJzQ29u
c3VtZWQoKSk7CiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJjZSwg
SFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICB9IGVsc2UgaWYgKGlzQVND
SUlVcHBlcihjYykpIHsKQEAgLTg3Niw3ICs4NzYsNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5l
eHRUb2tlbihTZWdtZW50ZWRTCiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oQmVmb3JlQXR0
cmlidXRlVmFsdWVTdGF0ZSk7CiAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykKICAgICAgICAg
ICAgIHJldHVybiBlbWl0QW5kUmVzdW1lSW4oc291cmNlLCBIVE1MVG9rZW5pemVyU3RhdGU6OkRh
dGFTdGF0ZSk7Ci0gICAgICAgIGVsc2UgaWYgKG1fdXNlUHJlSFRNTDVQYXJzZXJRdWlya3MgJiYg
Y2MgPT0gJzwnKQorICAgICAgICBlbHNlIGlmIChtX29wdGlvbnMudXNlUHJlSFRNTDVQYXJzZXJR
dWlya3MgJiYgY2MgPT0gJzwnKQogICAgICAgICAgICAgcmV0dXJuIGVtaXRBbmRSZWNvbnN1bWVJ
bihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRlKTsKICAgICAgICAgZWxzZSBp
ZiAoaXNBU0NJSVVwcGVyKGNjKSkgewogICAgICAgICAgICAgbV90b2tlbi0+YWRkTmV3QXR0cmli
dXRlKCk7CkBAIC0xMDE5LDcgKzEwMTksNyBAQCBib29sIEhUTUxUb2tlbml6ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTCiAgICAgICAgICAgICBIVE1MX0FEVkFOQ0VfVE8oU2VsZkNsb3NpbmdTdGFy
dFRhZ1N0YXRlKTsKICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKQogICAgICAgICAgICAgcmV0
dXJuIGVtaXRBbmRSZXN1bWVJbihzb3VyY2UsIEhUTUxUb2tlbml6ZXJTdGF0ZTo6RGF0YVN0YXRl
KTsKLSAgICAgICAgZWxzZSBpZiAobV91c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAmJiBjYyA9PSAn
PCcpCisgICAgICAgIGVsc2UgaWYgKG1fb3B0aW9ucy51c2VQcmVIVE1MNVBhcnNlclF1aXJrcyAm
JiBjYyA9PSAnPCcpCiAgICAgICAgICAgICByZXR1cm4gZW1pdEFuZFJlY29uc3VtZUluKHNvdXJj
ZSwgSFRNTFRva2VuaXplclN0YXRlOjpEYXRhU3RhdGUpOwogICAgICAgICBlbHNlIGlmIChjYyA9
PSBJbnB1dFN0cmVhbVByZXByb2Nlc3Nvcjo6ZW5kT2ZGaWxlTWFya2VyKSB7CiAgICAgICAgICAg
ICBwYXJzZUVycm9yKCk7CkBAIC0xNTg5LDcgKzE1ODksNyBAQCBTdHJpbmcgSFRNTFRva2VuaXpl
cjo6YnVmZmVyZWRDaGFyYWN0ZXJzCiAgICAgcmV0dXJuIGNoYXJhY3RlcnMudG9TdHJpbmcoKTsK
IH0KIAotdm9pZCBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvcihjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUsIEZyYW1lKiBmcmFtZSkKK3ZvaWQgSFRNTFRva2VuaXplcjo6dXBkYXRlU3Rh
dGVGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdOYW1lKQogewogICAgIGlmICh0YWdOYW1lID09
IHRleHRhcmVhVGFnIHx8IHRhZ05hbWUgPT0gdGl0bGVUYWcpCiAgICAgICAgIHNldFN0YXRlKEhU
TUxUb2tlbml6ZXJTdGF0ZTo6UkNEQVRBU3RhdGUpOwpAQCAtMTYwMCw5ICsxNjAwLDkgQEAgdm9p
ZCBIVE1MVG9rZW5pemVyOjp1cGRhdGVTdGF0ZUZvcihjb25zdAogICAgIGVsc2UgaWYgKHRhZ05h
bWUgPT0gc3R5bGVUYWcKICAgICAgICAgfHwgdGFnTmFtZSA9PSBpZnJhbWVUYWcKICAgICAgICAg
fHwgdGFnTmFtZSA9PSB4bXBUYWcKLSAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9lbWJlZFRhZyAm
JiBIVE1MVHJlZUJ1aWxkZXI6OnBsdWdpbnNFbmFibGVkKGZyYW1lKSkKKyAgICAgICAgfHwgKHRh
Z05hbWUgPT0gbm9lbWJlZFRhZyAmJiBtX29wdGlvbnMucGx1Z2luc0VuYWJsZWQpCiAgICAgICAg
IHx8IHRhZ05hbWUgPT0gbm9mcmFtZXNUYWcKLSAgICAgICAgfHwgKHRhZ05hbWUgPT0gbm9zY3Jp
cHRUYWcgJiYgSFRNTFRyZWVCdWlsZGVyOjpzY3JpcHRFbmFibGVkKGZyYW1lKSkpCisgICAgICAg
IHx8ICh0YWdOYW1lID09IG5vc2NyaXB0VGFnICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSkK
ICAgICAgICAgc2V0U3RhdGUoSFRNTFRva2VuaXplclN0YXRlOjpSQVdURVhUU3RhdGUpOwogfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5oCShyZXZp
c2lvbiAxMzkwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW5pemVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDE0ICsyNywxMyBAQAogI2lmbmRlZiBIVE1MVG9rZW5p
emVyX2gKICNkZWZpbmUgSFRNTFRva2VuaXplcl9oCiAKKyNpbmNsdWRlICJIVE1MUGFyc2VyT3B0
aW9ucy5oIgogI2luY2x1ZGUgIkhUTUxUb2tlbi5oIgogI2luY2x1ZGUgIk1hcmt1cFRva2VuaXpl
ckJhc2UuaCIKICNpbmNsdWRlICJTZWdtZW50ZWRTdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBGcmFtZTsKLQogY2xhc3MgSFRNTFRva2VuaXplclN0YXRlIHsKIHB1Ymxp
YzoKICAgICBlbnVtIFN0YXRlIHsKQEAgLTEyMCw3ICsxMTksNyBAQCBjbGFzcyBIVE1MVG9rZW5p
emVyIDogcHVibGljIE1hcmt1cFRva2VuCiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSFRNTFRv
a2VuaXplcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFBhc3NPd25QdHI8SFRNTFRva2VuaXplcj4gY3JlYXRlKGJvb2wgdXNlUHJlSFRNTDVQYXJz
ZXJRdWlya3MpIHsgcmV0dXJuIGFkb3B0UHRyKG5ldyBIVE1MVG9rZW5pemVyKHVzZVByZUhUTUw1
UGFyc2VyUXVpcmtzKSk7IH0KKyAgICBzdGF0aWMgUGFzc093blB0cjxIVE1MVG9rZW5pemVyPiBj
cmVhdGUoY29uc3QgSFRNTFBhcnNlck9wdGlvbnMmIG9wdGlvbnMpIHsgcmV0dXJuIGFkb3B0UHRy
KG5ldyBIVE1MVG9rZW5pemVyKG9wdGlvbnMpKTsgfQogICAgIH5IVE1MVG9rZW5pemVyKCk7CiAK
ICAgICB2b2lkIHJlc2V0KCk7CkBAIC0xNTcsNyArMTU2LDcgQEAgcHVibGljOgogICAgIC8vICAq
IENEQVRBIHNlY3Rpb25zIGluIGZvcmVpZ24gY29udGVudCB3aWxsIGJlIHRva2VuaXplZCBhcyBi
b2d1cyBjb21tZW50cwogICAgIC8vICAgIGluc3RlYWQgb2YgYXMgY2hhcmFjdGVyIHRva2Vucy4K
ICAgICAvLwotICAgIHZvaWQgdXBkYXRlU3RhdGVGb3IoY29uc3QgQXRvbWljU3RyaW5nJiB0YWdO
YW1lLCBGcmFtZSopOworICAgIHZvaWQgdXBkYXRlU3RhdGVGb3IoY29uc3QgQXRvbWljU3RyaW5n
JiB0YWdOYW1lKTsKIAogICAgIGJvb2wgZm9yY2VOdWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQoKSBj
b25zdCB7IHJldHVybiBtX2ZvcmNlTnVsbENoYXJhY3RlclJlcGxhY2VtZW50OyB9CiAgICAgdm9p
ZCBzZXRGb3JjZU51bGxDaGFyYWN0ZXJSZXBsYWNlbWVudChib29sIHZhbHVlKSB7IG1fZm9yY2VO
dWxsQ2hhcmFjdGVyUmVwbGFjZW1lbnQgPSB2YWx1ZTsgfQpAQCAtMTY2LDcgKzE2NSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldFNob3VsZEFsbG93Q0RBVEEoYm9vbCB2YWx1ZSkgeyBtX3Nob3Vs
ZEFsbG93Q0RBVEEgPSB2YWx1ZTsgfQogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IEhUTUxUb2tl
bml6ZXIoYm9vbCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyk7CisgICAgZXhwbGljaXQgSFRNTFRv
a2VuaXplcihjb25zdCBIVE1MUGFyc2VyT3B0aW9ucyYpOwogCiAgICAgaW5saW5lIGJvb2wgcHJv
Y2Vzc0VudGl0eShTZWdtZW50ZWRTdHJpbmcmKTsKIApAQCAtMjE2LDcgKzIxNSw3IEBAIHByaXZh
dGU6CiAgICAgLy8gdG9rZW4gaGVyZSBzbyB3ZSByZW1lbWJlciBpdCBuZXh0IHRpbWUgd2UgcmUt
ZW50ZXIgdGhlIHRva2VuaXplci4KICAgICBWZWN0b3I8TENoYXIsIDMyPiBtX2J1ZmZlcmVkRW5k
VGFnTmFtZTsKIAotICAgIGJvb2wgbV91c2VQcmVIVE1MNVBhcnNlclF1aXJrczsKKyAgICBIVE1M
UGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiB9OwogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJldmlzaW9uIDEzOTAwOSkKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRl
ICJEb2N1bWVudEZyYWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRUeXBlLmgiCi0jaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRG9j
dW1lbnRQYXJzZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudEZhY3RvcnkuaCIKQEAgLTg5NCwx
MSArODkzLDExIEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3IKICAg
ICAgICAgcHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcodG9rZW4pOwogICAgICAgICByZXR1
cm47CiAgICAgfQotICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG5vZW1iZWRUYWcgJiYgcGx1Z2lu
c0VuYWJsZWQobV9kb2N1bWVudC0+ZnJhbWUoKSkpIHsKKyAgICBpZiAodG9rZW4tPm5hbWUoKSA9
PSBub2VtYmVkVGFnICYmIG1fb3B0aW9ucy5wbHVnaW5zRW5hYmxlZCkgewogICAgICAgICBwcm9j
ZXNzR2VuZXJpY1Jhd1RleHRTdGFydFRhZyh0b2tlbik7CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgaWYgKHRva2VuLT5uYW1lKCkgPT0gbm9zY3JpcHRUYWcgJiYgc2NyaXB0RW5hYmxlZCht
X2RvY3VtZW50LT5mcmFtZSgpKSkgeworICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG5vc2NyaXB0
VGFnICYmIG1fb3B0aW9ucy5zY3JpcHRFbmFibGVkKSB7CiAgICAgICAgIHByb2Nlc3NHZW5lcmlj
UmF3VGV4dFN0YXJ0VGFnKHRva2VuKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTI2OTAs
NyArMjY4OSw3IEBAIGJvb2wgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzU3RhcnRUYWdGb3IKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIGlmICh0b2tlbi0+bmFtZSgpID09IG5vc2Ny
aXB0VGFnKSB7Ci0gICAgICAgIGlmIChzY3JpcHRFbmFibGVkKG1fZG9jdW1lbnQtPmZyYW1lKCkp
KSB7CisgICAgICAgIGlmIChtX29wdGlvbnMuc2NyaXB0RW5hYmxlZCkgewogICAgICAgICAgICAg
cHJvY2Vzc0dlbmVyaWNSYXdUZXh0U3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIH0KQEAgLTI5MTMsMTggKzI5MTIsNCBAQCB2b2lkIEhUTUxUcmVlQnVp
bGRlcjo6cGFyc2VFcnJvcihBdG9taWNICiB7CiB9CiAKLWJvb2wgSFRNTFRyZWVCdWlsZGVyOjpz
Y3JpcHRFbmFibGVkKEZyYW1lKiBmcmFtZSkKLXsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lLT5zY3JpcHQoKS0+Y2FuRXhlY3V0ZVNjcmlw
dHMoTm90QWJvdXRUb0V4ZWN1dGVTY3JpcHQpOwotfQotCi1ib29sIEhUTUxUcmVlQnVpbGRlcjo6
cGx1Z2luc0VuYWJsZWQoRnJhbWUqIGZyYW1lKQotewotICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gZnJhbWUtPmxvYWRlcigpLT5zdWJmcmFtZUxvYWRl
cigpLT5hbGxvd1BsdWdpbnMoTm90QWJvdXRUb0luc3RhbnRpYXRlUGx1Z2luKTsKLX0KLQogfQpJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgJKHJl
dmlzaW9uIDEzOTAwOSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC05MSw5ICs5MSw2IEBAIHB1YmxpYzoKIAogICAgIHZv
aWQgc2V0U2hvdWxkU2tpcExlYWRpbmdOZXdsaW5lKGJvb2wgc2hvdWxkU2tpcCkgeyBtX3Nob3Vs
ZFNraXBMZWFkaW5nTmV3bGluZSA9IHNob3VsZFNraXA7IH0KIAotICAgIHN0YXRpYyBib29sIHNj
cmlwdEVuYWJsZWQoRnJhbWUqKTsKLSAgICBzdGF0aWMgYm9vbCBwbHVnaW5zRW5hYmxlZChGcmFt
ZSopOwotCiBwcml2YXRlOgogICAgIGNsYXNzIEV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI7
CiAgICAgLy8gUmVwcmVzZW50cyBIVE1MNSAiaW5zZXJ0aW9uIG1vZGUiCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1NvdXJjZVBhcnNlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMzkwMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVmlld1Nv
dXJjZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBIVE1MVmlld1NvdXJjZVBhcnNlcjo6SFRNTFZpZXdTb3VyY2VQYXJzZXIo
SFRNTFZpZXdTb3VyY2VEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBEZWNvZGVkRGF0YURvY3Vt
ZW50UGFyc2VyKGRvY3VtZW50KQotICAgICwgbV90b2tlbml6ZXIoSFRNTFRva2VuaXplcjo6Y3Jl
YXRlKEhUTUxQYXJzZXJPcHRpb25zKGRvY3VtZW50KS51c2VQcmVIVE1MNVBhcnNlclF1aXJrcykp
CisgICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUoSFRNTFBhcnNlck9wdGlv
bnMoZG9jdW1lbnQpKSkKIHsKIH0KIApAQCAtODAsNyArODAsNyBAQCB2b2lkIEhUTUxWaWV3U291
cmNlUGFyc2VyOjp1cGRhdGVUb2tlbml6CiAgICAgICAgIHJldHVybjsKIAogICAgIEF0b21pY1N0
cmluZyB0YWdOYW1lKG1fdG9rZW4ubmFtZSgpLmRhdGEoKSwgbV90b2tlbi5uYW1lKCkuc2l6ZSgp
KTsKLSAgICBtX3Rva2VuaXplci0+dXBkYXRlU3RhdGVGb3IodGFnTmFtZSwgZG9jdW1lbnQoKS0+
ZnJhbWUoKSk7CisgICAgbV90b2tlbml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRhZ05hbWUpOwogfQog
CiB2b2lkIEhUTUxWaWV3U291cmNlUGFyc2VyOjpmaW5pc2goKQpJbmRleDogTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24g
MTM5MDA5KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMTggQEAKKzIwMTMtMDEtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBIVE1MVHJlZUJ1aWxkZXIgc2hvdWxkIG5vdCBkZXBlbmQgb24gRnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjI1NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgorCisgICAgICAgIEkgbmVlZGVkIHRvIHVwZGF0
ZSB0aGlzIHRlc3Qgc2xpZ2h0bHkgYmVjYXVzZSBub3cgd2UgbG9jayBpbiB0aGUKKyAgICAgICAg
InNjcmlwdCBlbmFibGVkIiBiaXQgZm9yIHRoZSBwYXJzZXIgd2hlbiB0aGUgcGFyc2VyIHN0YXJ0
cy4gVGhhdCBtZWFucworICAgICAgICB3ZSdsbCBwYXJzZSB0aGUgZG9jdW1lbnQgaW4gYSBjb25z
aXN0ZW50IHdheSBldmVuIGlmIHRoZSAic2NyaXB0CisgICAgICAgIGVuYWJsZWQiIGJpdCBnZXRz
IGZsaXBwZWQgbGF0ZXIuCisKKyAgICAgICAgKiBmYXN0L3BhcnNlci9ub3NjcmlwdC13aXRoLWph
dmFzY3JpcHQtZGlzYWJsZWQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvcGFyc2VyL25v
c2NyaXB0LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC5odG1sOgorCiAyMDEzLTAxLTA3ICBSeW9z
dWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAgIEFkZCBNYWMgTGlvbiByZXN1
bHQgYWZ0ZXIgcjEzODk4Ni4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0
LXdpdGgtamF2YXNjcmlwdC1kaXNhYmxlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMTM5MDA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIv
bm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSwyICsxLDYgQEAKLVRoaXMgdGVzdCBjYXNlIHZlcmlmaWVzIHRoYXQgY29udGVu
dHMgaW5zaWRlIDxub3NjcmlwdD4gYXJlIHJlbmRlcmVkIHdoZW4gSmF2YXNjcmlwdCBpcyBkaXNh
YmxlZC4KLVN1Y2NlZWRlZCEKK1RoZSB0ZXh0IGluc2lkZSB0aGUgJ25vc2NyaXB0JyB0YWcgaW5z
aWRlIHRoZSBpZnJhbWUgc2hvdWxkIHJlbmRlcjogIAorCistLS0tLS0tLQorRnJhbWU6ICc8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPicKKy0tLS0tLS0tCitQQVNTOiBUaGlzIHRlc3Qg
Y2FzZSB2ZXJpZmllcyB0aGF0IGNvbnRlbnRzIGluc2lkZSBhcmUgcmVuZGVyZWQgd2hlbiBKYXZh
c2NyaXB0IGlzIGRpc2FibGVkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9wYXJzZXIvbm9zY3Jp
cHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9wYXJzZXIvbm9zY3JpcHQtd2l0aC1qYXZhc2NyaXB0LWRpc2FibGVkLmh0bWwJKHJl
dmlzaW9uIDEzOTAwOSkKKysrIExheW91dFRlc3RzL2Zhc3QvcGFyc2VyL25vc2NyaXB0LXdpdGgt
amF2YXNjcmlwdC1kaXNhYmxlZC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0xLDE3ICsxLDI0IEBA
CiA8aHRtbD4KIAogPHNjcmlwdD4KLWlmICh3aW5kb3cudGVzdFJ1bm5lcikKK2lmICh3aW5kb3cu
dGVzdFJ1bm5lcikgewogICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIHRlc3RSdW5u
ZXIuZHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7CiAgICAgdGVzdFJ1bm5lci5vdmVycmlkZVByZWZl
cmVuY2UoIldlYktpdEphdmFTY3JpcHRFbmFibGVkIiwgZmFsc2UpOworfQogPC9zY3JpcHQ+CiAK
IDxub3NjcmlwdD4gCiA8Ym9keT4KLSAgICBUaGlzIHRlc3QgY2FzZSB2ZXJpZmllcyB0aGF0IGNv
bnRlbnRzIGluc2lkZSAmbHQ7bm9zY3JpcHQmZ3Q7IGFyZSByZW5kZXJlZCB3aGVuIEphdmFzY3Jp
cHQgaXMgZGlzYWJsZWQuCi0KLSAgICA8cD5TdWNjZWVkZWQhPC9wPgorICAgIEZBSUw6IFRoaXMg
Y29udGVudCBzaG91bGQgbm90IHJlbmRlciBiZWNhdXNlIHdoZXRoZXIgc2NyaXB0aW5nIGlzIGVu
YWJsZWQKKyAgICAoZm9yIHRoZSBwdXJwb3NlcyBvZiB0aGUgJ25vc2NyaXB0JyB0YWcpIGlzIGxv
Y2tlZCBpbiB3aGVuIHRoZSBwYXJzZXIgc3RhcnRzLgogPC9ub3NjcmlwdD4KIAorVGhlIHRleHQg
aW5zaWRlIHRoZSAnbm9zY3JpcHQnIHRhZyBpbnNpZGUgdGhlIGlmcmFtZSBzaG91bGQgcmVuZGVy
OgorCis8aWZyYW1lCisgICAgc3JjPSJkYXRhOnRleHQvaHRtbCw8bm9zY3JpcHQ+PGJvZHk+UEFT
UzogVGhpcyB0ZXN0IGNhc2UgdmVyaWZpZXMgdGhhdCBjb250ZW50cyBpbnNpZGUgJmx0O25vc2Ny
aXB0Jmd0OyBhcmUgcmVuZGVyZWQgd2hlbiBKYXZhc2NyaXB0IGlzIGRpc2FibGVkLjwvYm9keT48
L25vc2NyaXB0PiI+Cis8L2lmcmFtZT4KKwogPC9ib2R5PgogPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>