<?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>63789</bug_id>
          
          <creation_ts>2011-07-01 00:37:08 -0700</creation_ts>
          <short_desc>SVGAnimatedType should support SVGAnimatedInteger animation</short_desc>
          <delta_ts>2011-07-01 01:38:11 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>431027</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-01 00:37:08 -0700</bug_when>
    <thetext>SVGAnimatedType should support SVGAnimatedInteger animation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431038</commentid>
    <comment_count>1</comment_count>
      <attachid>99441</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-01 00:51:33 -0700</bug_when>
    <thetext>Created attachment 99441
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431050</commentid>
    <comment_count>2</comment_count>
      <attachid>99444</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-01 01:17:47 -0700</bug_when>
    <thetext>Created attachment 99444
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431052</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 01:20:14 -0700</bug_when>
    <thetext>Attachment 99444 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedInteger.h:55:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:55:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:56:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:56:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:58:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:58:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.h:58:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:44:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:44:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:55:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:55:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:69:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:69:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedInteger.cpp:69:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431055</commentid>
    <comment_count>4</comment_count>
      <attachid>99441</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-01 01:25:30 -0700</bug_when>
    <thetext>Comment on attachment 99441
Patch

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

Looks good to me.

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:40
&gt; +    bool ok;
&gt; +    animtedType-&gt;integer() = string.toIntStrict(&amp;ok);

Hm, we have to revisit error handling from methods like constructFromSTring at some point.

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:84
&gt; +    animatedInt = roundf(result);

Don&apos;t you have to cast to int, as the return value is a float here?
Do any of the specs (svg/smil) say sth. about rounding? whether round/ceil or floor is desired?

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:90
&gt; +    int from = fromString.toIntStrict();

Oh, toIntStrict does not _need_ a bool&amp; ok param... so why don&apos;t you leave it out in constructFromString?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431057</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-01 01:32:43 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 99441 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=99441&amp;action=review
&gt; 
&gt; Looks good to me.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:40
&gt; &gt; +    bool ok;
&gt; &gt; +    animtedType-&gt;integer() = string.toIntStrict(&amp;ok);
&gt; 
&gt; Hm, we have to revisit error handling from methods like constructFromSTring at some point.
I definitely plan it for the future.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:84
&gt; &gt; +    animatedInt = roundf(result);
Can add it. It compiles right now
&gt; 
&gt; Don&apos;t you have to cast to int, as the return value is a float here?
&gt; Do any of the specs (svg/smil) say sth. about rounding? whether round/ceil or floor is desired?
That&apos;s the problem. There is no description about that, we could use discrete animation here, but rounding to the nearest value makes more sense (is more useful for the webdeveloper) IMHO.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:90
&gt; &gt; +    int from = fromString.toIntStrict();
&gt; 
&gt; Oh, toIntStrict does not _need_ a bool&amp; ok param... so why don&apos;t you leave it out in constructFromString?
No it doesn&apos;t need it, it was a preparation for the error handling in the future. I&apos;ll remove it for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431058</commentid>
    <comment_count>6</comment_count>
      <attachid>99444</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-07-01 01:35:08 -0700</bug_when>
    <thetext>Comment on attachment 99444
Patch

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

r=me.

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:40
&gt; +    bool ok;
&gt; +    animtedType-&gt;integer() = string.toIntStrict(&amp;ok);

Remove the ok.

&gt; Source/WebCore/svg/SVGAnimatedInteger.cpp:84
&gt; +    animatedInt = roundf(result);

static_cast&lt;int&gt;(..)

&gt; LayoutTests/svg/animations/script-tests/svginteger-animation-1.js:39
&gt; +	shouldBe(&quot;feConvolveMatrix.targetX.animVal&quot;, &quot;0&quot;);

would be great if you could add the commented out baseVal statement, so I have an easier job later:
// shouldBe(&quot;feConvolveMatrix.targetX.baseVal&quot;, &quot;0&quot;)
...

&gt; LayoutTests/svg/animations/script-tests/svginteger-animation-1.js:43
&gt; +	shouldBe(&quot;feConvolveMatrix.targetX.animVal&quot;, &quot;1&quot;);

Ditto.

&gt; LayoutTests/svg/animations/script-tests/svginteger-animation-1.js:47
&gt; +	shouldBe(&quot;feConvolveMatrix.targetX.animVal&quot;, &quot;2&quot;);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431060</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-07-01 01:38:11 -0700</bug_when>
    <thetext>Committed r90218: &lt;http://trac.webkit.org/changeset/90218&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99441</attachid>
            <date>2011-07-01 00:51:33 -0700</date>
            <delta_ts>2011-07-01 01:25:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63789-20110701095131.patch</filename>
            <type>text/plain</type>
            <size>27695</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMjEzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDctMDEgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1cHBvcnQgU1ZHQW5pbWF0
ZWRJbnRlZ2VyIGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjM3ODkKKyAgICAgICAgCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5p
bWF0aW9uIHNob3VsZCB1c2UgZGlyZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhp
cyBwYXRjaCBjb250aW51ZXMgdGhlIGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNW
R0FuaW1hdG9yRmFjdG9yeSB3aXRoIFNWR0FuaW1hdGVkSW50ZWdlci4KKyAgICAgICAgCisgICAg
ICAgIFNWR0FuaW1hdGVkSW50ZWdlciBpcyB1c2VkIGZvciBzb21lIGF0dHJpYnV0ZXMgb2YgU1ZH
IGZpbHRlciBlZmZlY3RzLiBUaGUgYW5pbWF0aW9uIG9mIHRob3NlIGF0dHJpYnV0ZXMgd29yayBh
ZnRlciB0aGlzIHBhdGNoLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRpb25zL3N2Z2ludGVn
ZXItYW5pbWF0aW9uLTEuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIGZp
bGUgdG8gYnVpbGQgc3lzdGVtLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmNwcDogTWFrZSB1c2Ugb2YgQW5pbWF0ZWRJbnRlZ2VyLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlci5jcHA6IEFkZGVkLiBUaGUgbmV3IGFuaW1hdG9yIGZvciBTVkdBbmltYXRl
ZEludGVnZXIuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6
U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRl
Z2VyQW5pbWF0b3I6On5TVkdBbmltYXRlZEludGVnZXJBbmltYXRvcik6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHA6IEFkZGVkIGhhbmRsZXIgZm9yIEFuaW1hdGVkSW50ZWdlci4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFR5cGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisKIDIwMTEtMDYtMzAgIEV1Z2Vu
ZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTAx
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTY1OCw2ICsxNjU4LDcgQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9TVkdBbmltYXRl
ZEFuZ2xlLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKKyAgICAgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5j
cHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogICAgICAgICBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkwMTE5KQorKysgU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQzNSw2
ICszNDM1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRDb2xvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9y
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggXAorCVNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDkwMTE5KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzE4LDYgKzU3MTgsNyBAQAogICAg
ICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NW
R0FuaW1hdGVkQm9vbGVhbi5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZENvbG9y
LmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAnLAogICAgICAg
ICAgICAgJ3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWROdW1i
ZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDExOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMzLDYgKzMzMzMsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkQW5nbGUuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5j
cHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgXAorICAgICAgICAg
ICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdB
bmltYXRlZExlbmd0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gOTAxMTkpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsNiArMTAxMiw3IEBACiAJCTQz
QjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMzNjcxM0IyNjFCMTAw
NDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi87IH07CiAJCTQzQjkzMzZBMTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I5MzM2ODEzQjI2MUIxMDA0NTg0QkYgLyog
U1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovOyB9OwogCQk0M0MwOTJCQzEyRDlFNEVFMDBBOTg5
QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMDkyQkExMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaCAqLzsgfTsKKwkJNDNGNkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNW
R0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCAqLzsgfTsKIAkJNDQxNTI5MkUwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0MTUyOTJDMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQxNTI5MkYw
RTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkQwRTFBRThBMDAwQzRB
MkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwICovOyB9OwogCQk0NDFCMDU1QzBDRDc3
QTJEMDA3QzFGMTggLyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjlBQUZC
MENCODRFODgwMDc2NDdDNSAvKiBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwpA
QCAtNzUwNSw2ICs3NTA2LDcgQEAKIAkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDNDMDkyQjkxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQzA5MkJBMTJEOUU0RUUwMEE5
ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDNGNkZEOTUxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEludGVn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBD
NEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ0MTUyOTJEMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI5QUFGQjBD
Qjg0RTg4MDA3NjQ3QzUgLyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMCw2ICsxNzQwMiw3IEBACiAJCQkJNDNB
NjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLywKIAkJCQkwOEQ0
NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovLAogCQkJ
CUIyMjI3N0U4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmlkbCAq
LywKKwkJCQk0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNw
cCAqLywKIAkJCQkwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmggKi8sCiAJCQkJQjIyMjc3RTkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkSW50ZWdl
ci5pZGwgKi8sCiAJCQkJNDM4MTc2M0ExM0E2OTdENDAwN0QxMTg3IC8qIFNWR0FuaW1hdGVkTGVu
Z3RoLmNwcCAqLywKQEAgLTI1ODQzLDYgKzI1ODQ2LDcgQEAKIAkJCQk0MzFBMkZENzEzQjc3MDdB
MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8qIFNW
R0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0M0Y2RkQ5NjEzQkNEMEIx
MDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA5MDExOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZEJvb2xlYW4uY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQ29sb3IuY3BwIgorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkSW50ZWdlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDEyIEBAIEFuaW1hdGVk
QXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVk
U3RyaW5nOwogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVk
Q29sb3I7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIHJldHVybiBBbmltYXRl
ZEludGVnZXI7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgcmV0dXJuIEFuaW1h
dGVkTGVuZ3RoOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgogICAgICAgICByZXR1cm4g
QW5pbWF0ZWRMZW5ndGhMaXN0OwotICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAgIGNhc2Ug
QW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIHJldHVybiBBbmltYXRlZE51bWJlcjsKICAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyTGlzdDoKQEAgLTE2Niw2ICsxNjcsNyBAQCB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNh
c2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGhMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CkBAIC0yMzYsNiArMjM4LDcg
QEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIGNhc2UgQW5p
bWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgpAQCAtMjY3LDYgKzI3MCw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmQKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKQEAgLTI5Nyw2ICszMDEsNyBAQCB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNh
c2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGhMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CkBAIC0zMjYsNiArMzMxLDcg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQogICAgIGNhc2UgQW5p
bWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgpAQCAtMzU1LDYgKzM2MSw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVE
aXN0YW4KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlci5oIgorCisjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZH
QW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRJbnRlZ2VyLCBhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKK3sKK30KKworUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFu
aW10ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyKG5ldyBpbnQpOworICAg
IGJvb2wgb2s7CisgICAgYW5pbXRlZFR5cGUtPmludGVnZXIoKSA9IHN0cmluZy50b0ludFN0cmlj
dCgmb2spOworICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU1ZH
QW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNT
RVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwor
ICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
QW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1l
bnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Cisg
ICAgCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250
ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5p
bWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxl
bWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJt
aW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKKyAgICAKKyAgICBm
cm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVj
dEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIAorICAgIHRvLT5pbnRlZ2VyKCkgKz0gZnJvbS0+
aW50ZWdlcigpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworCisgICAgU1ZH
QW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRl
RWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7ICAgIAorICAgIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKworICAgIC8v
IFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIgcHJpb3JpdHkg
YW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KKyAgICBpbnQmIGFuaW1hdGVkSW50ID0gYW5p
bWF0ZWQtPmludGVnZXIoKTsKKyAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikK
KyAgICAgICAgZnJvbS0+aW50ZWdlcigpID0gYW5pbWF0ZWRJbnQ7CisgICAgCisgICAgZmxvYXQg
cmVzdWx0ID0gYW5pbWF0ZWRJbnQ7CisgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0
Q291bnQsIHJlc3VsdCwgZnJvbS0+aW50ZWdlcigpLCB0by0+aW50ZWdlcigpKTsKKyAgICBhbmlt
YXRlZEludCA9IHJvdW5kZihyZXN1bHQpOworfQorCitmbG9hdCBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAg
ICBpbnQgZnJvbSA9IGZyb21TdHJpbmcudG9JbnRTdHJpY3QoKTsKKyAgICBpbnQgdG8gPSB0b1N0
cmluZy50b0ludFN0cmljdCgpOworICAgIHJldHVybiBhYnModG8gLSBmcm9tKTsKK30KKyAgICAK
K30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTAxMTkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUHJvcGVydHlNYWNyb3MuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArMzksMjcgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQQogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxU
SVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlm
aWVyLCBTVkdBbmltYXRlZEludGVnZXIsIGxvbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKKyNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CisKK2NsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOworICAgIHZpcnR1YWwg
flNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKCkgeyB9CisgICAgCisgICAgc3RhdGljIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCYgYW5pbWF0ZWROdW1iZXIsIGZsb2F0
IGZyb21OdW1iZXIsIGZsb2F0IHRvTnVtYmVyKTsKKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKK307CisjZW5kaWYgLy8gRU5BQkxFKFNWR19BTklN
QVRJT04pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTAx
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOSBAQCBTVkdBbmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUo
KQogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5jb2xvcjsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIGRlbGV0
ZSBtX2RhdGEuaW50ZWdlcjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5sZW5ndGg7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE0
LDYgKzExNywxNCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUCiAg
ICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIoaW50KiBpbnRlZ2VyKQor
eworICAgIEFTU0VSVChpbnRlZ2VyKTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmlt
YXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkSW50ZWdlcikp
OworICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXIgPSBpbnRlZ2VyOworICAgIHJldHVy
biBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0yMTIsNiArMjIzLDEyIEBAIENvbG9yJiBTVkdBbmltYXRl
ZFR5cGU6OmNvbG9yKCkKICAgICByZXR1cm4gKm1fZGF0YS5jb2xvcjsKIH0KIAoraW50JiBTVkdB
bmltYXRlZFR5cGU6OmludGVnZXIoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJ
bnRlZ2VyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyOworfQorCiBTVkdMZW5ndGgmIFNW
R0FuaW1hdGVkVHlwZTo6bGVuZ3RoKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVk
TGVuZ3RoKTsKQEAgLTI4NCw2ICszMDEsOSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1
ZUFzU3RyaW5nKCkKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgICAgIEFTU0VSVChtX2Rh
dGEuY29sb3IpOwogICAgICAgICByZXR1cm4gbV9kYXRhLmNvbG9yLT5zZXJpYWxpemVkKCk7Cisg
ICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIEFTU0VSVChtX2RhdGEuaW50ZWdlcik7
CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigqbV9kYXRhLmludGVnZXIpOwogICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuIG1fZGF0YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTM0MSw2ICszNjEs
MTQgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBB
U1NFUlQobV9kYXRhLmNvbG9yKTsKICAgICAgICAgKm1fZGF0YS5jb2xvciA9IHZhbHVlLmlzRW1w
dHkoKSA/IENvbG9yKCkgOiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcodmFsdWUp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjogeworICAgICAgICBB
U1NFUlQobV9kYXRhLmludGVnZXIpOworICAgICAgICBib29sIG9rOworICAgICAgICAqbV9kYXRh
LmludGVnZXIgPSB2YWx1ZS50b0ludFN0cmljdCgmb2spOworICAgICAgICBpZiAoIW9rKQorICAg
ICAgICAgICAgZWMgPSAxOyAvLyBBcmJpdGFyeSB2YWx1ZSA+IDAsIGl0IGRvZXNuJ3QgbWF0dGVy
IGFzIHdlIGRvbid0IHJlcG9ydCB0aGUgZXhjZXB0aW9uIGNvZGUuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICBBU1NFUlQobV9kYXRhLmxl
bmd0aCk7CiAgICAgICAgIG1fZGF0YS5sZW5ndGgtPnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIFNW
R0xlbmd0aDo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSwg
ZWMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTAx
MTkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlQW5nbGUoU1ZHQW5nbGUqKTsKICAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oYm9vbCopOwogICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3IoQ29sb3IqKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUludGVnZXIoaW50Kik7CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGhMaXN0
KFNWR0xlbmd0aExpc3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNyZWF0ZU51bWJlcihmbG9hdCopOwpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgU1ZH
QW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigpOwogICAgIENvbG9yJiBjb2xvcigp
OworICAgIGludCYgaW50ZWdlcigpOwogICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCk7CiAgICAgU1ZH
TGVuZ3RoTGlzdCYgbGVuZ3RoTGlzdCgpOwogICAgIGZsb2F0JiBudW1iZXIoKTsKQEAgLTkwLDYg
KzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU1ZHQW5nbGUqIGFuZ2xlOwogICAgICAgICBib29s
KiBib29sZWFuOwogICAgICAgICBDb2xvciogY29sb3I7CisgICAgICAgIGludCogaW50ZWdlcjsK
ICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAgIFNWR0xlbmd0aExpc3QqIGxlbmd0
aExpc3Q7CiAgICAgICAgIGZsb2F0KiBudW1iZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0b3JGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdG9yRmFjdG9yeS5oCShyZXZpc2lvbiA5MDExOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xl
YW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgpA
QCAtNTMsMTEgKzU0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKGFuaW1h
dGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBB
bmltYXRlZExlbmd0aExpc3Q6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KSk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOiAvLyBJbnRlZ2VyIGlzIGFuaW1hdGVk
IGFzIE51bWJlciByaWdodCBub3cuCiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZE51
bWJlckxpc3Q6CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDIxMykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTA3LTAxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlIHNob3VsZCBzdXBwb3J0IFNWR0FuaW1h
dGVkSW50ZWdlciBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYzNzg5CisgICAgICAgIAorICAgICAgICBUZXN0IGFuaW1hdGlvbiBvZiBT
VkdBbmltYXRlZEludGVnZXIuIEFkZGVkIHRoZSB0ZXN0IHRvIHRoZSB3azIgc2tpcCBsaXN0Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChzYW1wbGUzKToK
KyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdpbnRl
Z2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0wMSAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBN
b3JlIHRlc3QgZXhwZWN0YXRpb24gdXBkYXRlIGZvciByOTAwODkKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy13azIvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMtd2syL1NraXBwZWQJKHJldmlzaW9uIDkwMTE5KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjLXdrMi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNiArNDU1LDcgQEAg
c3ZnL2FuaW1hdGlvbnMvc3ZnYW5nbGUtYW5pbWF0aW9uLWdyYWQtdAogc3ZnL2FuaW1hdGlvbnMv
c3ZnYW5nbGUtYW5pbWF0aW9uLXJhZC10by1kZWcuaHRtbAogc3ZnL2FuaW1hdGlvbnMvc3ZnYW5n
bGUtYW5pbWF0aW9uLXJhZC10by1ncmFkLmh0bWwKIHN2Zy9hbmltYXRpb25zL3N2Z2Jvb2xlYW4t
YW5pbWF0aW9uLTEuaHRtbAorc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS5o
dG1sCiBzdmcvYW5pbWF0aW9ucy9zdmdsZW5ndGgtYW5pbWF0aW9uLUxlbmd0aE1vZGVIZWlnaHQu
aHRtbAogc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWFuaW1hdGlvbi1MZW5ndGhNb2RlT3RoZXIu
aHRtbAogc3ZnL2FuaW1hdGlvbnMvc3ZnbGVuZ3RoLWFuaW1hdGlvbi1MZW5ndGhNb2RlV2lkdGgu
aHRtbApJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRp
b24tMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlv
bnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorU1ZHIDEuMSBkeW5hbWljIGFuaW1h
dGlvbiB0ZXN0cworCitUZXN0IGFuaW1hdGlvbiBvZiBTVkdJbnRlZ2VyLgorCitPbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCisKKworUEFTUyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZh
bCBpcyAwCitQQVNTIGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIGlzIDEKK1BBU1Mg
ZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwgaXMgMgorUEFTUyBmZUNvbnZvbHZlTWF0
cml4LnRhcmdldFguYW5pbVZhbCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3Zn
aW50ZWdlci1hbmltYXRpb24tMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9h
bmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
aHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2Uu
anMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1h
dGlvbiB0ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlv
bi0xLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRl
Z2VyLWFuaW1hdGlvbi0xLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc2NyaXB0LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuanMJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGFuaW1hdGlvbiBvZiBTVkdJbnRl
Z2VyLiIpOworY3JlYXRlU1ZHVGVzdENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAor
dmFyIGRlZnMgPSBjcmVhdGVTVkdFbGVtZW50KCJkZWZzIik7Cityb290U1ZHRWxlbWVudC5hcHBl
bmRDaGlsZChkZWZzKTsKKwordmFyIGZpbHRlciA9IGNyZWF0ZVNWR0VsZW1lbnQoImZpbHRlciIp
OworZmlsdGVyLnNldEF0dHJpYnV0ZSgiaWQiLCAiZmlsdGVyIik7CitkZWZzLmFwcGVuZENoaWxk
KGZpbHRlcik7CisKK3ZhciByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgicmVjdCIpOworcmVjdC5z
ZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIy
MDAiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMjAwIik7CityZWN0LnNldEF0dHJp
YnV0ZSgiZmlsbCIsICJncmVlbiIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbHRlciIsICJ1cmwo
I2ZpbHRlcikiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgImV4ZWN1dGVUZXN0KCki
KTsKK3Jvb3RTVkdFbGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOworCit2YXIgZmVDb252b2x2ZU1h
dHJpeCA9IGNyZWF0ZVNWR0VsZW1lbnQoImZlQ29udm9sdmVNYXRyaXgiKTsKK2ZlQ29udm9sdmVN
YXRyaXguc2V0QXR0cmlidXRlKCJpZCIsICJmZUNvbnZsdmVNYXRyaXgiKTsKK2ZlQ29udm9sdmVN
YXRyaXguc2V0QXR0cmlidXRlKCJvcmRlciIsICIzIik7CitmZUNvbnZvbHZlTWF0cml4LnNldEF0
dHJpYnV0ZSgia2VybmVsTWF0cml4IiwgIjAgMCAwICAgMCAxIDAgICAwIDAgMCIpOworZmVDb252
b2x2ZU1hdHJpeC5zZXRBdHRyaWJ1dGUoInRhcmdldFgiLCAiMCIpOworZmlsdGVyLmFwcGVuZENo
aWxkKGZlQ29udm9sdmVNYXRyaXgpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0VsZW1lbnQo
ImFuaW1hdGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24iKTsKK2Fu
aW1hdGUuc2V0QXR0cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgInRhcmdldFgiKTsKK2FuaW1hdGUu
c2V0QXR0cmlidXRlKCJiZWdpbiIsICJyZWN0LmNsaWNrIik7CithbmltYXRlLnNldEF0dHJpYnV0
ZSgiZHVyIiwgIjRzIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZnJvbSIsICIwIik7Cithbmlt
YXRlLnNldEF0dHJpYnV0ZSgidG8iLCAiMiIpOworZmVDb252bHZlTWF0cml4LmFwcGVuZENoaWxk
KGFuaW1hdGUpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgp
IHsKKwlzaG91bGRCZSgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwiLCAiMCIpOwor
fQorCitmdW5jdGlvbiBzYW1wbGUyKCkgeworCXNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4LnRh
cmdldFguYW5pbVZhbCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTMoKSB7CisJc2hvdWxk
QmUoImZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIiwgIjIiKTsKK30KKworZnVuY3Rp
b24gZXhlY3V0ZVRlc3QoKSB7CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAg
IC8vIFthbmltYXRpb25JZCwgdGltZSwgZWxlbWVudElkLCBzYW1wbGVDYWxsYmFja10KKyAgICAg
ICAgWyJhbmltYXRpb24iLCAwLjAsICAgICJmZUNvbnZvbHZlTWF0cml4Iiwgc2FtcGxlMV0sCisg
ICAgICAgIFsiYW5pbWF0aW9uIiwgMi4wLCAgICAiZmVDb252b2x2ZU1hdHJpeCIsIHNhbXBsZTJd
LAorICAgICAgICBbImFuaW1hdGlvbiIsIDMuOTk5OSwgImZlQ29udm9sdmVNYXRyaXgiLCBzYW1w
bGUzXSwKKyAgICAgICAgWyJhbmltYXRpb24iLCA0LjEgLCAgICJmZUNvbnZvbHZlTWF0cml4Iiwg
c2FtcGxlMV0KKyAgICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7
Cit9CisKKy8vIEJlZ2luIHRlc3QgYXN5bmMKK3dpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2VyVXBk
YXRlKDUxLCA0OSkiLCAwKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99444</attachid>
            <date>2011-07-01 01:17:47 -0700</date>
            <delta_ts>2011-07-01 01:35:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63789-20110701101744.patch</filename>
            <type>text/plain</type>
            <size>27683</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkwMjE3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTEtMDctMDEgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1cHBvcnQgU1ZHQW5pbWF0
ZWRJbnRlZ2VyIGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NjM3ODkKKyAgICAgICAgCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5p
bWF0aW9uIHNob3VsZCB1c2UgZGlyZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhp
cyBwYXRjaCBjb250aW51ZXMgdGhlIGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNW
R0FuaW1hdG9yRmFjdG9yeSB3aXRoIFNWR0FuaW1hdGVkSW50ZWdlci4KKyAgICAgICAgCisgICAg
ICAgIFNWR0FuaW1hdGVkSW50ZWdlciBpcyB1c2VkIGZvciBzb21lIGF0dHJpYnV0ZXMgb2YgU1ZH
IGZpbHRlciBlZmZlY3RzLiBUaGUgYW5pbWF0aW9uIG9mIHRob3NlIGF0dHJpYnV0ZXMgd29yayBh
ZnRlciB0aGlzIHBhdGNoLgorCisgICAgICAgIFRlc3Q6IHN2Zy9hbmltYXRpb25zL3N2Z2ludGVn
ZXItYW5pbWF0aW9uLTEuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIGZp
bGUgdG8gYnVpbGQgc3lzdGVtLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRv
LgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86
IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajogRGl0
dG8uCisgICAgICAgICogc3ZnL1NWR0FsbEluT25lLmNwcDogRGl0dG8uCisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmNwcDogTWFrZSB1c2Ugb2YgQW5pbWF0ZWRJbnRlZ2VyLgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZUFuaW1hdGVkQXR0cmli
dXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVt
ZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0Fu
aW1hdGVkSW50ZWdlci5jcHA6IEFkZGVkLiBUaGUgbmV3IGFuaW1hdG9yIGZvciBTVkdBbmltYXRl
ZEludGVnZXIuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6
U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRJbnRlZ2VyQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEludGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkSW50ZWdlckFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkSW50ZWdlci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRJbnRl
Z2VyQW5pbWF0b3I6On5TVkdBbmltYXRlZEludGVnZXJBbmltYXRvcik6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHA6IEFkZGVkIGhhbmRsZXIgZm9yIEFuaW1hdGVkSW50ZWdlci4K
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjppbnRlZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkVHlwZTo6dmFsdWVBc1N0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZFR5cGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisKIDIwMTEtMDYtMzAgIEV1Z2Vu
ZSBLbHl1Y2huaWtvdiAgPGV1c3Rhcy5idWdAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IFBhdmVsIEZlbGRtYW4uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gOTAy
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MTY1OCw2ICsxNjU4LDcgQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9TVkdBbmltYXRl
ZEFuZ2xlLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKKyAgICAgICAgc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5j
cHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAogICAgICAgICBzdmcvU1ZHQW5p
bWF0ZWRMZW5ndGhMaXN0LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDkwMjE3KQorKysgU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQzNSw2
ICszNDM1LDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRDb2xvci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9y
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmggXAorCVNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZExlbmd0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5o
IFwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDkwMjE3KQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzE4LDYgKzU3MTgsNyBAQAogICAg
ICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NW
R0FuaW1hdGVkQm9vbGVhbi5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZENvbG9y
LmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5jcHAnLAogICAgICAg
ICAgICAgJ3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdB
bmltYXRlZExlbmd0aExpc3QuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWROdW1i
ZXIuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA5MDIxNykKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMyLDYgKzMzMzIsNyBAQCBj
b250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkQW5nbGUuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQm9vbGVhbi5j
cHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgXAorICAgICAgICAg
ICAgICBzdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdB
bmltYXRlZExlbmd0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGhM
aXN0LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAgXApJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gOTAyMTcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwMTIsNiArMTAxMiw3IEBACiAJCTQz
QjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMzNjcxM0IyNjFCMTAw
NDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi87IH07CiAJCTQzQjkzMzZBMTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0I5MzM2ODEzQjI2MUIxMDA0NTg0QkYgLyog
U1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovOyB9OwogCQk0M0MwOTJCQzEyRDlFNEVFMDBBOTg5
QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMDkyQkExMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNW
R0ZvcmVpZ25PYmplY3QuaCAqLzsgfTsKKwkJNDNGNkZEOTYxM0JDRDBCMTAwMjI0MDUyIC8qIFNW
R0FuaW1hdGVkSW50ZWdlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmNwcCAqLzsgfTsKIAkJNDQxNTI5MkUwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFn
ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ0MTUyOTJDMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDQxNTI5MkYw
RTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDQxNTI5MkQwRTFBRThBMDAwQzRB
MkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuY3BwICovOyB9OwogCQk0NDFCMDU1QzBDRDc3
QTJEMDA3QzFGMTggLyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCBpbiBDb3B5IEdlbmVy
YXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MjlBQUZC
MENCODRFODgwMDc2NDdDNSAvKiBET01IVE1MRW1iZWRFbGVtZW50UHJpdmF0ZS5oICovOyB9OwpA
QCAtNzUwNSw2ICs3NTA2LDcgQEAKIAkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NDNDMDkyQjkxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVj
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQzA5MkJBMTJEOUU0RUUwMEE5
ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDNGNkZEOTUxM0JDRDBCMTAwMjI0MDUyIC8qIFNWR0FuaW1hdGVkSW50ZWdlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZEludGVn
ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDE1MjkyQzBFMUFFOEEwMDBD
NEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQ0MTUyOTJEMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDI5QUFGQjBD
Qjg0RTg4MDA3NjQ3QzUgLyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMCw2ICsxNzQwMiw3IEBACiAJCQkJNDNB
NjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLywKIAkJCQkwOEQ0
NkNFMjEyN0FENUZDMDA4OTY5NEIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oICovLAogCQkJ
CUIyMjI3N0U4MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmlkbCAq
LywKKwkJCQk0M0Y2RkQ5NTEzQkNEMEIxMDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNw
cCAqLywKIAkJCQkwODIzRDE1ODEyN0FENkFDMDAwRUJDOTUgLyogU1ZHQW5pbWF0ZWRJbnRlZ2Vy
LmggKi8sCiAJCQkJQjIyMjc3RTkwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkSW50ZWdl
ci5pZGwgKi8sCiAJCQkJNDM4MTc2M0ExM0E2OTdENDAwN0QxMTg3IC8qIFNWR0FuaW1hdGVkTGVu
Z3RoLmNwcCAqLywKQEAgLTI1ODQzLDYgKzI1ODQ2LDcgQEAKIAkJCQk0MzFBMkZENzEzQjc3MDdB
MDA3NzkxRTQgLyogU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQzMUEzMDIxMTNCODlEQ0MwMDc3OTFFNCAvKiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDMxQTMwODgxM0I4Rjk3ODAwNzc5MUU0IC8qIFNW
R0FuaW1hdGVkQm9vbGVhbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0M0Y2RkQ5NjEzQkNEMEIx
MDAyMjQwNTIgLyogU1ZHQW5pbWF0ZWRJbnRlZ2VyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA5MDIxNykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZEJvb2xlYW4uY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQ29sb3IuY3BwIgorI2luY2x1ZGUg
IlNWR0FuaW1hdGVkSW50ZWdlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1l
bnQuY3BwCShyZXZpc2lvbiA5MDIxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExNSwxMSArMTE1LDEyIEBAIEFuaW1hdGVk
QXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVk
U3RyaW5nOwogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVk
Q29sb3I7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIHJldHVybiBBbmltYXRl
ZEludGVnZXI7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgcmV0dXJuIEFuaW1h
dGVkTGVuZ3RoOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGhMaXN0OgogICAgICAgICByZXR1cm4g
QW5pbWF0ZWRMZW5ndGhMaXN0OwotICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAgIGNhc2Ug
QW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIHJldHVybiBBbmltYXRlZE51bWJlcjsKICAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyTGlzdDoKQEAgLTE2Niw2ICsxNjcsNyBAQCB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVBbmltYXRlCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNh
c2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGhMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CkBAIC0yMzYsNiArMjM4LDcg
QEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIGNhc2UgQW5p
bWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgpAQCAtMjY3LDYgKzI3MCw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZy
b21BbmQKICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKQEAgLTI5Nyw2ICszMDEsNyBAQCB2b2lkIFNWR0FuaW1hdGVF
bGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgIGNh
c2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICBjYXNlIEFu
aW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGhMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CkBAIC0zMjYsNiArMzMxLDcg
QEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQogICAgIGNhc2UgQW5p
bWF0ZWRBbmdsZToKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgpAQCAtMzU1LDYgKzM2MSw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVE
aXN0YW4KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgY2FzZSBBbmltYXRlZEJvb2xlYW46
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgorICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZEludGVnZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkSW50ZWdlci5oIgorCisjaW5jbHVk
ZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgor
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU1ZH
QW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OlNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKFNWR0Fu
aW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRJbnRlZ2VyLCBhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkKK3sKK30KKworUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5n
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+IGFu
aW10ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVJbnRlZ2VyKG5ldyBpbnQpOworICAg
IGJvb2wgb2s7CisgICAgYW5pbXRlZFR5cGUtPmludGVnZXIoKSA9IHN0cmluZy50b0ludFN0cmlj
dCgmb2spOworICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU1ZH
QW5pbWF0ZWRJbnRlZ2VyQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAgQVNT
RVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwor
ICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZH
QW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1l
bnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7Cisg
ICAgCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZElu
dGVnZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKK3sKKyAgICBBU1NFUlQobV9jb250
ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5p
bWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxl
bWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJt
aW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKKyAgICAKKyAgICBm
cm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVj
dEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIAorICAgIHRvLT5pbnRlZ2VyKCkgKz0gZnJvbS0+
aW50ZWdlcigpOworfQorCit2b2lkIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yOjpjYWxjdWxh
dGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworCisgICAgU1ZH
QW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRl
RWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7ICAgIAorICAgIEFuaW1hdGlvbk1vZGUgYW5p
bWF0aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKworICAgIC8v
IFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIgcHJpb3JpdHkg
YW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KKyAgICBpbnQmIGFuaW1hdGVkSW50ID0gYW5p
bWF0ZWQtPmludGVnZXIoKTsKKyAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbikK
KyAgICAgICAgZnJvbS0+aW50ZWdlcigpID0gYW5pbWF0ZWRJbnQ7CisgICAgCisgICAgZmxvYXQg
cmVzdWx0ID0gYW5pbWF0ZWRJbnQ7CisgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2Fs
Y3VsYXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0
Q291bnQsIHJlc3VsdCwgZnJvbS0+aW50ZWdlcigpLCB0by0+aW50ZWdlcigpKTsKKyAgICBhbmlt
YXRlZEludCA9IHJvdW5kZihyZXN1bHQpOworfQorCitmbG9hdCBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAg
ICBpbnQgZnJvbSA9IGZyb21TdHJpbmcudG9JbnRTdHJpY3QoKTsKKyAgICBpbnQgdG8gPSB0b1N0
cmluZy50b0ludFN0cmljdCgpOworICAgIHJldHVybiBhYnModG8gLSBmcm9tKTsKK30KKyAgICAK
K30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaAkocmV2aXNpb24gOTAyMTcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzLDYgKzIzLDcgQEAKICNpZiBFTkFCTEUoU1ZHKQogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUHJvcGVydHlNYWNyb3MuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0YXRpY1Byb3BlcnR5
VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIApAQCAtMzgsNiArMzksMjcgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BF
UlRZKE93bmVyVHlwZSwgRE9NQQogI2RlZmluZSBERUZJTkVfQU5JTUFURURfSU5URUdFUl9NVUxU
SVBMRV9XUkFQUEVSUyhPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRl
bnRpZmllciwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkgXAogREVGSU5FX0FOSU1BVEVE
X1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBTVkdET01BdHRyaWJ1dGVJZGVudGlm
aWVyLCBTVkdBbmltYXRlZEludGVnZXIsIGxvbmcsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVy
dHkpCiAKKyNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CisKK2NsYXNzIFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZEludGVnZXJB
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOworICAgIHZpcnR1YWwg
flNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKCkgeyB9CisgICAgCisgICAgc3RhdGljIHZvaWQg
Y2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoU1ZHQW5pbWF0aW9uRWxlbWVudCosIGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCYgYW5pbWF0ZWROdW1iZXIsIGZsb2F0
IGZyb21OdW1iZXIsIGZsb2F0IHRvTnVtYmVyKTsKKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Cisg
ICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29u
c3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0
dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKK307CisjZW5kaWYgLy8gRU5BQkxFKFNWR19BTklN
QVRJT04pCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkocmV2aXNpb24gOTAy
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTQsNiArNTQsOSBAQCBTVkdBbmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUo
KQogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5jb2xvcjsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIGRlbGV0
ZSBtX2RhdGEuaW50ZWdlcjsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5sZW5ndGg7CiAgICAgICAgIGJyZWFrOwpAQCAtMTE0
LDYgKzExNywxNCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUCiAg
ICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUludGVnZXIoaW50KiBpbnRlZ2VyKQor
eworICAgIEFTU0VSVChpbnRlZ2VyKTsKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmlt
YXRlZFR5cGUgPSBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRUeXBlKEFuaW1hdGVkSW50ZWdlcikp
OworICAgIGFuaW1hdGVkVHlwZS0+bV9kYXRhLmludGVnZXIgPSBpbnRlZ2VyOworICAgIHJldHVy
biBhbmltYXRlZFR5cGUucmVsZWFzZSgpOworfQorCiBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKiBsZW5ndGgpCiB7CiAg
ICAgQVNTRVJUKGxlbmd0aCk7CkBAIC0yMTIsNiArMjIzLDEyIEBAIENvbG9yJiBTVkdBbmltYXRl
ZFR5cGU6OmNvbG9yKCkKICAgICByZXR1cm4gKm1fZGF0YS5jb2xvcjsKIH0KIAoraW50JiBTVkdB
bmltYXRlZFR5cGU6OmludGVnZXIoKQoreworICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRJ
bnRlZ2VyKTsKKyAgICByZXR1cm4gKm1fZGF0YS5pbnRlZ2VyOworfQorCiBTVkdMZW5ndGgmIFNW
R0FuaW1hdGVkVHlwZTo6bGVuZ3RoKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVk
TGVuZ3RoKTsKQEAgLTI4NCw2ICszMDEsOSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1
ZUFzU3RyaW5nKCkKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgICAgIEFTU0VSVChtX2Rh
dGEuY29sb3IpOwogICAgICAgICByZXR1cm4gbV9kYXRhLmNvbG9yLT5zZXJpYWxpemVkKCk7Cisg
ICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAgIEFTU0VSVChtX2RhdGEuaW50ZWdlcik7
CisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcigqbV9kYXRhLmludGVnZXIpOwogICAgIGNh
c2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKICAgICAg
ICAgcmV0dXJuIG1fZGF0YS5sZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTM0MSw2ICszNjEs
MTQgQEAgYm9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBB
U1NFUlQobV9kYXRhLmNvbG9yKTsKICAgICAgICAgKm1fZGF0YS5jb2xvciA9IHZhbHVlLmlzRW1w
dHkoKSA/IENvbG9yKCkgOiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcodmFsdWUp
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjogeworICAgICAgICBB
U1NFUlQobV9kYXRhLmludGVnZXIpOworICAgICAgICBib29sIG9rOworICAgICAgICAqbV9kYXRh
LmludGVnZXIgPSB2YWx1ZS50b0ludFN0cmljdCgmb2spOworICAgICAgICBpZiAoIW9rKQorICAg
ICAgICAgICAgZWMgPSAxOyAvLyBBcmJpdGFyeSB2YWx1ZSA+IDAsIGl0IGRvZXNuJ3QgbWF0dGVy
IGFzIHdlIGRvbid0IHJlcG9ydCB0aGUgZXhjZXB0aW9uIGNvZGUuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgICAgICBBU1NFUlQobV9kYXRhLmxl
bmd0aCk7CiAgICAgICAgIG1fZGF0YS5sZW5ndGgtPnNldFZhbHVlQXNTdHJpbmcodmFsdWUsIFNW
R0xlbmd0aDo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSwg
ZWMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gOTAy
MTcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQzLDYgKzQzLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlQW5nbGUoU1ZHQW5nbGUqKTsKICAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUJvb2xlYW4oYm9vbCopOwogICAgIHN0YXRpYyBQYXNz
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3IoQ29sb3IqKTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUludGVnZXIoaW50Kik7CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGgoU1ZHTGVuZ3RoKik7
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVMZW5ndGhMaXN0
KFNWR0xlbmd0aExpc3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNyZWF0ZU51bWJlcihmbG9hdCopOwpAQCAtNTksNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgU1ZH
QW5nbGUmIGFuZ2xlKCk7CiAgICAgYm9vbCYgYm9vbGVhbigpOwogICAgIENvbG9yJiBjb2xvcigp
OworICAgIGludCYgaW50ZWdlcigpOwogICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCk7CiAgICAgU1ZH
TGVuZ3RoTGlzdCYgbGVuZ3RoTGlzdCgpOwogICAgIGZsb2F0JiBudW1iZXIoKTsKQEAgLTkwLDYg
KzkyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgU1ZHQW5nbGUqIGFuZ2xlOwogICAgICAgICBib29s
KiBib29sZWFuOwogICAgICAgICBDb2xvciogY29sb3I7CisgICAgICAgIGludCogaW50ZWdlcjsK
ICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAgIFNWR0xlbmd0aExpc3QqIGxlbmd0
aExpc3Q7CiAgICAgICAgIGZsb2F0KiBudW1iZXI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0b3JGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdG9yRmFjdG9yeS5oCShyZXZpc2lvbiA5MDIxNykKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNiArMjQsNyBAQAog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEJvb2xl
YW4uaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRJbnRlZ2VyLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJT
VkdBbmltYXRlZExlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5oIgpA
QCAtNTMsMTEgKzU0LDEyIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRCb29sZWFuQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpKTsKKyAgICAgICAgY2FzZSBBbmltYXRlZEludGVnZXI6CisgICAgICAg
ICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkSW50ZWdlckFuaW1hdG9yKGFuaW1h
dGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBB
bmltYXRlZExlbmd0aExpc3Q6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0Fu
aW1hdGVkTGVuZ3RoTGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KSk7Ci0gICAgICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOiAvLyBJbnRlZ2VyIGlzIGFuaW1hdGVk
IGFzIE51bWJlciByaWdodCBub3cuCiAgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAg
ICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZE51
bWJlckxpc3Q6CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5MDIxNykKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDExLTA3LTAxICBEaXJrIFNj
aHVsemUgIDxrcml0QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgU1ZHQW5pbWF0ZWRUeXBlIHNob3VsZCBzdXBwb3J0IFNWR0FuaW1h
dGVkSW50ZWdlciBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYzNzg5CisgICAgICAgIAorICAgICAgICBUZXN0IGFuaW1hdGlvbiBvZiBT
VkdBbmltYXRlZEludGVnZXIuIEFkZGVkIHRoZSB0ZXN0IHRvIHRoZSB3azIgc2tpcCBsaXN0Lgor
CisgICAgICAgICogcGxhdGZvcm0vbWFjLXdrMi9Ta2lwcGVkOgorICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzOiBBZGRlZC4KKyAg
ICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChzYW1wbGUzKToK
KyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdpbnRl
Z2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS5odG1sOiBBZGRlZC4KKwogMjAxMS0wNy0wMSAg
S2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBN
b3JlIHRlc3QgZXhwZWN0YXRpb24gdXBkYXRlIGZvciByOTAwODkKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL3drMi9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3Jt
L3drMi9Ta2lwcGVkCShyZXZpc2lvbiA5MDIxNykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3dr
Mi9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC00NTUsNiArNDU1LDcgQEAgc3ZnL2FuaW1hdGlv
bnMvc3ZnYW5nbGUtYW5pbWF0aW9uLWdyYWQtdAogc3ZnL2FuaW1hdGlvbnMvc3ZnYW5nbGUtYW5p
bWF0aW9uLXJhZC10by1kZWcuaHRtbAogc3ZnL2FuaW1hdGlvbnMvc3ZnYW5nbGUtYW5pbWF0aW9u
LXJhZC10by1ncmFkLmh0bWwKIHN2Zy9hbmltYXRpb25zL3N2Z2Jvb2xlYW4tYW5pbWF0aW9uLTEu
aHRtbAorc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS5odG1sCiBzdmcvYW5p
bWF0aW9ucy9zdmdsZW5ndGgtYW5pbWF0aW9uLUxlbmd0aE1vZGVIZWlnaHQuaHRtbAogc3ZnL2Fu
aW1hdGlvbnMvc3ZnbGVuZ3RoLWFuaW1hdGlvbi1MZW5ndGhNb2RlT3RoZXIuaHRtbAogc3ZnL2Fu
aW1hdGlvbnMvc3ZnbGVuZ3RoLWFuaW1hdGlvbi1MZW5ndGhNb2RlV2lkdGguaHRtbApJbmRleDog
TGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmltYXRpb24tMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdl
ci1hbmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9z
dmcvYW5pbWF0aW9ucy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwxNSBAQAorU1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0cwor
CitUZXN0IGFuaW1hdGlvbiBvZiBTVkdJbnRlZ2VyLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCisKKworUEFTUyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZhbCBpcyAwCitQQVNT
IGZlQ29udm9sdmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIGlzIDEKK1BBU1MgZmVDb252b2x2ZU1h
dHJpeC50YXJnZXRYLmFuaW1WYWwgaXMgMgorUEFTUyBmZUNvbnZvbHZlTWF0cml4LnRhcmdldFgu
YW5pbVZhbCBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnaW50ZWdlci1hbmlt
YXRpb24tMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2
Z2ludGVnZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4v
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwv
aDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzIj48L3Nj
cmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlvbi0xLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdpbnRlZ2VyLWFuaW1hdGlv
bi0xLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0
LXRlc3RzL3N2Z2ludGVnZXItYW5pbWF0aW9uLTEuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjQgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0IGFuaW1hdGlvbiBvZiBTVkdJbnRlZ2VyLiIpOworY3Jl
YXRlU1ZHVGVzdENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIGRlZnMgPSBj
cmVhdGVTVkdFbGVtZW50KCJkZWZzIik7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZChkZWZz
KTsKKwordmFyIGZpbHRlciA9IGNyZWF0ZVNWR0VsZW1lbnQoImZpbHRlciIpOworZmlsdGVyLnNl
dEF0dHJpYnV0ZSgiaWQiLCAiZmlsdGVyIik7CitkZWZzLmFwcGVuZENoaWxkKGZpbHRlcik7CisK
K3ZhciByZWN0ID0gY3JlYXRlU1ZHRWxlbWVudCgicmVjdCIpOworcmVjdC5zZXRBdHRyaWJ1dGUo
ImlkIiwgInJlY3QiKTsKK3JlY3Quc2V0QXR0cmlidXRlKCJ3aWR0aCIsICIyMDAiKTsKK3JlY3Qu
c2V0QXR0cmlidXRlKCJoZWlnaHQiLCAiMjAwIik7CityZWN0LnNldEF0dHJpYnV0ZSgiZmlsbCIs
ICJncmVlbiIpOworcmVjdC5zZXRBdHRyaWJ1dGUoImZpbHRlciIsICJ1cmwoI2ZpbHRlcikiKTsK
K3JlY3Quc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgImV4ZWN1dGVUZXN0KCkiKTsKK3Jvb3RTVkdF
bGVtZW50LmFwcGVuZENoaWxkKHJlY3QpOworCit2YXIgZmVDb252b2x2ZU1hdHJpeCA9IGNyZWF0
ZVNWR0VsZW1lbnQoImZlQ29udm9sdmVNYXRyaXgiKTsKK2ZlQ29udm9sdmVNYXRyaXguc2V0QXR0
cmlidXRlKCJpZCIsICJmZUNvbnZsdmVNYXRyaXgiKTsKK2ZlQ29udm9sdmVNYXRyaXguc2V0QXR0
cmlidXRlKCJvcmRlciIsICIzIik7CitmZUNvbnZvbHZlTWF0cml4LnNldEF0dHJpYnV0ZSgia2Vy
bmVsTWF0cml4IiwgIjAgMCAwICAgMCAxIDAgICAwIDAgMCIpOworZmVDb252b2x2ZU1hdHJpeC5z
ZXRBdHRyaWJ1dGUoInRhcmdldFgiLCAiMCIpOworZmlsdGVyLmFwcGVuZENoaWxkKGZlQ29udm9s
dmVNYXRyaXgpOworCit2YXIgYW5pbWF0ZSA9IGNyZWF0ZVNWR0VsZW1lbnQoImFuaW1hdGUiKTsK
K2FuaW1hdGUuc2V0QXR0cmlidXRlKCJpZCIsICJhbmltYXRpb24iKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJhdHRyaWJ1dGVOYW1lIiwgInRhcmdldFgiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRl
KCJiZWdpbiIsICJyZWN0LmNsaWNrIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZHVyIiwgIjRz
Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiZnJvbSIsICIwIik7CithbmltYXRlLnNldEF0dHJp
YnV0ZSgidG8iLCAiMiIpOworZmVDb252bHZlTWF0cml4LmFwcGVuZENoaWxkKGFuaW1hdGUpOwor
CisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVuY3Rpb24gc2FtcGxlMSgpIHsKKwlzaG91bGRC
ZSgiZmVDb252b2x2ZU1hdHJpeC50YXJnZXRYLmFuaW1WYWwiLCAiMCIpOworfQorCitmdW5jdGlv
biBzYW1wbGUyKCkgeworCXNob3VsZEJlKCJmZUNvbnZvbHZlTWF0cml4LnRhcmdldFguYW5pbVZh
bCIsICIxIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTMoKSB7CisJc2hvdWxkQmUoImZlQ29udm9s
dmVNYXRyaXgudGFyZ2V0WC5hbmltVmFsIiwgIjIiKTsKK30KKworZnVuY3Rpb24gZXhlY3V0ZVRl
c3QoKSB7CisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBbCisgICAgICAgIC8vIFthbmltYXRp
b25JZCwgdGltZSwgZWxlbWVudElkLCBzYW1wbGVDYWxsYmFja10KKyAgICAgICAgWyJhbmltYXRp
b24iLCAwLjAsICAgICJmZUNvbnZvbHZlTWF0cml4Iiwgc2FtcGxlMV0sCisgICAgICAgIFsiYW5p
bWF0aW9uIiwgMi4wLCAgICAiZmVDb252b2x2ZU1hdHJpeCIsIHNhbXBsZTJdLAorICAgICAgICBb
ImFuaW1hdGlvbiIsIDMuOTk5OSwgImZlQ29udm9sdmVNYXRyaXgiLCBzYW1wbGUzXSwKKyAgICAg
ICAgWyJhbmltYXRpb24iLCA0LjEgLCAgICJmZUNvbnZvbHZlTWF0cml4Iiwgc2FtcGxlMV0KKyAg
ICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcyk7Cit9CisKKy8vIEJl
Z2luIHRlc3QgYXN5bmMKK3dpbmRvdy5zZXRUaW1lb3V0KCJ0cmlnZ2VyVXBkYXRlKDUxLCA0OSki
LCAwKTsKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwo=
</data>
<flag name="review"
          id="93915"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>