<?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>64369</bug_id>
          
          <creation_ts>2011-07-12 10:47:10 -0700</creation_ts>
          <short_desc>PreloadScanner should reuse tokens from the parser</short_desc>
          <delta_ts>2011-07-13 07:46:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>57376</dup_id>
          
          <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="Balazs Kelemen">kbalazs</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>loki</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>435740</commentid>
    <comment_count>0</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-12 10:47:10 -0700</bug_when>
    <thetext>... and not retokenize the input.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435785</commentid>
    <comment_count>1</comment_count>
      <attachid>100524</attachid>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-12 11:09:03 -0700</bug_when>
    <thetext>Created attachment 100524
WIP patch

This is a work in progress patch. I welcome your feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435788</commentid>
    <comment_count>2</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-12 11:13:30 -0700</bug_when>
    <thetext>Performance results on PerformanceTests/Parser/html-parser.html are not really encouraging.
Reference:
avg 1736
median 1735.5
stdev 6.957010852370434
min 1717
max 1748

Patched:
avg 1881.35
median 1882
stdev 4.33906671992953
min 1865
max 1886</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435794</commentid>
    <comment_count>3</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-12 11:15:32 -0700</bug_when>
    <thetext>The idea for this work is came from https://bugs.webkit.org/show_bug.cgi?id=63531.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>435825</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-12 11:44:13 -0700</bug_when>
    <thetext>You might have better luck caching AtomicHTMLTokens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436416</commentid>
    <comment_count>5</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-13 07:09:24 -0700</bug_when>
    <thetext>After some investigation I think the whole idea is wrong. I thought that the preload scanner scanning the input again after the parser but now it seems to be it does not. The preload scanner only scans text that the parser has not seen yet. In this case it is useless to feed it with &quot;old&quot; tokens. Adam, could you validate this for me? Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436424</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Gentilcore">tonyg</who>
    <bug_when>2011-07-13 07:18:45 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; After some investigation I think the whole idea is wrong. I thought that the preload scanner scanning the input again after the parser but now it seems to be it does not. The preload scanner only scans text that the parser has not seen yet. In this case it is useless to feed it with &quot;old&quot; tokens. Adam, could you validate this for me? Thanks.

It is the other way around. The preload scanner should feed its tokens to the parser. There is no case where it would make sense for the parser to feed tokens to the preload scanner.

For example, consider:
1. &lt;img/&gt;
2. &lt;script src=&quot;slow.js&quot;&gt;&lt;/script&gt;
3. &lt;img/&gt;

The Parser would tokenize #1 and #2, then the parser is forced to pause while the script downloads. In the mean time, the PreloadScanner would tokenize #3. After the script runs, the parser would have to retokenize #3 unless we save the work done by the preload scanner.

There is a little more information in this bug:
https://bugs.webkit.org/show_bug.cgi?id=57376

We should dupe one of them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>436438</commentid>
    <comment_count>7</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-13 07:46:38 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; After some investigation I think the whole idea is wrong. I thought that the preload scanner scanning the input again after the parser but now it seems to be it does not. The preload scanner only scans text that the parser has not seen yet. In this case it is useless to feed it with &quot;old&quot; tokens. Adam, could you validate this for me? Thanks.
&gt; 
&gt; It is the other way around. The preload scanner should feed its tokens to the parser. There is no case where it would make sense for the parser to feed tokens to the preload scanner.
&gt; 
&gt; For example, consider:
&gt; 1. &lt;img/&gt;
&gt; 2. &lt;script src=&quot;slow.js&quot;&gt;&lt;/script&gt;
&gt; 3. &lt;img/&gt;
&gt; 
&gt; The Parser would tokenize #1 and #2, then the parser is forced to pause while the script downloads. In the mean time, the PreloadScanner would tokenize #3. After the script runs, the parser would have to retokenize #3 unless we save the work done by the preload scanner.

Thanks for the clarificatoin.

&gt; 
&gt; There is a little more information in this bug:
&gt; https://bugs.webkit.org/show_bug.cgi?id=57376
&gt; 
&gt; We should dupe one of them.

Yep, I am going to mark this one as a duplicate.

*** This bug has been marked as a duplicate of bug 57376 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100524</attachid>
            <date>2011-07-12 11:09:03 -0700</date>
            <delta_ts>2011-07-12 11:09:03 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>upload.diff</filename>
            <type>text/plain</type>
            <size>16730</size>
            <attacher name="Balazs Kelemen">kbalazs</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3OGVlMjI1Li40Yjc1NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcg
QEAKKzIwMTEtMDctMTIgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFdJUCBwYXRjaC4KKworICAgICAgICBTdG9yZSB0aGUgdG9rZW5zIHdoaWxlIHBhcnNp
bmcgaW4gYSBxdWV1ZSBzdHlsZSBjb250YWluZXIKKyAgICAgICAgYW5kIHJldXNlIHRoZW0gaW4g
dGhlIHByZWxvYWQgc2Nhbm5lci4gSGVhcCBhbGxvY2F0ZSB0b2tlbnMKKyAgICAgICAgdG8gYXZv
aWQgY29weWluZy4gTm90ZSB0aGF0IHRoZSByZXZlcnNlIGRpcmVjdGlvbiAtIHJldXNpbmcKKyAg
ICAgICAgdG9rZW5zIGZyb20gdGhlIHNjYW5uZXIgaW4gdGhlIHBhcnNlciAtIHdvdWxkIG5vdCB3
b3JrIHNpbmNlCisgICAgICAgIHRoZSB0b2tlbml6ZXIgY2Fubm90IHByb2R1Y2UgdmFsaWQgdG9r
ZW4gc2VxdWVuY2Ugd2l0aG91dCB0aGUKKyAgICAgICAgdHJlZSBidWlsZGVyLiBNYWtlIHRva2Vu
cyBhIGJpdCBzbWFsbGVyIHRvIGtlZXAgbWVtb3J5IHVzYWdlCisgICAgICAgIGFjY2VwdGFibGUu
CisKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2VyOjpI
VE1MRG9jdW1lbnRQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERvY3VtZW50UGFyc2Vy
Ojp+SFRNTERvY3VtZW50UGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBh
cnNlcjo6ZGV0YWNoKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6cHVt
cFRva2VuaXplcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6Omluc2Vy
dCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZCk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZEN1cnJlbnRJbnB1dFN0cmVh
bVRvUHJlbG9hZFNjYW5uZXJBbmRTY2FuKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5uZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjpIVE1MUHJlbG9hZFNj
YW5uZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFByZWxvYWRTY2FubmVyOjp0YWtlTmV4dFRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQcmVsb2FkU2Nhbm5lcjo6c2Nhbik6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MUHJlbG9hZFNjYW5uZXI6OnByb2Nlc3NUb2tlbik6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmg6CisgICAgICAgICogaHRtbC9wYXJz
ZXIvSFRNTFRva2VuLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVG9rZW46OmlzVW5pbml0aWFs
aXplZCk6CisgICAgICAgIChXZWJDb3JlOjpBdG9taWNIVE1MVG9rZW46OmluaXRpYWxpemVBdHRy
aWJ1dGVzKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpjb25zdHJ1Y3RUcmVlRnJvbVRva2VuKToK
KwogMjAxMS0wNy0wNCAgQW5kcmV5IEtvc3lha292ICA8Y2FzZXFAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFl1cnkgU2VtaWtoYXRza3kuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IGQ3
OGExM2MuLmEzMDg5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCisr
KyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xNzU5LDYgKzE3NTksNyBAQCBIRUFE
RVJTICs9IFwKICAgICBodG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVySG9zdC5oIFwKICAgICBo
dG1sL3BhcnNlci9IVE1MVG9rZW4uaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFRva2VuaXplci5o
IFwKKyAgICBodG1sL3BhcnNlci9IVE1MVG9rZW5RdWV1ZS5oIFwKICAgICBodG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuaCBcCiAgICAgaHRtbC9wYXJzZXIvSFRNTFZpZXdTb3VyY2VQYXJzZXIu
aCBcCiAgICAgaHRtbC9wYXJzZXIvWFNTQXVkaXRvci5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCmluZGV4IDg1MGViY2IuLjM2MTc0
YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmNwcApAQCAtNzYsMTIgKzc2LDE0IEBAIEhUTUxUb2tlbml6ZXI6OlN0YXRlIHRva2VuaXpl
clN0YXRlRm9yQ29udGV4dEVsZW1lbnQoRWxlbWVudCogY29udGV4dEVsZW1lbnQsIGJvCiAKIEhU
TUxEb2N1bWVudFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKEhUTUxEb2N1bWVudCogZG9jdW1l
bnQsIGJvb2wgcmVwb3J0RXJyb3JzKQogICAgIDogU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyKGRv
Y3VtZW50KQorICAgICwgbV90b2tlbihuZXcgSFRNTFRva2VuKQogICAgICwgbV90b2tlbml6ZXIo
SFRNTFRva2VuaXplcjo6Y3JlYXRlKHVzZVByZUhUTUw1UGFyc2VyUXVpcmtzKGRvY3VtZW50KSkp
CiAgICAgLCBtX3NjcmlwdFJ1bm5lcihIVE1MU2NyaXB0UnVubmVyOjpjcmVhdGUoZG9jdW1lbnQs
IHRoaXMpKQogICAgICwgbV90cmVlQnVpbGRlcihIVE1MVHJlZUJ1aWxkZXI6OmNyZWF0ZSh0aGlz
LCBkb2N1bWVudCwgcmVwb3J0RXJyb3JzLCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhkb2N1bWVu
dCksIG1heGltdW1ET01UcmVlRGVwdGgoZG9jdW1lbnQpKSkKICAgICAsIG1fcGFyc2VyU2NoZWR1
bGVyKEhUTUxQYXJzZXJTY2hlZHVsZXI6OmNyZWF0ZSh0aGlzKSkKICAgICAsIG1feHNzQXVkaXRv
cih0aGlzKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQorICAgICwgbV9zaG91bGRTdG9y
ZVRva2VucyhmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Npb25OZXN0aW5nTGV2ZWwoMCkKIHsKIH0K
QEAgLTkwLDEwICs5MiwxMiBAQCBIVE1MRG9jdW1lbnRQYXJzZXI6OkhUTUxEb2N1bWVudFBhcnNl
cihIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIHJlcG9ydEVycm9ycwogLy8gbWluaW1pemUg
Y29kZSBkdXBsaWNhdGlvbiBiZXR3ZWVuIHRoZXNlIGNvbnN0cnVjdG9ycy4KIEhUTUxEb2N1bWVu
dFBhcnNlcjo6SFRNTERvY3VtZW50UGFyc2VyKERvY3VtZW50RnJhZ21lbnQqIGZyYWdtZW50LCBF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uIHNjcmlw
dGluZ1Blcm1pc3Npb24pCiAgICAgOiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoZnJhZ21lbnQt
PmRvY3VtZW50KCkpCisgICAgLCBtX3Rva2VuKG5ldyBIVE1MVG9rZW4pCiAgICAgLCBtX3Rva2Vu
aXplcihIVE1MVG9rZW5pemVyOjpjcmVhdGUodXNlUHJlSFRNTDVQYXJzZXJRdWlya3MoZnJhZ21l
bnQtPmRvY3VtZW50KCkpKSkKICAgICAsIG1fdHJlZUJ1aWxkZXIoSFRNTFRyZWVCdWlsZGVyOjpj
cmVhdGUodGhpcywgZnJhZ21lbnQsIGNvbnRleHRFbGVtZW50LCBzY3JpcHRpbmdQZXJtaXNzaW9u
LCB1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhmcmFnbWVudC0+ZG9jdW1lbnQoKSksIG1heGltdW1E
T01UcmVlRGVwdGgoZnJhZ21lbnQtPmRvY3VtZW50KCkpKSkKICAgICAsIG1feHNzQXVkaXRvcih0
aGlzKQogICAgICwgbV9lbmRXYXNEZWxheWVkKGZhbHNlKQorICAgICwgbV9zaG91bGRTdG9yZVRv
a2VucyhmYWxzZSkKICAgICAsIG1fcHVtcFNlc3Npb25OZXN0aW5nTGV2ZWwoMCkKIHsKICAgICBi
b29sIHJlcG9ydEVycm9ycyA9IGZhbHNlOyAvLyBGb3Igbm93IGRvY3VtZW50IGZyYWdtZW50IHBh
cnNpbmcgbmV2ZXIgcmVwb3J0cyBlcnJvcnMuCkBAIC0xMDUsNiArMTA5LDggQEAgSFRNTERvY3Vt
ZW50UGFyc2VyOjp+SFRNTERvY3VtZW50UGFyc2VyKCkKICAgICBBU1NFUlQoIW1fcGFyc2VyU2No
ZWR1bGVyKTsKICAgICBBU1NFUlQoIW1fcHVtcFNlc3Npb25OZXN0aW5nTGV2ZWwpOwogICAgIEFT
U0VSVCghbV9wcmVsb2FkU2Nhbm5lcik7CisKKyAgICBkZWxldGUgbV90b2tlbjsKIH0KIAogdm9p
ZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmRldGFjaCgpCkBAIC0xMTYsNyArMTIyLDggQEAgdm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmRldGFjaCgpCiAgICAgLy8gRklYTUU6IEl0IHNlZW1zIHdyb25n
IHRoYXQgd2Ugd291bGQgaGF2ZSBhIHByZWxvYWQgc2Nhbm5lciBoZXJlLgogICAgIC8vIFlldCBk
dXJpbmcgZmFzdC9kb20vSFRNTFNjcmlwdEVsZW1lbnQvc2NyaXB0LWxvYWQtZXZlbnRzLmh0bWwg
d2UgZG8uCiAgICAgbV9wcmVsb2FkU2Nhbm5lci5jbGVhcigpOwotICAgIG1fcGFyc2VyU2NoZWR1
bGVyLmNsZWFyKCk7IC8vIERlbGV0aW5nIHRoZSBzY2hlZHVsZXIgd2lsbCBjbGVhciBhbnkgdGlt
ZXJzLgorICAgIG1fcGFyc2VyU2NoZWR1bGVyLmNsZWFyKCk7IC8vIERlbGV0aW5nIHRoZSBzY2hl
ZHVsZXIgd2lsbCBjbGVhciBhbnkgdGltZXJzLnMKKyAgICBtX3Rva2VuUXVldWUuY2xlYXIoKTsK
IH0KIAogdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OnN0b3BQYXJzaW5nKCkKQEAgLTI2MCwyMSAr
MjY3LDMxIEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVyKFN5bmNocm9u
b3VzTW9kZSBtb2RlKQogCiAgICAgd2hpbGUgKGNhblRha2VOZXh0VG9rZW4obW9kZSwgc2Vzc2lv
bikgJiYgIXNlc3Npb24ubmVlZHNZaWVsZCkgewogICAgICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdt
ZW50KCkpCi0gICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQobV9pbnB1dCwgbV90b2tl
bik7CisgICAgICAgICAgICBtX3NvdXJjZVRyYWNrZXIuc3RhcnQobV9pbnB1dCwgKm1fdG9rZW4p
OwogCi0gICAgICAgIGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0LmN1cnJlbnQo
KSwgbV90b2tlbikpCisgICAgICAgIGlmICghbV90b2tlbml6ZXItPm5leHRUb2tlbihtX2lucHV0
LmN1cnJlbnQoKSwgKm1fdG9rZW4pKQogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAgSFRN
TFRva2VuKiB0b2tlbiA9IG1fdG9rZW47CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgbm90IGFs
bG9jIG5ldyB0b2tlbiBpZiBtX3Nob3VsZFN0b3JlVG9rZW5zIGlzIGZhbHNlCisgICAgICAgIC8v
ICAgICAgICBidXQgaXQgY2F1c2UgcHJvYmxlbXMgd2hlbiB3ZSBjYWxsZWQgcmVlbnRyYW50bHku
CisgICAgICAgIG1fdG9rZW4gPSBuZXcgSFRNTFRva2VuOworCisgICAgICAgIGlmIChtX3Nob3Vs
ZFN0b3JlVG9rZW5zKQorICAgICAgICAgICAgbV90b2tlblF1ZXVlLmFwcGVuZEFuZFJlbGVhc2Uo
YWRvcHRQdHIodG9rZW4pKTsKKwogICAgICAgICBpZiAoIWlzUGFyc2luZ0ZyYWdtZW50KCkpIHsK
LSAgICAgICAgICAgIG1fc291cmNlVHJhY2tlci5lbmQobV9pbnB1dCwgbV90b2tlbik7CisgICAg
ICAgICAgICBtX3NvdXJjZVRyYWNrZXIuZW5kKG1faW5wdXQsICp0b2tlbik7CiAKICAgICAgICAg
ICAgIC8vIFdlIGRvIG5vdCBYU1MgZmlsdGVyIGlubmVySFRNTCwgd2hpY2ggbWVhbnMgd2UgKGlu
dGVudGlvbmFsbHkpIGZhaWwKICAgICAgICAgICAgIC8vIGh0dHAvdGVzdHMvc2VjdXJpdHkveHNz
QXVkaXRvci9kb20td3JpdGUtaW5uZXJIVE1MLmh0bWwKLSAgICAgICAgICAgIG1feHNzQXVkaXRv
ci5maWx0ZXJUb2tlbihtX3Rva2VuKTsKKyAgICAgICAgICAgIG1feHNzQXVkaXRvci5maWx0ZXJU
b2tlbigqdG9rZW4pOwogICAgICAgICB9CiAKLSAgICAgICAgbV90cmVlQnVpbGRlci0+Y29uc3Ry
dWN0VHJlZUZyb21Ub2tlbihtX3Rva2VuKTsKLSAgICAgICAgQVNTRVJUKG1fdG9rZW4uaXNVbmlu
aXRpYWxpemVkKCkpOworICAgICAgICBtX3RyZWVCdWlsZGVyLT5jb25zdHJ1Y3RUcmVlRnJvbVRv
a2VuKCp0b2tlbik7CisKKyAgICAgICAgaWYgKCFtX3Nob3VsZFN0b3JlVG9rZW5zKQorICAgICAg
ICAgICAgZGVsZXRlIHRva2VuOwogICAgIH0KIAogICAgIC8vIEVuc3VyZSB3ZSBoYXZlbid0IGJl
ZW4gdG90YWxseSBkZXJlZidlZCBhZnRlciBwdW1waW5nLiBBbnkgY2FsbGVyIG9mIHRoaXMKQEAg
LTI5MCwxMCArMzA3LDE0IEBAIHZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpwdW1wVG9rZW5pemVy
KFN5bmNocm9ub3VzTW9kZSBtb2RlKQogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsK
ICAgICAgICAgQVNTRVJUKG1fdG9rZW5pemVyLT5zdGF0ZSgpID09IEhUTUxUb2tlbml6ZXI6OkRh
dGFTdGF0ZSk7CiAgICAgICAgIGlmICghbV9wcmVsb2FkU2Nhbm5lcikgewotICAgICAgICAgICAg
bV9wcmVsb2FkU2Nhbm5lciA9IGFkb3B0UHRyKG5ldyBIVE1MUHJlbG9hZFNjYW5uZXIoZG9jdW1l
bnQoKSkpOworICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lciA9IGFkb3B0UHRyKG5ldyBIVE1M
UHJlbG9hZFNjYW5uZXIoZG9jdW1lbnQoKSwgJm1fdG9rZW5RdWV1ZSkpOwogICAgICAgICAgICAg
bV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQobV9pbnB1dC5jdXJyZW50KCkpOwogICAgICAg
ICB9CisKICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2NhbigpOworICAgICAgICBtX3Nob3Vs
ZFN0b3JlVG9rZW5zID0gZmFsc2U7CisKKyAgICAgICAgQVNTRVJUKG1fdG9rZW5RdWV1ZS5pc0Vt
cHR5KCkpOwogICAgIH0KIAogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVI
VE1MKGNvb2tpZSwgbV90b2tlbml6ZXItPmxpbmVOdW1iZXIoKSk7CkBAIC0zMjEsMTIgKzM0Miwx
NCBAQCB2b2lkIEhUTUxEb2N1bWVudFBhcnNlcjo6aW5zZXJ0KGNvbnN0IFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlKQogICAgIFNlZ21lbnRlZFN0cmluZyBleGNsdWRlZExpbmVOdW1iZXJTb3VyY2Uo
c291cmNlKTsKICAgICBleGNsdWRlZExpbmVOdW1iZXJTb3VyY2Uuc2V0RXhjbHVkZUxpbmVOdW1i
ZXJzKCk7CiAgICAgbV9pbnB1dC5pbnNlcnRBdEN1cnJlbnRJbnNlcnRpb25Qb2ludChleGNsdWRl
ZExpbmVOdW1iZXJTb3VyY2UpOworCisgICAgbV9zaG91bGRTdG9yZVRva2VucyA9IGZhbHNlOyAv
LyBGSVhNRTogc2hvdWxkIHdlPwogICAgIHB1bXBUb2tlbml6ZXJJZlBvc3NpYmxlKEZvcmNlU3lu
Y2hyb25vdXMpOwogICAgIAogICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpIHsKICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGRvY3VtZW50LndyaXRlKCkgb3V0cHV0IHdpdGggYSBzZXBhcmF0ZSBw
cmVsb2FkIHNjYW5uZXIgYXMKICAgICAgICAgLy8gdGhlIG1haW4gc2Nhbm5lciBjYW4ndCBkZWFs
IHdpdGggaW5zZXJ0aW9ucy4KLSAgICAgICAgSFRNTFByZWxvYWRTY2FubmVyIHByZWxvYWRTY2Fu
bmVyKGRvY3VtZW50KCkpOworICAgICAgICBIVE1MUHJlbG9hZFNjYW5uZXIgcHJlbG9hZFNjYW5u
ZXIoZG9jdW1lbnQoKSwgMCk7CiAgICAgICAgIHByZWxvYWRTY2FubmVyLmFwcGVuZFRvRW5kKHNv
dXJjZSk7CiAgICAgICAgIHByZWxvYWRTY2FubmVyLnNjYW4oKTsKICAgICB9CkBAIC0zNDMsNiAr
MzY2LDggQEAgdm9pZCBIVE1MRG9jdW1lbnRQYXJzZXI6OmFwcGVuZChjb25zdCBTZWdtZW50ZWRT
dHJpbmcmIHNvdXJjZSkKICAgICAvLyBidXQgd2UgbmVlZCB0byBlbnN1cmUgaXQgaXNuJ3QgZGVs
ZXRlZCB5ZXQuCiAgICAgUmVmUHRyPEhUTUxEb2N1bWVudFBhcnNlcj4gcHJvdGVjdCh0aGlzKTsK
IAorICAgIG1fc2hvdWxkU3RvcmVUb2tlbnMgPSB0cnVlOworCiAgICAgaWYgKG1fcHJlbG9hZFNj
YW5uZXIpIHsKICAgICAgICAgaWYgKG1faW5wdXQuY3VycmVudCgpLmlzRW1wdHkoKSAmJiAhaXNX
YWl0aW5nRm9yU2NyaXB0cygpKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIHBhcnNlZCB1bnRp
bCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGlucHV0IGFuZCBzbyBhcmUgbm93IG1vdmluZyBhaGVh
ZCBvZiB0aGUgcHJlbG9hZCBzY2FubmVyLgpAQCAtMzUwLDggKzM3NSwxMiBAQCB2b2lkIEhUTUxE
b2N1bWVudFBhcnNlcjo6YXBwZW5kKGNvbnN0IFNlZ21lbnRlZFN0cmluZyYgc291cmNlKQogICAg
ICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci5jbGVhcigpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+YXBwZW5kVG9FbmQoc291cmNlKTsKLSAgICAgICAg
ICAgIGlmIChpc1dhaXRpbmdGb3JTY3JpcHRzKCkpCisgICAgICAgICAgICBpZiAoaXNXYWl0aW5n
Rm9yU2NyaXB0cygpKSB7CiAgICAgICAgICAgICAgICAgbV9wcmVsb2FkU2Nhbm5lci0+c2Nhbigp
OworICAgICAgICAgICAgICAgIG1fc2hvdWxkU3RvcmVUb2tlbnMgPSBmYWxzZTsKKworICAgICAg
ICAgICAgICAgIEFTU0VSVChtX3Rva2VuUXVldWUuaXNFbXB0eSgpKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KIApAQCAtNDk4LDYgKzUyNyw3IEBAIHZvaWQgSFRNTERvY3VtZW50
UGFyc2VyOjphcHBlbmRDdXJyZW50SW5wdXRTdHJlYW1Ub1ByZWxvYWRTY2FubmVyQW5kU2Nhbigp
CiAgICAgQVNTRVJUKG1fcHJlbG9hZFNjYW5uZXIpOwogICAgIG1fcHJlbG9hZFNjYW5uZXItPmFw
cGVuZFRvRW5kKG1faW5wdXQuY3VycmVudCgpKTsKICAgICBtX3ByZWxvYWRTY2FubmVyLT5zY2Fu
KCk7CisgICAgbV9zaG91bGRTdG9yZVRva2VucyA9IGZhbHNlOwogfQogCiB2b2lkIEhUTUxEb2N1
bWVudFBhcnNlcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNl
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFy
c2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaApp
bmRleCAyYzAyNTVlLi44NjRkZTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkhUTUxT
Y3JpcHRSdW5uZXJIb3N0LmgiCiAjaW5jbHVkZSAiSFRNTFNvdXJjZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJIVE1MVG9rZW4uaCIKKyNpbmNsdWRlICJIVE1MVG9rZW5RdWV1ZS5oIgogI2luY2x1ZGUg
IlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlNlZ21lbnRlZFN0cmluZy5o
IgogI2luY2x1ZGUgIlRpbWVyLmgiCkBAIC0xNDQsMTcgKzE0NSwyMCBAQCBwcml2YXRlOgogICAg
IEhUTUxJbnB1dFN0cmVhbSBtX2lucHV0OwogCiAgICAgLy8gV2UgaG9sZCBtX3Rva2VuIGhlcmUg
YmVjYXVzZSBpdCBtaWdodCBiZSBwYXJ0aWFsbHkgY29tcGxldGUuCi0gICAgSFRNTFRva2VuIG1f
dG9rZW47CisgICAgLy8gV2UgZWl0aGVyIGRlc3RydWN0IGl0IGFzIHNvb24gYXMgcHJvY2Vzc2Vk
IG9yIHBhc3Mgb3duZXJzaGlwIHRvIHRoZSBIVE1MVG9rZW5RdWV1ZS4KKyAgICBIVE1MVG9rZW4q
IG1fdG9rZW47CiAKICAgICBPd25QdHI8SFRNTFRva2VuaXplcj4gbV90b2tlbml6ZXI7CiAgICAg
T3duUHRyPEhUTUxTY3JpcHRSdW5uZXI+IG1fc2NyaXB0UnVubmVyOwogICAgIE93blB0cjxIVE1M
VHJlZUJ1aWxkZXI+IG1fdHJlZUJ1aWxkZXI7CiAgICAgT3duUHRyPEhUTUxQcmVsb2FkU2Nhbm5l
cj4gbV9wcmVsb2FkU2Nhbm5lcjsKICAgICBPd25QdHI8SFRNTFBhcnNlclNjaGVkdWxlcj4gbV9w
YXJzZXJTY2hlZHVsZXI7CisgICAgSFRNTFRva2VuUXVldWUgbV90b2tlblF1ZXVlOwogICAgIEhU
TUxTb3VyY2VUcmFja2VyIG1fc291cmNlVHJhY2tlcjsKICAgICBYU1NBdWRpdG9yIG1feHNzQXVk
aXRvcjsKIAogICAgIGJvb2wgbV9lbmRXYXNEZWxheWVkOworICAgIGJvb2wgbV9zaG91bGRTdG9y
ZVRva2VuczsKICAgICB1bnNpZ25lZCBtX3B1bXBTZXNzaW9uTmVzdGluZ0xldmVsOwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAK
aW5kZXggOWMzMGVmOS4uMzAxZDAxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAi
SW5wdXRUeXBlLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAi
SFRNTFRva2VuaXplci5oIgorI2luY2x1ZGUgIkhUTUxUb2tlblF1ZXVlLmgiCiAjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkxp
bmtSZWxBdHRyaWJ1dGUuaCIKQEAgLTE0NywxMCArMTQ4LDEwIEBAIHByaXZhdGU6CiAKIH0gLy8g
bmFtZXNwYWNlCiAKLUhUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxvYWRTY2FubmVyKERvY3Vt
ZW50KiBkb2N1bWVudCkKK0hUTUxQcmVsb2FkU2Nhbm5lcjo6SFRNTFByZWxvYWRTY2FubmVyKERv
Y3VtZW50KiBkb2N1bWVudCwgSFRNTFRva2VuUXVldWUqIHRva2VuUXVldWUpCiAgICAgOiBtX2Rv
Y3VtZW50KGRvY3VtZW50KQorICAgICwgbV90b2tlblF1ZXVlKHRva2VuUXVldWUpCiAgICAgLCBt
X2Nzc1NjYW5uZXIoZG9jdW1lbnQpCi0gICAgLCBtX3Rva2VuaXplcihIVE1MVG9rZW5pemVyOjpj
cmVhdGUoSFRNTERvY3VtZW50UGFyc2VyOjp1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhkb2N1bWVu
dCkpKQogICAgICwgbV9ib2R5U2VlbihmYWxzZSkKICAgICAsIG1faW5TdHlsZShmYWxzZSkKIHsK
QEAgLTE2MSwzMiArMTYyLDQ4IEBAIHZvaWQgSFRNTFByZWxvYWRTY2FubmVyOjphcHBlbmRUb0Vu
ZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSkKICAgICBtX3NvdXJjZS5hcHBlbmQoc291
cmNlKTsKIH0KIAorYm9vbCBIVE1MUHJlbG9hZFNjYW5uZXI6OnRha2VOZXh0VG9rZW4oKQorewor
ICAgIGlmIChtX3Rva2VuUXVldWUgJiYgIW1fdG9rZW5RdWV1ZS0+aXNFbXB0eSgpKSB7CisgICAg
ICAgIGlmIChtX3Rva2VuRnJvbVF1ZXVlID0gbV90b2tlblF1ZXVlLT50YWtlRmlyc3QoKSkgewor
ICAgICAgICAgICAgbV90b2tlbiA9IG1fdG9rZW5Gcm9tUXVldWUuZ2V0KCk7CisgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghbV90b2tlbml6ZXIp
IHsKKyAgICAgICAgbV90b2tlbml6ZXIgPSBIVE1MVG9rZW5pemVyOjpjcmVhdGUoSFRNTERvY3Vt
ZW50UGFyc2VyOjp1c2VQcmVIVE1MNVBhcnNlclF1aXJrcyhtX2RvY3VtZW50KSk7CisgICAgICAg
IG1fdG9rZW4gPSAmbV90b2tlbkZyb21Ub2tlbml6ZXI7CisgICAgfQorCisgICAgcmV0dXJuIG1f
dG9rZW5pemVyLT5uZXh0VG9rZW4obV9zb3VyY2UsIG1fdG9rZW5Gcm9tVG9rZW5pemVyKTsKK30K
Kwogdm9pZCBIVE1MUHJlbG9hZFNjYW5uZXI6OnNjYW4oKQogewotICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgc2F2ZSBhbmQgcmUtdXNlIHRoZXNlIHRva2VucyBpbiBIVE1MRG9jdW1lbnRQYXJzZXIg
aWYKLSAgICAvLyB0aGUgcGVuZGluZyBzY3JpcHQgZG9lc24ndCBlbmQgdXAgY2FsbGluZyBkb2N1
bWVudC53cml0ZS4KLSAgICB3aGlsZSAobV90b2tlbml6ZXItPm5leHRUb2tlbihtX3NvdXJjZSwg
bV90b2tlbikpIHsKKyAgICB3aGlsZSAodGFrZU5leHRUb2tlbigpKSB7CiAgICAgICAgIHByb2Nl
c3NUb2tlbigpOwotICAgICAgICBtX3Rva2VuLmNsZWFyKCk7CisgICAgICAgIG1fdG9rZW4tPmNs
ZWFyKCk7CiAgICAgfQogfQogCiB2b2lkIEhUTUxQcmVsb2FkU2Nhbm5lcjo6cHJvY2Vzc1Rva2Vu
KCkKIHsKICAgICBpZiAobV9pblN0eWxlKSB7Ci0gICAgICAgIGlmIChtX3Rva2VuLnR5cGUoKSA9
PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKLSAgICAgICAgICAgIG1fY3NzU2Nhbm5lci5zY2FuKG1f
dG9rZW4sIHNjYW5uaW5nQm9keSgpKTsKLSAgICAgICAgZWxzZSBpZiAobV90b2tlbi50eXBlKCkg
PT0gSFRNTFRva2VuOjpFbmRUYWcpIHsKKyAgICAgICAgaWYgKG1fdG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW46OkNoYXJhY3RlcikKKyAgICAgICAgICAgIG1fY3NzU2Nhbm5lci5zY2FuKCptX3Rv
a2VuLCBzY2FubmluZ0JvZHkoKSk7CisgICAgICAgIGVsc2UgaWYgKG1fdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OkVuZFRhZykgewogICAgICAgICAgICAgbV9pblN0eWxlID0gZmFsc2U7CiAg
ICAgICAgICAgICBtX2Nzc1NjYW5uZXIucmVzZXQoKTsKICAgICAgICAgfQogICAgIH0KIAotICAg
IGlmIChtX3Rva2VuLnR5cGUoKSAhPSBIVE1MVG9rZW46OlN0YXJ0VGFnKQorICAgIGlmIChtX3Rv
a2VuLT50eXBlKCkgIT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUHJlbG9hZFRhc2sgdGFzayhtX3Rva2VuKTsKLSAgICBtX3Rva2VuaXplci0+dXBkYXRlU3Rh
dGVGb3IodGFzay50YWdOYW1lKCksIG1fZG9jdW1lbnQtPmZyYW1lKCkpOworICAgIFByZWxvYWRU
YXNrIHRhc2soKm1fdG9rZW4pOworICAgIGlmIChtX3Rva2VuaXplcikKKyAgICAgICAgbV90b2tl
bml6ZXItPnVwZGF0ZVN0YXRlRm9yKHRhc2sudGFnTmFtZSgpLCBtX2RvY3VtZW50LT5mcmFtZSgp
KTsKIAogICAgIGlmICh0YXNrLnRhZ05hbWUoKSA9PSBib2R5VGFnKQogICAgICAgICBtX2JvZHlT
ZWVuID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
cmVsb2FkU2Nhbm5lci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRT
Y2FubmVyLmgKaW5kZXggYmVkNzdmZS4uYTNhYjc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmgKQEAgLTM2LDI1ICszNiwzMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxUb2tlbjsKIGNsYXNz
IEhUTUxUb2tlbml6ZXI7CitjbGFzcyBIVE1MVG9rZW5RdWV1ZTsKIGNsYXNzIFNlZ21lbnRlZFN0
cmluZzsKIAogY2xhc3MgSFRNTFByZWxvYWRTY2FubmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShIVE1MUHJlbG9hZFNjYW5uZXIpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBIVE1MUHJlbG9hZFNjYW5uZXIoRG9jdW1lbnQqKTsKKyAgICBIVE1MUHJlbG9hZFNj
YW5uZXIoRG9jdW1lbnQqLCBIVE1MVG9rZW5RdWV1ZSopOwogCiAgICAgdm9pZCBhcHBlbmRUb0Vu
ZChjb25zdCBTZWdtZW50ZWRTdHJpbmcmKTsKICAgICB2b2lkIHNjYW4oKTsKIAogcHJpdmF0ZToK
KyAgICBib29sIHRha2VOZXh0VG9rZW4oKTsKICAgICB2b2lkIHByb2Nlc3NUb2tlbigpOwogICAg
IGJvb2wgc2Nhbm5pbmdCb2R5KCkgY29uc3Q7CiAKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
KyAgICBIVE1MVG9rZW5RdWV1ZSogbV90b2tlblF1ZXVlOwogICAgIFNlZ21lbnRlZFN0cmluZyBt
X3NvdXJjZTsKICAgICBDU1NQcmVsb2FkU2Nhbm5lciBtX2Nzc1NjYW5uZXI7CiAgICAgT3duUHRy
PEhUTUxUb2tlbml6ZXI+IG1fdG9rZW5pemVyOwotICAgIEhUTUxUb2tlbiBtX3Rva2VuOworICAg
IE93blB0cjxIVE1MVG9rZW4+IG1fdG9rZW5Gcm9tUXVldWU7CisgICAgSFRNTFRva2VuIG1fdG9r
ZW5Gcm9tVG9rZW5pemVyOworICAgIEhUTUxUb2tlbiogbV90b2tlbjsKICAgICBib29sIG1fYm9k
eVNlZW47CiAgICAgYm9vbCBtX2luU3R5bGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFRva2VuLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVG9rZW4uaAppbmRleCA2N2RiNjQ3Li5hYTZlY2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MVG9rZW4uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MVG9rZW4uaApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBIVE1MVG9rZW4gewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEhUTUxUb2tlbik7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuaW5pdGlhbGl6ZWQsCkBAIC01NSwx
MiArNTUsMTIgQEAgcHVibGljOgogICAgIHB1YmxpYzoKICAgICAgICAgUmFuZ2UgbV9uYW1lUmFu
Z2U7CiAgICAgICAgIFJhbmdlIG1fdmFsdWVSYW5nZTsKLSAgICAgICAgV1RGOjpWZWN0b3I8VUNo
YXIsIDMyPiBtX25hbWU7Ci0gICAgICAgIFdURjo6VmVjdG9yPFVDaGFyLCAzMj4gbV92YWx1ZTsK
KyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDE2PiBtX25hbWU7CisgICAgICAgIFdURjo6VmVj
dG9yPFVDaGFyLCAxNj4gbV92YWx1ZTsKICAgICB9OwogCi0gICAgdHlwZWRlZiBXVEY6OlZlY3Rv
cjxBdHRyaWJ1dGUsIDEwPiBBdHRyaWJ1dGVMaXN0OwotICAgIHR5cGVkZWYgV1RGOjpWZWN0b3I8
VUNoYXIsIDEwMjQ+IERhdGFWZWN0b3I7CisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxBdHRyaWJ1
dGUsIDY+IEF0dHJpYnV0ZUxpc3Q7CisgICAgdHlwZWRlZiBXVEY6OlZlY3RvcjxVQ2hhciwgNjQ+
IERhdGFWZWN0b3I7CiAKICAgICBIVE1MVG9rZW4oKSB7IGNsZWFyKCk7IH0KIApAQCAtNzMsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0YS5jbGVhcigpOwogICAgIH0KIAotICAgIGJv
b2wgaXNVbmluaXRpYWxpemVkKCkgeyByZXR1cm4gbV90eXBlID09IFVuaW5pdGlhbGl6ZWQ7IH0K
KyAgICBib29sIGlzVW5pbml0aWFsaXplZCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSA9PSBVbmlu
aXRpYWxpemVkOyB9CiAKICAgICBpbnQgc3RhcnRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFu
Z2UubV9zdGFydDsgfQogICAgIGludCBlbmRJbmRleCgpIGNvbnN0IHsgcmV0dXJuIG1fcmFuZ2Uu
bV9lbmQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIu
Y3BwCmluZGV4IDgyMzAxNDEuLjg4N2FiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtNDM1LDI2ICs0MzUsNyBAQCBQYXNzUmVmUHRy
PEVsZW1lbnQ+IEhUTUxUcmVlQnVpbGRlcjo6dGFrZVNjcmlwdFRvUHJvY2VzcyhUZXh0UG9zaXRp
b24xJiBzY3JpcHRTdAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWVGcm9tVG9r
ZW4oSFRNTFRva2VuJiByYXdUb2tlbikKIHsKICAgICBBdG9taWNIVE1MVG9rZW4gdG9rZW4ocmF3
VG9rZW4pOwotCi0gICAgLy8gV2UgY2xlYXIgdGhlIHJhd1Rva2VuIGluIGNhc2UgY29uc3RydWN0
VHJlZUZyb21BdG9taWNUb2tlbgotICAgIC8vIHN5bmNocm9ub3VzbHkgcmUtZW50ZXJzIHRoZSBw
YXJzZXIuIFdlIGRvbid0IGNsZWFyIHRoZSB0b2tlbiBpbW1lZGF0ZWx5Ci0gICAgLy8gZm9yIENo
YXJhY3RlciB0b2tlbnMgYmVjYXVzZSB0aGUgQXRvbWljSFRNTFRva2VuIGF2b2lkcyBjb3B5aW5n
IHRoZQotICAgIC8vIGNoYXJhY3RlcnMgYnkga2VlcGluZyBhIHBvaW50ZXIgdG8gdGhlIHVuZGVy
bHlpbmcgYnVmZmVyIGluIHRoZQotICAgIC8vIEhUTUxUb2tlbi4gRm9ydHVhbnRlbHksIENoYXJh
Y3RlciB0b2tlbnMgY2FuJ3QgY2F1c2UgdXNlIHRvIHJlLWVudGVyCi0gICAgLy8gdGhlIHBhcnNl
ci4KLSAgICAvLwotICAgIC8vIEZJWE1FOiBUb3AgY2xlYXJpbmcgdGhlIHJhd1Rva2VuIG9uY2Ug
d2Ugc3RhcnQgcnVubmluZyB0aGUgcGFyc2VyIG9mZgotICAgIC8vIHRoZSBtYWluIHRocmVhZCBv
ciBvbmNlIHdlIHN0b3AgYWxsb3dpbmcgc3luY2hyb25vdXMgSmF2YVNjcmlwdAotICAgIC8vIGV4
ZWN1dGlvbiBmcm9tIHBhcnNlTWFwcGVkQXR0cmlidXRlLgotICAgIGlmIChyYXdUb2tlbi50eXBl
KCkgIT0gSFRNTFRva2VuOjpDaGFyYWN0ZXIpCi0gICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7Ci0K
ICAgICBjb25zdHJ1Y3RUcmVlRnJvbUF0b21pY1Rva2VuKHRva2VuKTsKLQotICAgIGlmICghcmF3
VG9rZW4uaXNVbmluaXRpYWxpemVkKCkpIHsKLSAgICAgICAgQVNTRVJUKHJhd1Rva2VuLnR5cGUo
KSA9PSBIVE1MVG9rZW46OkNoYXJhY3Rlcik7Ci0gICAgICAgIHJhd1Rva2VuLmNsZWFyKCk7Ci0g
ICAgfQogfQogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZUZyb21BdG9taWNU
b2tlbihBdG9taWNIVE1MVG9rZW4mIHRva2VuKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>