<?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>19384</bug_id>
          
          <creation_ts>2008-06-03 18:29:14 -0700</creation_ts>
          <short_desc>Implement path morphing for SVG animation</short_desc>
          <delta_ts>2008-06-03 20:01:35 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/SVG/paths.html#PathElement</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="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>82259</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-06-03 18:29:14 -0700</bug_when>
    <thetext>&quot;Path data animation is only possible when each path data specification within an animation specification has exactly the same list of path data commands as the d attribute. If an animation is specified and the list of path data commands is not the same, then the animation specification is in error (see Error Processing). The animation engine interpolates each parameter to each path data command separately based on the attributes to the given animation element. Flags and booleans are interpolated as fractions between zero and one, with any non-zero value considered to be a value of one/true.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82260</commentid>
    <comment_count>1</comment_count>
      <attachid>21488</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-06-03 18:33:39 -0700</bug_when>
    <thetext>Created attachment 21488
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82261</commentid>
    <comment_count>2</comment_count>
      <attachid>21488</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-06-03 19:06:04 -0700</bug_when>
    <thetext>Comment on attachment 21488
patch

 161         m_fromPath.clear();
 162         m_toPath.clear();
 163         m_fromPath = SVGPathSegList::create(SVGNames::dAttr);

Is the call to m_fromPath.clear() needed here?

 238                 SVGPathSeg* segment = m_animatedPath-&gt;getItem(n, ec).get();

It seems unnecessarily dangerous to use a raw pointer here. If it was safe to be a raw pointer, then I think getItem&apos;s return value should be a raw pointer. I suggest using a RefPtr instead. There should be no additional ref count churn, since you start with a PassRefPtr anyway.

Can getItem fail? if so, then don&apos;t we need to check the value of &quot;ec&quot;?

 188         SVGPathSeg* from = fromList-&gt;getItem(n, ec).get();
 189         SVGPathSeg* to = toList-&gt;getItem(n, ec).get();

Same two comments here.

 254         result-&gt;appendItem(segment, ec);

Don&apos;t we need to check ec here? Or can this never fail?

 17 &lt;/svg&gt;
018 \ No newline at end of file

Could you include a newline?

I&apos;m going to say r=me, but please consider those RefPtr issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82263</commentid>
    <comment_count>3</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-06-03 19:37:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 21488 [edit])
&gt;  161         m_fromPath.clear();
&gt;  162         m_toPath.clear();
&gt;  163         m_fromPath = SVGPathSegList::create(SVGNames::dAttr);
&gt; 
&gt; Is the call to m_fromPath.clear() needed here?

No.

&gt; Can getItem fail? if so, then don&apos;t we need to check the value of &quot;ec&quot;?

No, the only way for it to fail is out of bounds index.

&gt;  254         result-&gt;appendItem(segment, ec);
&gt; 
&gt; Don&apos;t we need to check ec here? Or can this never fail?

This can&apos;t fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82264</commentid>
    <comment_count>4</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-06-03 19:59:16 -0700</bug_when>
    <thetext>Sending        LayoutTests/ChangeLog
Adding         LayoutTests/platform/mac/svg/custom/animate-path-morphing-expected.txt
Adding         LayoutTests/svg/custom/animate-path-morphing.svg
Sending        WebCore/ChangeLog
Sending        WebCore/svg/SVGAnimateElement.cpp
Sending        WebCore/svg/SVGAnimateElement.h
Sending        WebCore/svg/SVGPathSegList.cpp
Sending        WebCore/svg/SVGPathSegList.h
Transmitting file data ........
Committed revision 34358.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>82265</commentid>
    <comment_count>5</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-06-03 20:01:35 -0700</bug_when>
    <thetext> &gt;188         SVGPathSeg* from = fromList-&gt;getItem(n, ec).get();
 &gt;189         SVGPathSeg* to = toList-&gt;getItem(n, ec).get();
&gt;Same two comments here.

I didn&apos;t use RefPtrs here to keep the casts in macros simple. In practice nothing can destroy those segments inside the loop.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>21488</attachid>
            <date>2008-06-03 18:33:39 -0700</date>
            <delta_ts>2008-06-03 19:06:04 -0700</delta_ts>
            <desc>patch</desc>
            <filename>svg-animation-morph-2.patch</filename>
            <type>text/plain</type>
            <size>16419</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNDM1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMDgtMDYtMDMgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5Mzg0CisgICAg
ICAgIEltcGxlbWVudCBwYXRoIG1vcnBoaW5nIGZvciBTVkcgYW5pbWF0aW9uCisgICAgICAgIAor
ICAgICAgICBZb3UgY2FuIGFuaW1hdGUgc21vb3RobHkgYmV0d2VlbiBwYXRocyB0aGF0IGhhdmUg
ZXF1YWwgbnVtYmVyIG9mIGNvbnRyb2wgcG9pbnRzIG9mIG1hdGNoaW5nIHR5cGUuCisKKyAgICAg
ICAgVGVzdDogc3ZnL2N1c3RvbS9hbmltYXRlLXBhdGgtbW9ycGhpbmcuc3ZnCisKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnR5VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlRWxlbWVudDo6KToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aFNlZ0xpc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhTZWdMaXN0
OjpjcmVhdGVBbmltYXRlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhTZWdMaXN0Lmg6CisKIDIw
MDgtMDYtMDMgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2FyY2lhQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBKb2huLgpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gMzQzNTYpCisrKyBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24u
aCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5o
IgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaXN0LmgiCiAjaW5jbHVkZSA8bWF0aC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwpAQCAtNzksNiArODAsOCBAQCBTVkdBbmltYXRlRWxlbWVudDo6UHJv
cGVydHlUeXBlIFNWR0FuaW1hCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgYSBmdWxsIHByb3BlcnR5
IHRhYmxlIGZvciBmaWd1cmluZyB0aGlzIG91dCByZWxpYWJseS4KICAgICBpZiAoaGFzVGFnTmFt
ZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSkKICAgICAgICAgcmV0dXJuIENvbG9yUHJvcGVy
dHk7CisgICAgaWYgKGF0dHJpYnV0ZSA9PSAiZCIpCisgICAgICAgIHJldHVybiBQYXRoUHJvcGVy
dHk7CiAgICAgaWYgKGF0dHJpYnV0ZSA9PSAiY29sb3IiIHx8IGF0dHJpYnV0ZSA9PSAiZmlsbCIg
fHwgYXR0cmlidXRlID09ICJzdHJva2UiKQogICAgICAgICByZXR1cm4gQ29sb3JQcm9wZXJ0eTsK
ICAgICByZXR1cm4gTnVtYmVyUHJvcGVydHk7CkBAIC0xMjQsNiArMTI3LDEwIEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICAgICAgICAgIHJlc3VsdHMtPm1f
YW5pbWF0ZWRDb2xvciA9IGNvbG9yOwogICAgICAgICByZXR1cm47CiAgICAgfQorICAgIGlmICht
X3Byb3BlcnR5VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKKyAgICAgICAgcmVzdWx0cy0+bV9hbmlt
YXRlZFBhdGggPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlQW5pbWF0ZWQobV9mcm9tUGF0aC5nZXQo
KSwgbV90b1BhdGguZ2V0KCksIHBlcmNlbnRhZ2UpOworICAgICAgICByZXR1cm47CisgICAgfQog
ICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IHRoaXMtPmFuaW1hdGlvbk1vZGUoKTsK
ICAgICBBU1NFUlQoYW5pbWF0aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5pbWF0aW9u
TW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBhbmltYXRpb25Nb2RlID09IFZhbHVlc0FuaW1hdGlvbik7
CiAgICAgaWYgKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdl
ID4gMC41ZikgfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBwZXJjZW50YWdlID09
IDEuMGYpCkBAIC0xNTAsNiArMTU3LDE1IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1
bGF0ZUZyb21BbmQKICAgICAgICAgICAgIGlmIChhbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRp
b24gfHwgcGFyc2VOdW1iZXJWYWx1ZUFuZFVuaXQoZnJvbVN0cmluZywgbV9mcm9tTnVtYmVyLCBt
X251bWJlclVuaXQpKQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9Cisg
ICAgfSBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBQYXRoUHJvcGVydHkpIHsKKyAgICAgICAg
bV9mcm9tUGF0aC5jbGVhcigpOworICAgICAgICBtX3RvUGF0aC5jbGVhcigpOworICAgICAgICBt
X2Zyb21QYXRoID0gU1ZHUGF0aFNlZ0xpc3Q6OmNyZWF0ZShTVkdOYW1lczo6ZEF0dHIpOworICAg
ICAgICBpZiAocGF0aFNlZ0xpc3RGcm9tU1ZHRGF0YShtX2Zyb21QYXRoLmdldCgpLCBmcm9tU3Ry
aW5nKSkgeworICAgICAgICAgICAgbV90b1BhdGggPSBTVkdQYXRoU2VnTGlzdDo6Y3JlYXRlKFNW
R05hbWVzOjpkQXR0cik7CisgICAgICAgICAgICBpZiAocGF0aFNlZ0xpc3RGcm9tU1ZHRGF0YSht
X3RvUGF0aC5nZXQoKSwgdG9TdHJpbmcpKQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICB9CiAgICAgfQogICAgIG1fZnJvbVN0cmluZyA9IGZyb21TdHJpbmc7CiAgICAgbV90
b1N0cmluZyA9IHRvU3RyaW5nOwpAQCAtMTk0LDYgKzIxMCw5IEBAIHZvaWQgU1ZHQW5pbWF0ZUVs
ZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICAgICAgfQogICAgICAgICBpZiAocGFyc2VOdW1i
ZXJWYWx1ZUFuZFVuaXQoYmFzZVN0cmluZywgbV9hbmltYXRlZE51bWJlciwgbV9udW1iZXJVbml0
KSkKICAgICAgICAgICAgIHJldHVybjsKKyAgICB9IGVsc2UgaWYgKG1fcHJvcGVydHlUeXBlID09
IFBhdGhQcm9wZXJ0eSkgeworICAgICAgICBtX2FuaW1hdGVkUGF0aC5jbGVhcigpOworICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIG1fcHJvcGVydHlUeXBlID0gU3RyaW5nUHJvcGVydHk7CiB9
CkBAIC0yMDUsNyArMjI0LDIyIEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGEKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZENvbG9yLm5hbWUoKTsKICAg
ICBlbHNlIGlmIChtX3Byb3BlcnR5VHlwZSA9PSBOdW1iZXJQcm9wZXJ0eSkKICAgICAgICAgdmFs
dWVUb0FwcGx5ID0gU3RyaW5nOjpudW1iZXIobV9hbmltYXRlZE51bWJlcikgKyBtX251bWJlclVu
aXQ7Ci0gICAgZWxzZQorICAgIGVsc2UgaWYgKG1fcHJvcGVydHlUeXBlID09IFBhdGhQcm9wZXJ0
eSkgeworICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoIHx8ICFtX2FuaW1hdGVkUGF0aC0+bnVt
YmVyT2ZJdGVtcygpKQorICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmlu
ZzsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgZ29pbmcg
dG8gc3RyaW5nIGFuZCBiYWNrIGJlY2F1c2Ugd2UgYXJlIGN1cnJlbnRseSBvbmx5IGFibGUgdG8g
cGFpbnQKKyAgICAgICAgICAgIC8vICJwcm9jZXNzZWQiIHBhdGhzIHdoZXJlIGNvbXBsZXggc2hh
cGVzIGFyZSByZXBsYWNlZCB3aXRoIHNpbXBsZXIgb25lcy4gUGF0aCAKKyAgICAgICAgICAgIC8v
IG1vcnBoaW5nIG5lZWRzIHRvIGJlIGRvbmUgd2l0aCB1bnByb2Nlc3NlZCBwYXRocy4KKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvdWxkIGJlIG9wdGltaXplZCBpZiBwYXRocyB3ZXJlIG5v
dCBwcm9jZXNzZWQgYXQgcGFyc2UgdGltZS4KKyAgICAgICAgICAgIHVuc2lnbmVkIGl0ZW1Db3Vu
dCA9IG1fYW5pbWF0ZWRQYXRoLT5udW1iZXJPZkl0ZW1zKCk7CisgICAgICAgICAgICBFeGNlcHRp
b25Db2RlIGVjOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IGl0ZW1Db3Vu
dDsgKytuKSB7CisgICAgICAgICAgICAgICAgU1ZHUGF0aFNlZyogc2VnbWVudCA9IG1fYW5pbWF0
ZWRQYXRoLT5nZXRJdGVtKG4sIGVjKS5nZXQoKTsKKyAgICAgICAgICAgICAgICB2YWx1ZVRvQXBw
bHkuYXBwZW5kKHNlZ21lbnQtPnRvU3RyaW5nKCkgKyAiICIpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgfSBlbHNlCiAgICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5pbWF0ZWRTdHJp
bmc7CiAgICAgCiAgICAgc2V0VGFyZ2V0QXR0cmlidXRlQW5pbWF0ZWRWYWx1ZSh2YWx1ZVRvQXBw
bHkpOwpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5oCShyZXZpc2lvbiAzNDM1NikKKysrIFdl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5
LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRpb25FbGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICBjbGFzcyBTVkdQYXRoU2VnTGlzdDsKIAogICAgIGNsYXNzIFNWR0FuaW1hdGVF
bGVtZW50IDogcHVibGljIFNWR0FuaW1hdGlvbkVsZW1lbnQgewogICAgIHB1YmxpYzoKQEAgLTQ2
LDcgKzQ3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZyk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBlbnVtIFByb3BlcnR5VHlwZSB7IE51
bWJlclByb3BlcnR5LCBDb2xvclByb3BlcnR5LCBTdHJpbmdQcm9wZXJ0eSB9OworICAgICAgICBl
bnVtIFByb3BlcnR5VHlwZSB7IE51bWJlclByb3BlcnR5LCBDb2xvclByb3BlcnR5LCBTdHJpbmdQ
cm9wZXJ0eSwgUGF0aFByb3BlcnR5IH07CiAgICAgICAgIFByb3BlcnR5VHlwZSBkZXRlcm1pbmVQ
cm9wZXJ0eVR5cGUoY29uc3QgU3RyaW5nJiBhdHRyaWJ1dGUpIGNvbnN0OwogICAgICAgICBQcm9w
ZXJ0eVR5cGUgbV9wcm9wZXJ0eVR5cGU7CiAgICAgICAgIApAQCAtNjAsNiArNjEsOSBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX2Zyb21TdHJpbmc7CiAgICAgICAgIFN0
cmluZyBtX3RvU3RyaW5nOwogICAgICAgICBTdHJpbmcgbV9hbmltYXRlZFN0cmluZzsKKyAgICAg
ICAgUmVmUHRyPFNWR1BhdGhTZWdMaXN0PiBtX2Zyb21QYXRoOworICAgICAgICBSZWZQdHI8U1ZH
UGF0aFNlZ0xpc3Q+IG1fdG9QYXRoOworICAgICAgICBSZWZQdHI8U1ZHUGF0aFNlZ0xpc3Q+IG1f
YW5pbWF0ZWRQYXRoOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9T
VkdQYXRoU2VnTGlzdC5jcHAJKHJldmlzaW9uIDM0MzU2KQorKysgV2ViQ29yZS9zdmcvU1ZHUGF0
aFNlZ0xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw5ICsyOSwxNiBAQAogI2luY2x1ZGUg
IkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJQYXRoLmgiCiAjaW5jbHVkZSAiUGF0aFRyYXZlcnNh
bFN0YXRlLmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0FyYy5oIgorI2luY2x1ZGUgIlNWR1BhdGhT
ZWdDbG9zZVBhdGguaCIKICNpbmNsdWRlICJTVkdQYXRoU2VnTW92ZXRvLmgiCiAjaW5jbHVkZSAi
U1ZHUGF0aFNlZ0xpbmV0by5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFs
LmgiCisjaW5jbHVkZSAiU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsLmgiCiAjaW5jbHVkZSAiU1ZH
UGF0aFNlZ0N1cnZldG9DdWJpYy5oIgorI2luY2x1ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNT
bW9vdGguaCIKKyNpbmNsdWRlICJTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpYy5oIgorI2luY2x1
ZGUgIlNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljU21vb3RoLmgiCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIApAQCAtMTM0LDYgKzE0MSwxMjAgQEAgUGF0aCBTVkdQYXRoU2VnTGlzdDo6dG9QYXRo
RGF0YSgpCiAgICAgCiAgICAgcmV0dXJuIHBhdGhEYXRhOwogfQorICAgIAorc3RhdGljIGlubGlu
ZSBmbG9hdCBibGVuZEZ1bmMoZmxvYXQgZnJvbSwgZmxvYXQgdG8sIGZsb2F0IHByb2dyZXNzKQor
eworICAgIHJldHVybiAodG8gLSBmcm9tKSAqIHByb2dyZXNzICsgZnJvbTsKK30KKyAgICAKKyNk
ZWZpbmUgQkxFTkRQQVRIU0VHMShjbGFzcywgYXR0cjEpIFwKKyAgICBjbGFzczo6Y3JlYXRlKGJs
ZW5kRnVuYyhzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMSgpLCBzdGF0aWNfY2FzdDxj
bGFzcyo+KHRvKS0+YXR0cjEoKSwgcHJvZ3Jlc3MpKQorICAgIAorI2RlZmluZSBCTEVORFBBVEhT
RUcyKGNsYXNzLCBhdHRyMSwgYXR0cjIpIFwKKyAgICBjbGFzczo6Y3JlYXRlKGJsZW5kRnVuYyhz
dGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMSgpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRv
KS0+YXR0cjEoKSwgcHJvZ3Jlc3MpLCBcCisgICAgICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhz
dGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMigpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRv
KS0+YXR0cjIoKSwgcHJvZ3Jlc3MpKQorICAgIAorI2RlZmluZSBCTEVORFBBVEhTRUc0KGNsYXNz
LCBhdHRyMSwgYXR0cjIsIGF0dHIzLCBhdHRyNCkgXAorICAgIGNsYXNzOjpjcmVhdGUoYmxlbmRG
dW5jKHN0YXRpY19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHIxKCksIHN0YXRpY19jYXN0PGNsYXNz
Kj4odG8pLT5hdHRyMSgpLCBwcm9ncmVzcyksIFwKKyAgICAgICAgICAgICAgICBibGVuZEZ1bmMo
c3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjIoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0
byktPmF0dHIyKCksIHByb2dyZXNzKSwgXAorICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhzdGF0
aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMygpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+
YXR0cjMoKSwgcHJvZ3Jlc3MpLCBcCisgICAgICAgICAgICAgICAgYmxlbmRGdW5jKHN0YXRpY19j
YXN0PGNsYXNzKj4oZnJvbSktPmF0dHI0KCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5hdHRy
NCgpLCBwcm9ncmVzcykpCisgICAgCisjZGVmaW5lIEJMRU5EUEFUSFNFRzYoY2xhc3MsIGF0dHIx
LCBhdHRyMiwgYXR0cjMsIGF0dHI0LCBhdHRyNSwgYXR0cjYpIFwKKyAgICBjbGFzczo6Y3JlYXRl
KGJsZW5kRnVuYyhzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMSgpLCBzdGF0aWNfY2Fz
dDxjbGFzcyo+KHRvKS0+YXR0cjEoKSwgcHJvZ3Jlc3MpLCBcCisgICAgICAgICAgICAgICAgYmxl
bmRGdW5jKHN0YXRpY19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHIyKCksIHN0YXRpY19jYXN0PGNs
YXNzKj4odG8pLT5hdHRyMigpLCBwcm9ncmVzcyksIFwKKyAgICAgICAgICAgICAgICBibGVuZEZ1
bmMoc3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjMoKSwgc3RhdGljX2Nhc3Q8Y2xhc3Mq
Pih0byktPmF0dHIzKCksIHByb2dyZXNzKSwgXAorICAgICAgICAgICAgICAgIGJsZW5kRnVuYyhz
dGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyNCgpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRv
KS0+YXR0cjQoKSwgcHJvZ3Jlc3MpLCBcCisgICAgICAgICAgICAgICAgYmxlbmRGdW5jKHN0YXRp
Y19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHI1KCksIHN0YXRpY19jYXN0PGNsYXNzKj4odG8pLT5h
dHRyNSgpLCBwcm9ncmVzcyksIFwKKyAgICAgICAgICAgICAgICBibGVuZEZ1bmMoc3RhdGljX2Nh
c3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjYoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0byktPmF0dHI2
KCksIHByb2dyZXNzKSkKKworI2RlZmluZSBCTEVORFBBVEhTRUc3KGNsYXNzLCBhdHRyMSwgYXR0
cjIsIGF0dHIzLCBhdHRyNCwgYXR0cjUsIGJvb2wxLCBib29sMikgXAorICAgIGNsYXNzOjpjcmVh
dGUoYmxlbmRGdW5jKHN0YXRpY19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHIxKCksIHN0YXRpY19j
YXN0PGNsYXNzKj4odG8pLT5hdHRyMSgpLCBwcm9ncmVzcyksIFwKKyAgICAgICAgICAgICAgICBi
bGVuZEZ1bmMoc3RhdGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjIoKSwgc3RhdGljX2Nhc3Q8
Y2xhc3MqPih0byktPmF0dHIyKCksIHByb2dyZXNzKSwgXAorICAgICAgICAgICAgICAgIGJsZW5k
RnVuYyhzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5hdHRyMygpLCBzdGF0aWNfY2FzdDxjbGFz
cyo+KHRvKS0+YXR0cjMoKSwgcHJvZ3Jlc3MpLCBcCisgICAgICAgICAgICAgICAgYmxlbmRGdW5j
KHN0YXRpY19jYXN0PGNsYXNzKj4oZnJvbSktPmF0dHI0KCksIHN0YXRpY19jYXN0PGNsYXNzKj4o
dG8pLT5hdHRyNCgpLCBwcm9ncmVzcyksIFwKKyAgICAgICAgICAgICAgICBibGVuZEZ1bmMoc3Rh
dGljX2Nhc3Q8Y2xhc3MqPihmcm9tKS0+YXR0cjUoKSwgc3RhdGljX2Nhc3Q8Y2xhc3MqPih0bykt
PmF0dHI1KCksIHByb2dyZXNzKSwgXAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGJvb2w+
KGJsZW5kRnVuYyhzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5ib29sMSgpLCBzdGF0aWNfY2Fz
dDxjbGFzcyo+KHRvKS0+Ym9vbDEoKSwgcHJvZ3Jlc3MpKSwgXAorICAgICAgICAgICAgICAgIHN0
YXRpY19jYXN0PGJvb2w+KGJsZW5kRnVuYyhzdGF0aWNfY2FzdDxjbGFzcyo+KGZyb20pLT5ib29s
MigpLCBzdGF0aWNfY2FzdDxjbGFzcyo+KHRvKS0+Ym9vbDIoKSwgcHJvZ3Jlc3MpKSkKKworUGFz
c1JlZlB0cjxTVkdQYXRoU2VnTGlzdD4gU1ZHUGF0aFNlZ0xpc3Q6OmNyZWF0ZUFuaW1hdGVkKGNv
bnN0IFNWR1BhdGhTZWdMaXN0KiBmcm9tTGlzdCwgY29uc3QgU1ZHUGF0aFNlZ0xpc3QqIHRvTGlz
dCwgZmxvYXQgcHJvZ3Jlc3MpCit7CisgICAgdW5zaWduZWQgaXRlbUNvdW50ID0gZnJvbUxpc3Qt
Pm51bWJlck9mSXRlbXMoKTsKKyAgICBpZiAoIWl0ZW1Db3VudCB8fCBpdGVtQ291bnQgIT0gdG9M
aXN0LT5udW1iZXJPZkl0ZW1zKCkpCisgICAgICAgIHJldHVybiAwOworICAgIFJlZlB0cjxTVkdQ
YXRoU2VnTGlzdD4gcmVzdWx0ID0gY3JlYXRlKGZyb21MaXN0LT5hc3NvY2lhdGVkQXR0cmlidXRl
TmFtZSgpKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIGZvciAodW5zaWduZWQgbiA9IDA7
IG4gPCBpdGVtQ291bnQ7ICsrbikgeworICAgICAgICBTVkdQYXRoU2VnKiBmcm9tID0gZnJvbUxp
c3QtPmdldEl0ZW0obiwgZWMpLmdldCgpOworICAgICAgICBTVkdQYXRoU2VnKiB0byA9IHRvTGlz
dC0+Z2V0SXRlbShuLCBlYykuZ2V0KCk7CisgICAgICAgIGlmIChmcm9tLT5wYXRoU2VnVHlwZSgp
ID09IFNWR1BhdGhTZWc6OlBBVEhTRUdfVU5LTk9XTiB8fCBmcm9tLT5wYXRoU2VnVHlwZSgpICE9
IHRvLT5wYXRoU2VnVHlwZSgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIFJlZlB0
cjxTVkdQYXRoU2VnPiBzZWdtZW50ID0gMDsKKyAgICAgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxT
VkdQYXRoU2VnOjpTVkdQYXRoU2VnVHlwZT4oZnJvbS0+cGF0aFNlZ1R5cGUoKSkpIHsKKyAgICAg
ICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NMT1NFUEFUSDoKKyAgICAgICAgICAgIHNlZ21l
bnQgPSBTVkdQYXRoU2VnQ2xvc2VQYXRoOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTOgor
ICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzEoU1ZHUGF0aFNlZ0xpbmV0b0hvcml6
b250YWxBYnMsIHgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUw6CisgICAgICAgICAgICBzZWdtZW50ID0g
QkxFTkRQQVRIU0VHMShTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCwgeCk7CisgICAgICAg
ICAgICBicmVhazsgICAKKyAgICAgICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0xJTkVUT19W
RVJUSUNBTF9BQlM6CisgICAgICAgICAgICBzZWdtZW50ID0gQkxFTkRQQVRIU0VHMShTVkdQYXRo
U2VnTGluZXRvVmVydGljYWxBYnMsIHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19MSU5FVE9fVkVSVElDQUxfUkVMOgorICAgICAgICAgICAg
c2VnbWVudCA9IEJMRU5EUEFUSFNFRzEoU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsLCB5KTsK
KyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgCisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFU
SFNFR19NT1ZFVE9fQUJTOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZH
UGF0aFNlZ01vdmV0b0FicywgeCwgeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBTVkdQYXRoU2VnOjpQQVRIU0VHX01PVkVUT19SRUw6CisgICAgICAgICAgICBzZWdtZW50ID0g
QkxFTkRQQVRIU0VHMihTVkdQYXRoU2VnTW92ZXRvUmVsLCB4LCB5KTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfTElORVRPX0FCUzoKKyAgICAg
ICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUcyKFNWR1BhdGhTZWdMaW5ldG9BYnMsIHgsIHkp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19M
SU5FVE9fUkVMOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNl
Z0xpbmV0b1JlbCwgeCwgeSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVkdQ
YXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfQUJTOgorICAgICAgICAgICAgc2VnbWVudCA9
IEJMRU5EUEFUSFNFRzYoU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY0FicywgeCwgeSwgeDEsIHkxLCB4
MiwgeTIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFU
SFNFR19DVVJWRVRPX0NVQklDX1JFTDoKKyAgICAgICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhT
RUc2KFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNSZWwsIHgsIHksIHgxLCB5MSwgeDIsIHkyKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVU
T19DVUJJQ19TTU9PVEhfQUJTOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzQo
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicywgeCwgeSwgeDIsIHkyKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19DVUJJ
Q19TTU9PVEhfUkVMOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0
aFNlZ0N1cnZldG9DdWJpY1Ntb290aFJlbCwgeCwgeSwgeDIsIHkyKTsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICBjYXNlIFNWR1BhdGhTZWc6OlBBVEhTRUdfQ1VSVkVUT19RVUFEUkFUSUNf
QUJTOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzQoU1ZHUGF0aFNlZ0N1cnZl
dG9RdWFkcmF0aWNBYnMsIHgsIHksIHgxLCB5MSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgY2FzZSBTVkdQYXRoU2VnOjpQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTDoKKyAgICAg
ICAgICAgIHNlZ21lbnQgPSBCTEVORFBBVEhTRUc0KFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGlj
UmVsLCB4LCB5LCB4MSwgeTEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZH
UGF0aFNlZzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTOgorICAgICAgICAg
ICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9v
dGhBYnMsIHgsIHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNl
Zzo6UEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMOgorICAgICAgICAgICAgc2Vn
bWVudCA9IEJMRU5EUEFUSFNFRzIoU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhSZWws
IHgsIHkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFU
SFNFR19BUkNfQUJTOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzcoU1ZHUGF0
aFNlZ0FyY0FicywgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcp
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19B
UkNfUkVMOgorICAgICAgICAgICAgc2VnbWVudCA9IEJMRU5EUEFUSFNFRzcoU1ZHUGF0aFNlZ0Fy
Y1JlbCwgeCwgeSwgcjEsIHIyLCBhbmdsZSwgbGFyZ2VBcmNGbGFnLCBzd2VlcEZsYWcpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1ZHUGF0aFNlZzo6UEFUSFNFR19VTktOT1dO
OgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAg
cmVzdWx0LT5hcHBlbmRJdGVtKHNlZ21lbnQsIGVjKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3Vs
dC5yZWxlYXNlKCk7Cit9CiAKIH0KIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHUGF0aFNlZ0xpc3Qu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdQYXRoU2VnTGlzdC5oCShyZXZpc2lvbiAz
NDM1NikKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdGhTZWdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDYgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB1bnNpZ25lZCBnZXRQ
YXRoU2VnQXRMZW5ndGgoZG91YmxlKTsKICAgICAgICAgUGF0aCB0b1BhdGhEYXRhKCk7CiAgICAg
ICAgIAorICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXRoU2VnTGlzdD4gY3JlYXRlQW5p
bWF0ZWQoY29uc3QgU1ZHUGF0aFNlZ0xpc3QqIGZyb21MaXN0LCBjb25zdCBTVkdQYXRoU2VnTGlz
dCogdG9MaXN0LCBmbG9hdCBwcm9ncmVzcyk7CisgICAgICAgIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIFNWR1BhdGhTZWdMaXN0KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKICAgICB9OwpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzQzNTYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNCBAQAorMjAwOC0wNi0wMyAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAg
IAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkzODQK
KyAgICAgICAgCisgICAgICAgIFRlc3QgZm9yIHBhdGggbW9ycGhpbmcuCisKKyAgICAgICAgKiBw
bGF0Zm9ybS9tYWMvc3ZnL2N1c3RvbS9hbmltYXRlLXBhdGgtbW9ycGhpbmctZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvY3VzdG9tL2FuaW1hdGUtcGF0aC1tb3JwaGluZy5zdmc6
IEFkZGVkLgorCiAyMDA4LTA2LTAzICBKdXN0aW4gR2FyY2lhICA8anVzdGluLmdhcmNpYUBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSm9obi4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9zdmcvY3VzdG9tL2FuaW1hdGUtcGF0aC1tb3JwaGluZy1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9jdXN0b20vYW5pbWF0
ZS1wYXRoLW1vcnBoaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9zdmcvY3VzdG9tL2FuaW1hdGUtcGF0aC1tb3JwaGluZy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAoOC42Nyw5KSBzaXplIDE0OS4z
MXgxODMuMTgKKyAgICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoOC42Nyw5KSBzaXplIDE0OS4zMXgx
ODMuMTggW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jRkYwMDAwXSBbc3Ryb2tlIHdpZHRo
PTIuMDBdfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9I0ZGRkZGRl19XSBbZGF0YT0iTTE0
MC4wMCw0MC4wMCBMMTAwLjAwLDQwLjAwIEwxMDAuMDAsMTAuMDAgQzEwLjAwLDEwLjAwLDEwLjAw
LDkwLjAwLDEwMC4wMCw5MC4wMCBMMTAwLjAwLDYwLjAwIEwxNDAuMDAsNjAuMDAgTTUwLjAwLDE0
MC4wMCBDMTgwLjAwLDcwLjAwLDE4MC4wMCwxOTUuMDAsMTAwLjAwLDE5MC4wMCJdCkluZGV4OiBM
YXlvdXRUZXN0cy9zdmcvY3VzdG9tL2FuaW1hdGUtcGF0aC1tb3JwaGluZy5zdmcKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRlLXBhdGgtbW9ycGhpbmcuc3ZnCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2N1c3RvbS9hbmltYXRlLXBhdGgtbW9ycGhp
bmcuc3ZnCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAi
IHN0YW5kYWxvbmU9Im5vIj8+Cis8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZH
IDEuMS8vRU4iIAorImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzEx
LmR0ZCI+CisKKzxzdmcgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgdmVyc2lvbj0iMS4xIgor
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKzxzY3JpcHQgdHlwZT0idGV4dC9l
Y21hc2NyaXB0Ij4gPCFbQ0RBVEFbCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7
CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgIHNldFRpbWVv
dXQoImxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKSIsIDEwMDApOworfQorXV0+IDwv
c2NyaXB0PgorPHBhdGggZD0iTTQwLDE0MCBMNDAsMTAwIDEwLDEwMCBDMTAsMTAgOTAsMTAgOTAs
MTAwIEw2MCwxMDAgNjAsMTQwIE0xNDAsNTAgQzcwLDE4MCAxOTUsMTgwIDE5MCwxMDAgIiBzdHls
ZT0iZmlsbDp3aGl0ZTtzdHJva2U6cmVkO3N0cm9rZS13aWR0aDoyIj4KKyAgICA8YW5pbWF0ZSBh
dHRyaWJ1dGVOYW1lPSJkIiB2YWx1ZXM9Ik00MCwxNDAgTDQwLDEwMCAxMCwxMDAgQzEwLDEwIDkw
LDEwIDkwLDEwMCBMNjAsMTAwIDYwLDE0MCBNMTQwLDUwIEM3MCwxODAgMTk1LDE4MCAxOTAsMTAw
CisgICAgICAgIDtNMTQwLDQwIEwxMDAsNDAgMTAwLDEwIEMxMCwxMCAxMCw5MCAxMDAsOTAgTDEw
MCw2MCAxNDAsNjAgTTUwLDE0MCBDMTgwLDcwIDE4MCwxOTUgMTAwLDE5MDsiIGR1cj0iMC41IiBm
aWxsPSJmcmVlemUiLz4KKzwvcGF0aD4KKzwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUK
</data>
<flag name="review"
          id="9407"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>