<?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>34268</bug_id>
          
          <creation_ts>2010-01-28 08:46:45 -0800</creation_ts>
          <short_desc>Save additional memory in SVG*Element classes, by introducing SVGElementRareData</short_desc>
          <delta_ts>2010-01-28 13:33:42 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>eric</cc>
    
    <cc>krit</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>185505</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-28 08:46:45 -0800</bug_when>
    <thetext>Save additional memory in SVG*Element classes, by introducing SVGElementRareData</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185519</commentid>
    <comment_count>1</comment_count>
      <attachid>47623</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-28 09:01:51 -0800</bug_when>
    <thetext>Created attachment 47623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185536</commentid>
    <comment_count>2</comment_count>
      <attachid>47623</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2010-01-28 10:26:31 -0800</bug_when>
    <thetext>Comment on attachment 47623
Patch

&gt; +        SVGElementRareData works just like NodeRareData. Unlike ElementRareData, we&apos;re not inheriting from
&gt; +        NodeRareData in SVG, as we don&apos;t need all the rare data stored there, unlike Element.
Unlike unlike ;-)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>185595</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-01-28 13:33:42 -0800</bug_when>
    <thetext>Landed in r54009. Oops forgot to change the ChangeLog, will fix this next time I commit.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47623</attachid>
            <date>2010-01-28 09:01:51 -0800</date>
            <delta_ts>2010-01-28 10:26:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34268-20100128180147.patch</filename>
            <type>text/plain</type>
            <size>26845</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NDAwMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjQgQEAKKzIwMTAtMDEtMjggIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU2F2ZSBhZGRpdGlvbmFsIG1lbW9yeSBpbiBTVkcqRWxlbWVudCBjbGFzc2VzLCBieSBp
bnRyb2R1Y2luZyBTVkdFbGVtZW50UmFyZURhdGEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM0MjY4CisKKyAgICAgICAgSW50cm9kdWNlIFNWR0VsZW1l
bnRSYXJlRGF0YSwgdG8gcmVtb3ZlIHRoZSBuZWVkIHRvIHN0b3JlIGFueSBtZW1iZXJzIGluIFNW
R0VsZW1lbnQvU1ZHU3R5bGVkRWxlbWVudC4KKyAgICAgICAgVGhpcyBzYXZlcyBzb21lIGFkZGl0
aW9uYWwgTUIgZm9yIHRoZSBzdmctbm9kZS1jb3VudC12cy1zY3JvbGwueGh0bWwgdGVzdGNhc2Uu
CisKKyAgICAgICAgU1ZHRWxlbWVudFJhcmVEYXRhIHdvcmtzIGp1c3QgbGlrZSBOb2RlUmFyZURh
dGEuIFVubGlrZSBFbGVtZW50UmFyZURhdGEsIHdlJ3JlIG5vdCBpbmhlcml0aW5nIGZyb20KKyAg
ICAgICAgTm9kZVJhcmVEYXRhIGluIFNWRywgYXMgd2UgZG9uJ3QgbmVlZCBhbGwgdGhlIHJhcmUg
ZGF0YSBzdG9yZWQgdGhlcmUsIHVubGlrZSBFbGVtZW50LgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06IEFkZCBTVkdFbGVtZW50UmFyZURhdGEuaCB0byBidWlsZC4KKyAgICAgICAgKiBXZWJD
b3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUucHJvOiBEaXR0by4KKyAgICAgICAg
KiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajogRGl0dG8uCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBEaXR0by4KKyAgICAgICAgKiBkb20vTm9kZS5j
cHA6IFVzZSBOb2RlcyBiaXRmaWVsZCB0byBrZWVwIHRyYWNrIHdoZXRlciBhIFNWR0VsZW1lbnQg
aGFzIGEgU1ZHRWxlbWVudFJhcmVEYXRhIG9iamVjdCBhc3NvY2lhdGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Tm9kZTo6Tm9kZSk6CisgICAgICAgICogZG9tL05vZGUuaDogQWRkIG1faGFzUmFyZVNW
R0RhdGEgZmxhZywgbWVyZ2VkIHdpdGggdGhlIGV4aXN0aW5nIGJpdGZpZWxkLCAxMCBiaXRzIHJl
bWFpbmluZyBub3cuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpoYXNSYXJlU1ZHRGF0YSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDogU1ZHRWxlbWVudDo6aW5z
dGFuY2VzRm9yRWxlbWVudCgpIG5vdyByZXR1cm5zIGEgY29uc3QtcmVmZXJlbmNlIHRvIHRoZSBI
YXNoTWFwIGluc3RlYWQgb2YgY29weWluZy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlVHJhbnNmb3JtRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcDogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRpb25FbGVtZW50OjpzZXRUYXJnZXRBdHRyaWJ1dGVBbmltYXRlZFZhbHVlKToKKyAg
ICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6IE1vdmUgdGhlIGVsZW1lbnQgaW5zdGFuY2VzIEhh
c2hTZXQgYW5kIHR3byBjdXJzb3ItcmVsYXRlZCBwb2ludGVycyBpbnRvIFNWR0VsZW1lbnRSYXJl
RGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OlNWR0VsZW1lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6flNWR0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6cmFyZVNWR0RhdGEpOiBNb2RlbGxlZCBqdXN0IGxpa2UgTm9kZTo6cmFyZURh
dGEoKS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmVuc3VyZVJhcmVTVkdEYXRhKTog
RGl0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmFjY2Vzc0RvY3VtZW50U1ZHRXh0
ZW5zaW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXBJbnN0YW5jZVRvRWxl
bWVudCk6IFJvdXRlIGNhbGwgdGhyb3VnaCBTVkdFbGVtZW50UmFyZURhdGEuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpyZW1vdmVJbnN0YW5jZU1hcHBpbmcpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6Omluc3RhbmNlc0ZvckVsZW1lbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldEN1cnNvckVsZW1lbnQpOiBEaXR0by4KKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldEN1cnNvckltYWdlVmFsdWUpOiBEaXR0by4K
KyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5z
dGFuY2UuY3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRJbnN0YW5jZTo6
aW52YWxpZGF0ZUFsbEluc3RhbmNlc09mRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1l
bnRSYXJlRGF0YS5oOiBBZGRlZC4gQmFzZWQgb24gTm9kZVJhcmVEYXRhIC0gd29ya3MgZXhhY3Rs
eSB0aGUgc2FtZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6U1ZHRWxl
bWVudFJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6cmFy
ZURhdGFNYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjpyYXJlRGF0
YUZyb21NYXApOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudFJhcmVEYXRhOjplbGVtZW50
SW5zdGFuY2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRSYXJlRGF0YTo6aW5zdGFu
Y2VVcGRhdGVzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50UmFyZURhdGE6
OnNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dFJhcmVEYXRhOjpjdXJzb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnRS
YXJlRGF0YTo6c2V0Q3Vyc29yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
UmFyZURhdGE6OmN1cnNvckltYWdlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVu
dFJhcmVEYXRhOjpzZXRDdXJzb3JJbWFnZVZhbHVlKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVk
RWxlbWVudC5jcHA6IE1vdmUgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZCBpbnRvIFNWR0VsZW1l
bnRSYXJlRGF0YS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlZEVsZW1lbnQ6OlNWR1N0eWxl
ZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU3R5bGVkRWxlbWVudDo6aW5zdGFuY2VV
cGRhdGVzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdHlsZWRFbGVtZW50OjpzZXRJ
bnN0YW5jZVVwZGF0ZXNCbG9ja2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU3R5bGVkRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDogQWRhcHQgdG8gZWxlbWVudCBpbnN0
YW5jZXMgY2hhbmdlcywgbm93IHBhc3NlZCBhcyBjb25zdC1yZWZlcmVuY2UuCisgICAgICAgIChX
ZWJDb3JlOjpkdW1wSW5zdGFuY2VUcmVlKToKKwogMjAxMC0wMS0yOCAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCklu
ZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29y
a2luZyBjb3B5KQpAQCAtMzA0OSw2ICszMDQ5LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5zdGFuY2UuaCBcCiAJV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dEluc3RhbmNlTGlzdC5jcHAgXAogCVdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZUxpc3Qu
aCBcCisJV2ViQ29yZS9zdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmggXAogCVdlYkNvcmUvc3ZnL1NW
R0VsbGlwc2VFbGVtZW50LmNwcCBcCiAJV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuaCBc
CiAJV2ViQ29yZS9zdmcvU1ZHRXhjZXB0aW9uLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5
cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDUzOTMzKQor
KysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTMzNDUsNiArMzM0NSw3
IEBACiAgICAgICAgICAgICAnc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oJywKICAgICAgICAgICAg
ICdzdmcvU1ZHRWxlbWVudEluc3RhbmNlTGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdF
bGVtZW50SW5zdGFuY2VMaXN0LmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdFbGVtZW50UmFyZURh
dGEuaCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcCcsCiAgICAgICAg
ICAgICAnc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdFeGNl
cHRpb24uaCcsCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtMTc1OSw2ICsxNzU5LDcgQEAgSEVBREVSUyArPSBcCiAgICAgc3Zn
L1NWR0VsZW1lbnQuaCBcCiAgICAgc3ZnL1NWR0VsZW1lbnRJbnN0YW5jZS5oIFwKICAgICBzdmcv
U1ZHRWxlbWVudEluc3RhbmNlTGlzdC5oIFwKKyAgICBzdmcvU1ZHRWxlbWVudFJhcmVEYXRhLmgg
XAogICAgIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oIFwKICAgICBzdmcvU1ZHRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZC5oIFwKICAgICBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaCBcCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDUzOTMzKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNDA4
MzcsNiArNDA4MzcsMTAgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0VsZW1lbnRSYXJlRGF0YS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0VsbGlwc2VFbGVt
ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcg
QEAKIAkJMDgwRkFFMUIwRUVFQkRBODAwQUFDREU5IC8qIFdNTFRlbXBsYXRlRWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgwRkFFMTkwRUVF
QkRBODAwQUFDREU5IC8qIFdNTFRlbXBsYXRlRWxlbWVudC5oICovOyB9OwogCQkwODE4QUVFMjBF
REI4NkJDMDA2NDdCNjYgLyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxOEFFRTAwRURCODZCQzAwNjQ3
QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmNwcCAqLzsgfTsKIAkJMDgxOEFFRTMwRURC
ODZCQzAwNjQ3QjY2IC8qIFdNTEV2ZW50SGFuZGxpbmdFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODE4QUVFMTBFREI4NkJDMDA2NDdCNjYg
LyogV01MRXZlbnRIYW5kbGluZ0VsZW1lbnQuaCAqLzsgfTsKKwkJMDgxQUE4REExMTExMjM3RTAw
MkFCMDZFIC8qIFNWR0VsZW1lbnRSYXJlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDgxQUE4RDkxMTExMjM3RTAwMkFCMDZFIC8qIFNWR0VsZW1l
bnRSYXJlRGF0YS5oICovOyB9OwogCQkwODFEODEzMTBFRTBFNzREMDBENzM2ODkgLyogV01MVGlt
ZXJFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDA4MUQ4MTJGMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuY3BwICovOyB9
OwogCQkwODFEODEzMjBFRTBFNzREMDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwODFEODEzMDBFRTBFNzRE
MDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmggKi87IH07CiAJCTA4MUVCRjNBMEZEMzRGNDEw
MERBNzU1OSAvKiBTVkdGaWx0ZXJCdWlsZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdGaWx0
ZXJCdWlsZGVyLmNwcCAqLzsgfTsKQEAgLTUzMjIsNiArNTMyMyw3IEBACiAJCTA4MEZBRTE5MEVF
RUJEQTgwMEFBQ0RFOSAvKiBXTUxUZW1wbGF0ZUVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV01MVGVtcGxhdGVFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MThBRUUwMEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXTUxFdmVudEhh
bmRsaW5nRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MThBRUUx
MEVEQjg2QkMwMDY0N0I2NiAvKiBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXTUxFdmVudEhhbmRsaW5nRWxlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQkwODFBQThEOTExMTEyMzdFMDAyQUIwNkUgLyogU1ZHRWxl
bWVudFJhcmVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0VsZW1l
bnRSYXJlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwODFEODEyRjBFRTBF
NzREMDBENzM2ODkgLyogV01MVGltZXJFbGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFdNTFRpbWVyRWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA4MUQ4MTMwMEVFMEU3NEQwMEQ3MzY4OSAvKiBXTUxUaW1lckVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV01MVGltZXJFbGVtZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA4MUVCRjM4MEZEMzRGNDEwMERBNzU1OSAvKiBTVkdG
aWx0ZXJCdWlsZGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0ZpbHRlckJ1aWxkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTM4NTYs
NiArMTM4NTgsNyBAQAogCQkJCUIyMjI3ODI2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdFbGVtZW50
SW5zdGFuY2VMaXN0LmNwcCAqLywKIAkJCQlCMjIyNzgyNzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZH
RWxlbWVudEluc3RhbmNlTGlzdC5oICovLAogCQkJCUIyMjI3ODI4MEQwMEJGMUYwMDcxQjc4MiAv
KiBTVkdFbGVtZW50SW5zdGFuY2VMaXN0LmlkbCAqLywKKwkJCQkwODFBQThEOTExMTEyMzdFMDAy
QUIwNkUgLyogU1ZHRWxlbWVudFJhcmVEYXRhLmggKi8sCiAJCQkJQjIyMjc4MjkwRDAwQkYxRjAw
NzFCNzgyIC8qIFNWR0VsbGlwc2VFbGVtZW50LmNwcCAqLywKIAkJCQlCMjIyNzgyQTBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzgyQjBEMDBCRjFG
MDA3MUI3ODIgLyogU1ZHRWxsaXBzZUVsZW1lbnQuaWRsICovLApAQCAtMTg0NjIsNiArMTg0NjUs
NyBAQAogCQkJCTA4NEQyODM0MTEwQTdGQ0IwMDM4MjM5QSAvKiBTVkdBbmltYXRlZFByb3BlcnR5
VHJhaXRzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1OUU4NDI2NjExMDlFNUEyMDAwMzA1QUQgLyog
Sk5JQnJpZGdlSlNDLmggaW4gSGVhZGVycyAqLywKIAkJCQlFMUExNDcwODExMTAyQjE1MDBFRUMw
RjMgLyogQ29udGFpbmVyTm9kZUFsZ29yaXRobXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTA4MUFB
OERBMTExMTIzN0UwMDJBQjA2RSAvKiBTVkdFbGVtZW50UmFyZURhdGEuaCBpbiBIZWFkZXJzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
Tm9kZS5jcHAJKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9kb20vTm9kZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTQyMiw2ICs0MjIsNyBAQCBOb2RlOjpOb2RlKERvY3VtZW50KiBkb2N1bWVu
dCwgQ29uc3RydWN0CiAjaWYgRU5BQkxFKFNWRykKICAgICAsIG1fYXJlU1ZHQXR0cmlidXRlc1Zh
bGlkKHRydWUpCiAgICAgLCBtX3N5bmNocm9uaXppbmdTVkdBdHRyaWJ1dGVzKGZhbHNlKQorICAg
ICwgbV9oYXNSYXJlU1ZHRGF0YShmYWxzZSkKICNlbmRpZgogewogICAgIGlmIChtX2RvY3VtZW50
KQpJbmRleDogV2ViQ29yZS9kb20vTm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05v
ZGUuaAkocmV2aXNpb24gNTM5MzMpCisrKyBXZWJDb3JlL2RvbS9Ob2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTU3MSw3ICs1NzEsMTAgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc2V0VGFiSW5kZXhF
eHBsaWNpdGx5KHNob3J0KTsKICAgICAKICAgICBib29sIGhhc1JhcmVEYXRhKCkgY29uc3QgeyBy
ZXR1cm4gbV9oYXNSYXJlRGF0YTsgfQotICAgIAorI2lmIEVOQUJMRShTVkcpCisgICAgYm9vbCBo
YXNSYXJlU1ZHRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzUmFyZVNWR0RhdGE7IH0KKyNlbmRp
ZgorCiAgICAgTm9kZVJhcmVEYXRhKiByYXJlRGF0YSgpIGNvbnN0OwogICAgIE5vZGVSYXJlRGF0
YSogZW5zdXJlUmFyZURhdGEoKTsKIApAQCAtNjM1LDkgKzYzOCwxMCBAQCBwcm90ZWN0ZWQ6CiAj
aWYgRU5BQkxFKFNWRykKICAgICBtdXRhYmxlIGJvb2wgbV9hcmVTVkdBdHRyaWJ1dGVzVmFsaWQg
OiAxOyAvLyBFbGVtZW50CiAgICAgbXV0YWJsZSBib29sIG1fc3luY2hyb25pemluZ1NWR0F0dHJp
YnV0ZXMgOiAxOyAvLyBTVkdFbGVtZW50CisgICAgYm9vbCBtX2hhc1JhcmVTVkdEYXRhIDogMTsg
Ly8gU1ZHRWxlbWVudAogI2VuZGlmCiAKLSAgICAvLyAxMSBiaXRzIHJlbWFpbmluZworICAgIC8v
IDEwIGJpdHMgcmVtYWluaW5nCiB9OwogCiAvLyBVc2VkIGluIE5vZGU6OmFkZFN1YnJlc291cmNl
QXR0cmlidXRlVVJMcygpIGFuZCBpbiBhZGRTdWJyZXNvdXJjZVN0eWxlVVJMcygpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCShyZXZpc2lvbiA1MzkzMykKKysr
IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjE1LDkgKzIxNSw5IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVz
dWwKICAgICAgICAgdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKS0+c2V0TmVlZHNMYXlvdXQodHJ1
ZSk7CiAgICAgCiAgICAgLy8gLi4uZXhjZXB0IGluIGNhc2Ugd2hlcmUgd2UgaGF2ZSBhZGRpdGlv
bmFsIGluc3RhbmNlcyBpbiA8dXNlPiB0cmVlcy4KLSAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0
YW5jZSo+IGluc3RhbmNlcyA9IHRhcmdldEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsK
LSAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+OjppdGVyYXRvciBlbmQgPSBpbnN0YW5j
ZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+OjppdGVyYXRv
ciBpdCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICBjb25zdCBI
YXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMgPSB0YXJnZXRFbGVtZW50LT5p
bnN0YW5jZXNGb3JFbGVtZW50KCk7CisgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFu
Y2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gaW5zdGFuY2VzLmVuZCgpOworICAgIGZvciAoSGFz
aFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMu
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1Ry
ZWVFbGVtZW50ID0gKCppdCktPnNoYWRvd1RyZWVFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChz
aGFkb3dUcmVlRWxlbWVudCk7CiAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KiB0cmFuc2Zv
cm0gPSBzaGFkb3dUcmVlRWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlVHJhbnNmb3JtRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQuY3BwCShyZXZpc2lvbiA1Mzkz
MykKKysrIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTYzLDEwICsxNjMsMTAgQEAgdm9pZCBTVkdBbmltYXRlVHJhbnNmb3JtRWxl
bWVudDo6YXBwbHlSZQogICAgICAgICB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpLT5zZXROZWVk
c0xheW91dCh0cnVlKTsKICAgICAKICAgICAvLyAuLi5leGNlcHQgaW4gY2FzZSB3aGVyZSB3ZSBo
YXZlIGFkZGl0aW9uYWwgaW5zdGFuY2VzIGluIDx1c2U+IHRyZWVzLgotICAgIEhhc2hTZXQ8U1ZH
RWxlbWVudEluc3RhbmNlKj4gaW5zdGFuY2VzID0gdGFyZ2V0RWxlbWVudC0+aW5zdGFuY2VzRm9y
RWxlbWVudCgpOworICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4mIGluc3Rh
bmNlcyA9IHRhcmdldEVsZW1lbnQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKICAgICBSZWZQdHI8
U1ZHVHJhbnNmb3JtTGlzdD4gdHJhbnNmb3JtTGlzdCA9IHRyYW5zZm9ybUxpc3RGb3IodGFyZ2V0
RWxlbWVudCk7Ci0gICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6aXRlcmF0b3IgZW5k
ID0gaW5zdGFuY2VzLmVuZCgpOwotICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2Uq
Pjo6aXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3IgZW5k
ID0gaW5zdGFuY2VzLmVuZCgpOworICAgIGZvciAoSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2Uq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBpbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIFNWR0VsZW1lbnQqIHNoYWRvd1RyZWVFbGVtZW50ID0gKCppdCktPnNoYWRv
d1RyZWVFbGVtZW50KCk7CiAgICAgICAgIEFTU0VSVChzaGFkb3dUcmVlRWxlbWVudCk7CiAgICAg
ICAgIGlmIChzaGFkb3dUcmVlRWxlbWVudC0+aXNTdHlsZWRUcmFuc2Zvcm1hYmxlKCkpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gNTM5MzMpCisrKyBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDkg
KzMxNiw5IEBAIHZvaWQgU1ZHQW5pbWF0aW9uRWxlbWVudDo6c2V0VGFyZ2V0QXR0cmkKICAgICAg
ICAgc3RhdGljX2Nhc3Q8U1ZHU3R5bGVkRWxlbWVudCo+KHRhcmdldCktPnNldEluc3RhbmNlVXBk
YXRlc0Jsb2NrZWQoZmFsc2UpOwogICAgIAogICAgIC8vIElmIHRoZSB0YXJnZXQgZWxlbWVudCBp
cyB1c2VkIGluIGFuIDx1c2U+IGluc3RhbmNlIHRyZWUsIHVwZGF0ZSB0aGF0IGFzIHdlbGwuCi0g
ICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBpbnN0YW5jZXMgPSB0YXJnZXQtPmluc3Rh
bmNlc0ZvckVsZW1lbnQoKTsKLSAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+OjppdGVy
YXRvciBlbmQgPSBpbnN0YW5jZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJ
bnN0YW5jZSo+OjppdGVyYXRvciBpdCA9IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBpbnN0YW5jZXMg
PSB0YXJnZXQtPmluc3RhbmNlc0ZvckVsZW1lbnQoKTsKKyAgICBjb25zdCBIYXNoU2V0PFNWR0Vs
ZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBpbnN0YW5jZXMuZW5kKCk7Cisg
ICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGluc3RhbmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgU1ZHRWxlbWVu
dCogc2hhZG93VHJlZUVsZW1lbnQgPSAoKml0KS0+c2hhZG93VHJlZUVsZW1lbnQoKTsKICAgICAg
ICAgQVNTRVJUKHNoYWRvd1RyZWVFbGVtZW50KTsKICAgICAgICAgaWYgKGlzQ1NTKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAJKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDYgKzM5LDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKICNpbmNsdWRlICJTVkdDdXJzb3JFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVu
dEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudFJhcmVEYXRhLmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR1NWR0Vs
ZW1lbnQuaCIKQEAgLTUzLDggKzU0LDYgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIAog
U1ZHRWxlbWVudDo6U1ZHRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCiAgICAgOiBTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBD
cmVhdGVFbGVtZW50WmVyb1JlZkNvdW50KQotICAgICwgbV9jdXJzb3JFbGVtZW50KDApCi0gICAg
LCBtX2N1cnNvckltYWdlVmFsdWUoMCkKIHsKIH0KIApAQCAtNjUsMTAgKzY0LDQwIEBAIFBhc3NS
ZWZQdHI8U1ZHRWxlbWVudD4gU1ZHRWxlbWVudDo6Y3JlYXQKIAogU1ZHRWxlbWVudDo6flNWR0Vs
ZW1lbnQoKQogewotICAgIGlmIChtX2N1cnNvckVsZW1lbnQpCi0gICAgICAgIG1fY3Vyc29yRWxl
bWVudC0+cmVtb3ZlQ2xpZW50KHRoaXMpOwotICAgIGlmIChtX2N1cnNvckltYWdlVmFsdWUpCi0g
ICAgICAgIG1fY3Vyc29ySW1hZ2VWYWx1ZS0+cmVtb3ZlUmVmZXJlbmNlZEVsZW1lbnQodGhpcyk7
CisgICAgaWYgKCFoYXNSYXJlU1ZHRGF0YSgpKQorICAgICAgICBBU1NFUlQoIVNWR0VsZW1lbnRS
YXJlRGF0YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CisgICAgZWxzZSB7CisgICAg
ICAgIFNWR0VsZW1lbnRSYXJlRGF0YTo6U1ZHRWxlbWVudFJhcmVEYXRhTWFwJiByYXJlRGF0YU1h
cCA9IFNWR0VsZW1lbnRSYXJlRGF0YTo6cmFyZURhdGFNYXAoKTsKKyAgICAgICAgU1ZHRWxlbWVu
dFJhcmVEYXRhOjpTVkdFbGVtZW50UmFyZURhdGFNYXA6Oml0ZXJhdG9yIGl0ID0gcmFyZURhdGFN
YXAuZmluZCh0aGlzKTsKKyAgICAgICAgQVNTRVJUKGl0ICE9IHJhcmVEYXRhTWFwLmVuZCgpKTsK
KworICAgICAgICBTVkdFbGVtZW50UmFyZURhdGEqIHJhcmVEYXRhID0gaXQtPnNlY29uZDsKKyAg
ICAgICAgaWYgKFNWR0N1cnNvckVsZW1lbnQqIGN1cnNvckVsZW1lbnQgPSByYXJlRGF0YS0+Y3Vy
c29yRWxlbWVudCgpKQorICAgICAgICAgICAgY3Vyc29yRWxlbWVudC0+cmVtb3ZlQ2xpZW50KHRo
aXMpOworICAgICAgICBpZiAoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogY3Vyc29ySW1hZ2VWYWx1ZSA9
IHJhcmVEYXRhLT5jdXJzb3JJbWFnZVZhbHVlKCkpCisgICAgICAgICAgICBjdXJzb3JJbWFnZVZh
bHVlLT5yZW1vdmVSZWZlcmVuY2VkRWxlbWVudCh0aGlzKTsKKworICAgICAgICBkZWxldGUgcmFy
ZURhdGE7CisgICAgICAgIHJhcmVEYXRhTWFwLnJlbW92ZShpdCk7CisgICAgfQorfQorCitTVkdF
bGVtZW50UmFyZURhdGEqIFNWR0VsZW1lbnQ6OnJhcmVTVkdEYXRhKCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaGFzUmFyZVNWR0RhdGEoKSk7CisgICAgcmV0dXJuIFNWR0VsZW1lbnRSYXJlRGF0YTo6
cmFyZURhdGFGcm9tTWFwKHRoaXMpOworfQorCitTVkdFbGVtZW50UmFyZURhdGEqIFNWR0VsZW1l
bnQ6OmVuc3VyZVJhcmVTVkdEYXRhKCkKK3sKKyAgICBpZiAoaGFzUmFyZVNWR0RhdGEoKSkKKyAg
ICAgICAgcmV0dXJuIHJhcmVTVkdEYXRhKCk7CisKKyAgICBBU1NFUlQoIVNWR0VsZW1lbnRSYXJl
RGF0YTo6cmFyZURhdGFNYXAoKS5jb250YWlucyh0aGlzKSk7CisgICAgU1ZHRWxlbWVudFJhcmVE
YXRhKiBkYXRhID0gbmV3IFNWR0VsZW1lbnRSYXJlRGF0YTsKKyAgICBTVkdFbGVtZW50UmFyZURh
dGE6OnJhcmVEYXRhTWFwKCkuc2V0KHRoaXMsIGRhdGEpOworICAgIG1faGFzUmFyZVNWR0RhdGEg
PSB0cnVlOworICAgIHJldHVybiBkYXRhOwogfQogCiBib29sIFNWR0VsZW1lbnQ6OmlzU3VwcG9y
dGVkKFN0cmluZ0ltcGwqIGZlYXR1cmUsIFN0cmluZ0ltcGwqIHZlcnNpb24pIGNvbnN0CkBAIC0x
MTYsNyArMTQ1LDYgQEAgU1ZHRWxlbWVudCogU1ZHRWxlbWVudDo6dmlld3BvcnRFbGVtZW50KAog
CiBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIFNWR0VsZW1lbnQ6OmFjY2Vzc0RvY3VtZW50U1ZHRXh0
ZW5zaW9ucygpIGNvbnN0CiB7Ci0KICAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHByb3ZpZGVkIGZv
ciB1c2UgYnkgU1ZHQW5pbWF0ZWRQcm9wZXJ0eSB0byBhdm9pZAogICAgIC8vIGdsb2JhbCBpbmNs
dXNpb24gb2YgRG9jdW1lbnQuaCBpbiBTVkcgY29kZS4KICAgICByZXR1cm4gZG9jdW1lbnQoKSA/
IGRvY3VtZW50KCktPmFjY2Vzc1NWR0V4dGVuc2lvbnMoKSA6IDA7CkBAIC0xMjUsMjAgKzE1Myw0
MSBAQCBTVkdEb2N1bWVudEV4dGVuc2lvbnMqIFNWR0VsZW1lbnQ6OmFjY2VzCiB2b2lkIFNWR0Vs
ZW1lbnQ6Om1hcEluc3RhbmNlVG9FbGVtZW50KFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2Up
CiB7CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKLSAgICBBU1NFUlQoIW1fZWxlbWVudEluc3RhbmNl
cy5jb250YWlucyhpbnN0YW5jZSkpOwotICAgIG1fZWxlbWVudEluc3RhbmNlcy5hZGQoaW5zdGFu
Y2UpOworCisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzID0gZW5z
dXJlUmFyZVNWR0RhdGEoKS0+ZWxlbWVudEluc3RhbmNlcygpOworICAgIEFTU0VSVCghaW5zdGFu
Y2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7CisKKyAgICBpbnN0YW5jZXMuYWRkKGluc3RhbmNlKTsK
IH0KICAKIHZvaWQgU1ZHRWxlbWVudDo6cmVtb3ZlSW5zdGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJ
bnN0YW5jZSogaW5zdGFuY2UpCiB7CiAgICAgQVNTRVJUKGluc3RhbmNlKTsKLSAgICBBU1NFUlQo
bV9lbGVtZW50SW5zdGFuY2VzLmNvbnRhaW5zKGluc3RhbmNlKSk7Ci0gICAgbV9lbGVtZW50SW5z
dGFuY2VzLnJlbW92ZShpbnN0YW5jZSk7CisgICAgQVNTRVJUKGhhc1JhcmVTVkdEYXRhKCkpOwor
CisgICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgaW5zdGFuY2VzID0gcmFyZVNWR0Rh
dGEoKS0+ZWxlbWVudEluc3RhbmNlcygpOworICAgIEFTU0VSVChpbnN0YW5jZXMuY29udGFpbnMo
aW5zdGFuY2UpKTsKKworICAgIGluc3RhbmNlcy5yZW1vdmUoaW5zdGFuY2UpOworfQorCitjb25z
dCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBTVkdFbGVtZW50OjppbnN0YW5jZXNGb3JF
bGVtZW50KCkgY29uc3QKK3sKKyAgICBpZiAoIWhhc1JhcmVTVkdEYXRhKCkpIHsKKyAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+LCBlbXB0eUlu
c3RhbmNlcywgKCkpOworICAgICAgICByZXR1cm4gZW1wdHlJbnN0YW5jZXM7CisgICAgfQorICAg
IHJldHVybiByYXJlU1ZHRGF0YSgpLT5lbGVtZW50SW5zdGFuY2VzKCk7Cit9CisKK3ZvaWQgU1ZH
RWxlbWVudDo6c2V0Q3Vyc29yRWxlbWVudChTVkdDdXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50
KQoreworICAgIGVuc3VyZVJhcmVTVkdEYXRhKCktPnNldEN1cnNvckVsZW1lbnQoY3Vyc29yRWxl
bWVudCk7CiB9CiAKLUhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj4gU1ZHRWxlbWVudDo6aW5z
dGFuY2VzRm9yRWxlbWVudCgpIGNvbnN0Cit2b2lkIFNWR0VsZW1lbnQ6OnNldEN1cnNvckltYWdl
VmFsdWUoQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogY3Vyc29ySW1hZ2VWYWx1ZSkKIHsKLSAgICByZXR1
cm4gbV9lbGVtZW50SW5zdGFuY2VzOworICAgIGVuc3VyZVJhcmVTVkdEYXRhKCktPnNldEN1cnNv
ckltYWdlVmFsdWUoY3Vyc29ySW1hZ2VWYWx1ZSk7CiB9CiAKIHZvaWQgU1ZHRWxlbWVudDo6cGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKQpJbmRleDogV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAko
cmV2aXNpb24gNTM5MzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMyLDYgKzMyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIERvY3Vt
ZW50OwogICAgIGNsYXNzIFNWR0N1cnNvckVsZW1lbnQ7CiAgICAgY2xhc3MgU1ZHRWxlbWVudElu
c3RhbmNlOworICAgIGNsYXNzIFNWR0VsZW1lbnRSYXJlRGF0YTsKICAgICBjbGFzcyBTVkdTVkdF
bGVtZW50OwogICAgIGNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogCkBAIC03MywxMCArNzQs
MTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgc2V0U3luY2hyb25pemVk
U1ZHQXR0cmlidXRlcyhib29sIHZhbHVlKSB7IG1fYXJlU1ZHQXR0cmlidXRlc1ZhbGlkID0gdmFs
dWU7IH0KIAotICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+IGluc3RhbmNlc0Zv
ckVsZW1lbnQoKSBjb25zdDsKKyAgICAgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFu
Y2UqPiYgaW5zdGFuY2VzRm9yRWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIHZvaWQgc2V0Q3Vy
c29yRWxlbWVudChTVkdDdXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50KSB7IG1fY3Vyc29yRWxl
bWVudCA9IGN1cnNvckVsZW1lbnQ7IH0KLSAgICAgICAgdm9pZCBzZXRDdXJzb3JJbWFnZVZhbHVl
KENTU0N1cnNvckltYWdlVmFsdWUqIGN1cnNvckltYWdlVmFsdWUpIHsgbV9jdXJzb3JJbWFnZVZh
bHVlID0gY3Vyc29ySW1hZ2VWYWx1ZTsgfQorICAgICAgICB2b2lkIHNldEN1cnNvckVsZW1lbnQo
U1ZHQ3Vyc29yRWxlbWVudCopOworICAgICAgICB2b2lkIHNldEN1cnNvckltYWdlVmFsdWUoQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSopOwogCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBTVkdFbGVtZW50
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtODYsNiArODcsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0
dHJpYnV0ZSosIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUFuaW1hdGVkU1ZHQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKIAorICAgICAgICBTVkdFbGVtZW50UmFyZURhdGEqIHJhcmVTVkdEYXRhKCkgY29uc3Q7Cisg
ICAgICAgIFNWR0VsZW1lbnRSYXJlRGF0YSogZW5zdXJlUmFyZVNWR0RhdGEoKTsKKwogICAgIHBy
aXZhdGU6CiAgICAgICAgIGZyaWVuZCBjbGFzcyBTVkdFbGVtZW50SW5zdGFuY2U7CiAKQEAgLTk5
LDExICsxMDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcmVtb3ZlSW5z
dGFuY2VNYXBwaW5nKFNWR0VsZW1lbnRJbnN0YW5jZSopOwogCiAgICAgICAgIHZpcnR1YWwgYm9v
bCBoYXZlTG9hZGVkUmVxdWlyZWRSZXNvdXJjZXMoKTsKLQotICAgICAgICBTVkdDdXJzb3JFbGVt
ZW50KiBtX2N1cnNvckVsZW1lbnQ7Ci0gICAgICAgIENTU0N1cnNvckltYWdlVmFsdWUqIG1fY3Vy
c29ySW1hZ2VWYWx1ZTsKLQotICAgICAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+IG1f
ZWxlbWVudEluc3RhbmNlczsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50SW5zdGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbnN0
YW5jZS5jcHAJKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxlbWVudEluc3Rh
bmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTUsMTUgKzk1LDEzIEBAIHZvaWQgU1ZHRWxlbWVu
dEluc3RhbmNlOjppbnZhbGlkYXRlQWxsSW4KICAgICBpZiAoZWxlbWVudC0+aXNTdHlsZWQoKSAm
JiBzdGF0aWNfY2FzdDxTVkdTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmluc3RhbmNlVXBkYXRl
c0Jsb2NrZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSGFzaFNldDxTVkdFbGVtZW50SW5z
dGFuY2UqPiBzZXQgPSBlbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVtZW50KCk7CisgICAgY29uc3Qg
SGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiYgc2V0ID0gZWxlbWVudC0+aW5zdGFuY2VzRm9y
RWxlbWVudCgpOwogICAgIGlmIChzZXQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBNYXJrIGFsbCB1c2UgZWxlbWVudHMgcmVmZXJlbmNpbmcgJ2VsZW1lbnQnIGZvciByZWJ1
aWxkaW5nCi0gICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBzZXQuYmVnaW4oKTsKICAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBzZXQuZW5kKCk7Ci0KLSAgICBmb3IgKDsgaXQgIT0gZW5k
OyArK2l0KSB7CisgICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+Ojpjb25zdF9p
dGVyYXRvciBpdCA9IHNldC5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQVNT
RVJUKCgqaXQpLT5jb3JyZXNwb25kaW5nRWxlbWVudCgpID09IGVsZW1lbnQpOwogICAgICAgICAo
Kml0KS0+Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQoKS0+aW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsK
ICAgICB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3N2Zy9TVkdFbGVtZW50UmFyZURhdGEuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRSYXJlRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEw
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAy
MTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTVkdFbGVtZW50UmFyZURhdGFfaAor
I2RlZmluZSBTVkdFbGVtZW50UmFyZURhdGFfaAorCisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
KyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZTsK
K2NsYXNzIFNWR0N1cnNvckVsZW1lbnQ7CitjbGFzcyBTVkdFbGVtZW50OworY2xhc3MgU1ZHRWxl
bWVudEluc3RhbmNlOworCitjbGFzcyBTVkdFbGVtZW50UmFyZURhdGEgOiBwdWJsaWMgTm9uY29w
eWFibGUgeworcHVibGljOgorICAgIFNWR0VsZW1lbnRSYXJlRGF0YSgpCisgICAgICAgIDogbV9j
dXJzb3JFbGVtZW50KDApCisgICAgICAgICwgbV9jdXJzb3JJbWFnZVZhbHVlKDApCisgICAgICAg
ICwgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZChmYWxzZSkKKyAgICB7CisgICAgfQorCisgICAg
dHlwZWRlZiBIYXNoTWFwPGNvbnN0IFNWR0VsZW1lbnQqLCBTVkdFbGVtZW50UmFyZURhdGEqPiBT
VkdFbGVtZW50UmFyZURhdGFNYXA7CisKKyAgICBzdGF0aWMgU1ZHRWxlbWVudFJhcmVEYXRhTWFw
JiByYXJlRGF0YU1hcCgpCisgICAgeworICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFNWR0Vs
ZW1lbnRSYXJlRGF0YU1hcCwgcmFyZURhdGFNYXAsICgpKTsKKyAgICAgICAgcmV0dXJuIHJhcmVE
YXRhTWFwOworICAgIH0KKworICAgIHN0YXRpYyBTVkdFbGVtZW50UmFyZURhdGEqIHJhcmVEYXRh
RnJvbU1hcChjb25zdCBTVkdFbGVtZW50KiBlbGVtZW50KQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHJhcmVEYXRhTWFwKCkuZ2V0KGVsZW1lbnQpOworICAgIH0KKworICAgIEhhc2hTZXQ8U1ZHRWxl
bWVudEluc3RhbmNlKj4mIGVsZW1lbnRJbnN0YW5jZXMoKSB7IHJldHVybiBtX2VsZW1lbnRJbnN0
YW5jZXM7IH0KKyAgICBjb25zdCBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5jZSo+JiBlbGVtZW50
SW5zdGFuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50SW5zdGFuY2VzOyB9CisKKyAgICBi
b29sIGluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSBjb25zdCB7IHJldHVybiBtX2luc3RhbmNlc1Vw
ZGF0ZXNCbG9ja2VkOyB9CisgICAgdm9pZCBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJvb2wg
dmFsdWUpIHsgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZCA9IHZhbHVlOyB9CisKKyAgICBTVkdD
dXJzb3JFbGVtZW50KiBjdXJzb3JFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9jdXJzb3JFbGVt
ZW50OyB9CisgICAgdm9pZCBzZXRDdXJzb3JFbGVtZW50KFNWR0N1cnNvckVsZW1lbnQqIGN1cnNv
ckVsZW1lbnQpIHsgbV9jdXJzb3JFbGVtZW50ID0gY3Vyc29yRWxlbWVudDsgfQorCisgICAgQ1NT
Q3Vyc29ySW1hZ2VWYWx1ZSogY3Vyc29ySW1hZ2VWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3Vy
c29ySW1hZ2VWYWx1ZTsgfQorICAgIHZvaWQgc2V0Q3Vyc29ySW1hZ2VWYWx1ZShDU1NDdXJzb3JJ
bWFnZVZhbHVlKiBjdXJzb3JJbWFnZVZhbHVlKSB7IG1fY3Vyc29ySW1hZ2VWYWx1ZSA9IGN1cnNv
ckltYWdlVmFsdWU7IH0KKworcHJpdmF0ZToKKyAgICBIYXNoU2V0PFNWR0VsZW1lbnRJbnN0YW5j
ZSo+IG1fZWxlbWVudEluc3RhbmNlczsKKyAgICBTVkdDdXJzb3JFbGVtZW50KiBtX2N1cnNvckVs
ZW1lbnQ7CisgICAgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogbV9jdXJzb3JJbWFnZVZhbHVlOworICAg
IGJvb2wgbV9pbnN0YW5jZXNVcGRhdGVzQmxvY2tlZCA6IDE7Cit9OworCit9CisKKyNlbmRpZgpJ
bmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDUzOTMzKQorKysgV2ViQ29y
ZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudFJhcmVE
YXRhLmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdHlsZS5o
IgogI2luY2x1ZGUgIlNWR1Jlc291cmNlQ2xpcHBlci5oIgpAQCAtNTUsNyArNTYsNiBAQCB2b2lk
IG1hcEF0dHJpYnV0ZVRvQ1NTUHJvcGVydHkoSGFzaE1hcDxBCiAKIFNWR1N0eWxlZEVsZW1lbnQ6
OlNWR1N0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQq
IGRvYykKICAgICA6IFNWR0VsZW1lbnQodGFnTmFtZSwgZG9jKQotICAgICwgbV9pbnN0YW5jZVVw
ZGF0ZXNCbG9ja2VkKGZhbHNlKQogewogfQogCkBAIC0zMDUsNyArMzA1LDE4IEBAIHZvaWQgU1ZH
U3R5bGVkRWxlbWVudDo6ZGV0YWNoKCkKICAgICBTVkdSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KHRo
aXMpOwogICAgIFNWR0VsZW1lbnQ6OmRldGFjaCgpOwogfQotICAgIAorCitib29sIFNWR1N0eWxl
ZEVsZW1lbnQ6Omluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoKSBjb25zdAoreworICAgIHJldHVybiBo
YXNSYXJlU1ZHRGF0YSgpICYmIHJhcmVTVkdEYXRhKCktPmluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
KTsKK30KKwordm9pZCBTVkdTdHlsZWRFbGVtZW50OjpzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2Vk
KGJvb2wgdmFsdWUpCit7CisgICAgaWYgKGhhc1JhcmVTVkdEYXRhKCkpCisgICAgICAgIHJhcmVT
VkdEYXRhKCktPnNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQodmFsdWUpOworfQorCiB9CiAKICNl
bmRpZiAvLyBFTkFCTEUoU1ZHKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHU3R5bGVkRWxlbWVudC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1N0eWxlZEVsZW1lbnQuaAkocmV2aXNpb24g
NTM5MzMpCisrKyBXZWJDb3JlL3N2Zy9TVkdTdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTY1LDE1ICs2NSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdmlydHVh
bCB2b2lkIGRldGFjaCgpOwogCi0gICAgICAgIGJvb2wgaW5zdGFuY2VVcGRhdGVzQmxvY2tlZCgp
IGNvbnN0IHsgcmV0dXJuIG1faW5zdGFuY2VVcGRhdGVzQmxvY2tlZDsgfQotICAgICAgICB2b2lk
IHNldEluc3RhbmNlVXBkYXRlc0Jsb2NrZWQoYm9vbCB2YWx1ZSkgeyBtX2luc3RhbmNlVXBkYXRl
c0Jsb2NrZWQgPSB2YWx1ZTsgfQorICAgICAgICBib29sIGluc3RhbmNlVXBkYXRlc0Jsb2NrZWQo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRJbnN0YW5jZVVwZGF0ZXNCbG9ja2VkKGJvb2wpOwog
CiAgICAgcHJvdGVjdGVkOiAKICAgICAgICAgc3RhdGljIGludCBjc3NQcm9wZXJ0eUlkRm9yU1ZH
QXR0cmlidXRlTmFtZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR1N0eWxlZEVsZW1lbnQsIEhUTUxOYW1l
czo6Y2xhc3NBdHRyLCBTdHJpbmcsIENsYXNzTmFtZSwgY2xhc3NOYW1lKQotICAgICAgICBib29s
IG1faW5zdGFuY2VVcGRhdGVzQmxvY2tlZDsKICAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkocmV2aXNpb24gNTM5MzMpCisrKyBXZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDExICszNTUsMTEg
QEAgdm9pZCBkdW1wSW5zdGFuY2VUcmVlKHVuc2lnbmVkIGludCYgZGVwdAogICAgIGZvciAodW5z
aWduZWQgaW50IGkgPSAwOyBpIDwgZGVwdGg7ICsraSkKICAgICAgICAgdGV4dCArPSAiICAiOwog
Ci0gICAgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPiBlbGVtZW50SW5zdGFuY2VzID0gZWxl
bWVudC0+aW5zdGFuY2VzRm9yRWxlbWVudCgpOworICAgIGNvbnN0IEhhc2hTZXQ8U1ZHRWxlbWVu
dEluc3RhbmNlKj4mIGVsZW1lbnRJbnN0YW5jZXMgPSBlbGVtZW50LT5pbnN0YW5jZXNGb3JFbGVt
ZW50KCk7CiAgICAgdGV4dCArPSBTdHJpbmc6OmZvcm1hdCgiQ29ycmVzcG9uZGluZyBlbGVtZW50
IGlzIGFzc29jaWF0ZWQgd2l0aCAlaSBpbnN0YW5jZShzKTpcbiIsIGVsZW1lbnRJbnN0YW5jZXMu
c2l6ZSgpKTsKIAotICAgIEhhc2hTZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46Oml0ZXJhdG9yIGVu
ZCA9IGVsZW1lbnRJbnN0YW5jZXMuZW5kKCk7Ci0gICAgZm9yIChIYXNoU2V0PFNWR0VsZW1lbnRJ
bnN0YW5jZSo+OjppdGVyYXRvciBpdCA9IGVsZW1lbnRJbnN0YW5jZXMuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgY29uc3QgSGFzaFNldDxTVkdFbGVtZW50SW5zdGFuY2UqPjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gZWxlbWVudEluc3RhbmNlcy5lbmQoKTsKKyAgICBmb3IgKEhhc2hT
ZXQ8U1ZHRWxlbWVudEluc3RhbmNlKj46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZWxlbWVudEluc3Rh
bmNlcy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBp
bnQgaSA9IDA7IGkgPCBkZXB0aDsgKytpKQogICAgICAgICAgICAgdGV4dCArPSAiICAiOwogCg==
</data>
<flag name="review"
          id="30115"
          type_id="1"
          status="+"
          setter="krit"
    />
          </attachment>
      

    </bug>

</bugzilla>