<?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>63387</bug_id>
          
          <creation_ts>2011-06-25 13:08:19 -0700</creation_ts>
          <short_desc>SVGAnimatedType should support SVGNumberList animation</short_desc>
          <delta_ts>2011-06-25 15:23:14 -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>427413</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 13:08:19 -0700</bug_when>
    <thetext>SVGAnimatedType should support SVGNumberList animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427424</commentid>
    <comment_count>1</comment_count>
      <attachid>98603</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 13:27:55 -0700</bug_when>
    <thetext>Created attachment 98603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427430</commentid>
    <comment_count>2</comment_count>
      <attachid>98603</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 14:00:53 -0700</bug_when>
    <thetext>Comment on attachment 98603
Patch

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

Can you please upload a new version that applies so we can check the build? Setting r- for now.

&gt; Source/WebCore/ChangeLog:16154
&gt; + Ditto.

Typo.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.cpp:67
&gt; +        toNumberList.at(i) += fromNumberList.at(i);

Use operator{} here.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.cpp:78
&gt; +    ASSERT(m_contextElement);
&gt; +    SVGAnimateElement* animationElement = static_cast&lt;SVGAnimateElement*&gt;(m_animationElement);
&gt; +    
&gt; +    AnimationMode animationMode = animationElement-&gt;animationMode();
&gt; +    // To animation uses contributions from the lower priority animations as the base value.

I&apos;d prefer:
ASSERT(...);

SVGAnimateElement* animationElement = ..
AnimationMode animationMode = ..

// To animation uses...

&gt; Source/WebCore/svg/SVGAnimatedNumberList.cpp:96
&gt; +        SVGAnimatedNumberAnimator::calculateAnimatedNumber(animationElement, percentage, repeatCount, animatedNumberList.at(i), fromNumberList.at(i), toNumberList.at(i));

Use operator[] instead of at, that&apos;s preferred.

&gt; Source/WebCore/svg/SVGAnimatedNumberList.cpp:101
&gt; +    return -1;

Comment?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427436</commentid>
    <comment_count>3</comment_count>
      <attachid>98606</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 14:24:46 -0700</bug_when>
    <thetext>Created attachment 98606
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427437</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-25 14:26:32 -0700</bug_when>
    <thetext>Attachment 98606 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/svg/...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedNumberList.cpp:42:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:42:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:71:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:71:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.cpp:71:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumberList.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 22 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>427439</commentid>
    <comment_count>5</comment_count>
      <attachid>98606</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-25 14:33:52 -0700</bug_when>
    <thetext>Comment on attachment 98606
Patch

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

r=me!

&gt; Source/WebCore/svg/SVGAnimatedType.cpp:109
&gt; +    animatedType-&gt;m_data.numberList = numberList;

Didn&apos;t we use the &quot;animatedType-&gt;numberList() = numberList;&quot; style elsewhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427445</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 15:02:55 -0700</bug_when>
    <thetext>Committed r89750: &lt;http://trac.webkit.org/changeset/89750&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>427446</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-25 15:23:14 -0700</bug_when>
    <thetext>Committed r89752: &lt;http://trac.webkit.org/changeset/89752&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98603</attachid>
            <date>2011-06-25 13:27:55 -0700</date>
            <delta_ts>2011-06-25 14:24:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63387-20110625222751.patch</filename>
            <type>text/plain</type>
            <size>37285</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDYtMjUgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1cHBvcnQgU1ZHTnVtYmVy
TGlzdCBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYzMzg3CisgICAgICAgIAorICAgICAgICBGb2xsb3cgdXAgb2YgIlNWR0FuaW1hdGlv
biBzaG91bGQgdXNlIGRpcmVjdCB1bml0IGFuaW1hdGlvbiBmb3IgU1ZHTGVuZ3RoIjogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzY4CisgICAgICAgIFRoaXMgcGF0
Y2ggY29udGludWVzIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBuZXcgY29uY2VwdCBvZiBTVkdBbmlt
YXRvckZhY3Rvcnkgd2l0aCBTVkdOdW1iZXJMaXN0LgorICAgICAgICAKKyAgICAgICAgQW5pbWF0
aW9ucyBvZiBhdHRyaWJ1dGVzIHdpdGggdHlwZSBTVkdOdW1iZXJMaXN0IGNhbiBiZSBpbnRlcnBv
bGF0ZWQgbm93LgorCisgICAgICAgIFRlc3RzOiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0
LWFuaW1hdGlvbi0xLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9hbmltYXRpb25zL3N2Z251bWJl
cmxpc3QtYW5pbWF0aW9uLTIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVk
IG5ldyBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6IE1ha2UgdXNlIG9mIGF0dHJpYnV0ZSB0eXBl
IEFuaW1hdGVkTnVtYmVyTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50
OjpkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1Rhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFu
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51bWJlcik6
IE1hZGUgbWV0aG9kIHN0YXRpYyBmb3IgcmV1c2UgaW4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IChh
bmQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciBsYXRlcikuCisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKTog
VXNlIG5ldyBzdGF0aWMgZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA6IEFkZGVkLiBOZXcg
YW5pbWF0b3IgZm9yIFNWR051bWJlckxpc3QuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZE51bWJlckxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6
On5TVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5jcHA6IFVzZSBuZXcgQW5pbWF0b3IuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6bnVtYmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnZh
bHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1
ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JG
YWN0b3J5OjpjcmVhdGUpOgorCiAyMDExLTA2LTI1ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpAQCAtMTYwOTksMyAr
MTYxNTEsNCBAQCBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZGVvRnVsbHNjCiAgICAg
ICAgIChXZWJDb3JlOjpjb21wdXRlVmlld3BvcnRBdHRyaWJ1dGVzKToKIAogPT0gUm9sbGVkIG92
ZXIgdG8gQ2hhbmdlTG9nLTIwMTEtMDYtMDQgPT0KKyBEaXR0by4KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gODk2OTgpCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTY1OSw2ICsx
NjU5LDcgQEAgSUYgKEVOQUJMRV9TVkcpCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNw
cAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZE51bWJlci5jcHAKKyAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKICAg
ICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0
ZWRSZWN0LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5Njk4KQorKysgU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQxNSw2ICszNDE1LDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRM
ZW5ndGhMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oIFwKKwlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRQb2ludExpc3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExp
c3QuaCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCShyZXZpc2lvbiA4OTY5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAtNTcyMyw2ICs1NzIzLDcgQEAK
ICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51
bWJlci5jcHAnLAorICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwJywK
ICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwJywKICAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVk
U3RyaW5nLmNwcCcsCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gODk2OTgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMzM0MCw2ICszMzQwLDcg
QEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZENvbG9yLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZExlbmd0
aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwKKyAgICAg
ICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgXAogICAgICAgICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkUmVjdC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIFwK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHJldmlzaW9uIDg5Njk4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDAzLDYgKzEwMDMsNyBAQAog
CQk0M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQjkzMzY3MTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovOyB9OwogCQk0M0I5MzM2QTEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJG
IC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAw
QTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5k
ZXJTVkdGb3JlaWduT2JqZWN0LmggKi87IH07CisJCTQzRDAxNDJBMTNCNTI4RTYwMEFFMjFBMiAv
KiBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDNEMDE0MjkxM0I1MjhFNjAwQUUyMUEyIC8qIFNWR0FuaW1hdGVk
TnVtYmVyTGlzdC5jcHAgKi87IH07CiAJCTQ0MTUyOTJFMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1M
UGx1Z0luSW1hZ2VFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NDE1MjkyQzBFMUFFOEEwMDBDNEEyRDAgLyogSFRNTFBsdWdJbkltYWdlRWxl
bWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTQ0MTUyOTJGMEUxQUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0MTUyOTJEMEUx
QUU4QTAwMEM0QTJEMCAvKiBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcCAqLzsgfTsKIAkJNDQx
QjA1NUMwQ0Q3N0EyRDAwN0MxRjE4IC8qIERPTUhUTUxFbWJlZEVsZW1lbnRQcml2YXRlLmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NDI5QUFGQjBDQjg0RTg4MDA3NjQ3QzUgLyogRE9NSFRNTEVtYmVkRWxlbWVudFByaXZhdGUu
aCAqLzsgfTsKQEAgLTc0OTQsNiArNzQ5NSw3IEBACiAJCTQzQjkzMzY4MTNCMjYxQjEwMDQ1ODRC
RiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzQzA5MkI5MTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2Jq
ZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlbmRlclNWR0Zv
cmVpZ25PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0MwOTJCQTEy
RDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTQzRDAxNDI5MTNCNTI4RTYwMEFFMjFBMiAvKiBTVkdBbmltYXRl
ZE51bWJlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDQx
NTI5MkMwRTFBRThBMDAwQzRBMkQwIC8qIEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NDE1MjkyRDBFMUFFOEEwMDBDNEEyRDAgLyogSFRN
TFBsdWdJbkltYWdlRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBIVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNDQyOUFBRkIwQ0I4NEU4ODAwNzY0N0M1IC8qIERPTUhUTUxFbWJlZEVsZW1lbnRQcml2
YXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBET01IVE1MRW1iZWRFbGVt
ZW50UHJpdmF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTc0MTQsNiArMTc0
MTYsNyBAQAogCQkJCTQzQTBGMEIwMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdBbmltYXRlZE51bWJl
ci5jcHAgKi8sCiAJCQkJMDhCMzVCMTIxMjdCNkE3QzAwNTMxNEREIC8qIFNWR0FuaW1hdGVkTnVt
YmVyLmggKi8sCiAJCQkJQjIyMjc3RUMwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkTnVt
YmVyLmlkbCAqLywKKwkJCQk0M0QwMTQyOTEzQjUyOEU2MDBBRTIxQTIgLyogU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0LmNwcCAqLywKIAkJCQkwOEIzNUIxNjEyN0I2QTg4MDA1MzE0REQgLyogU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmggKi8sCiAJCQkJQjIyMjc3RUQwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5pZGwgKi8sCiAJCQkJNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJG
IC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0LmggKi8sCkBAIC0yNTgzNSw2ICsyNTgzOCw3IEBACiAJ
CQkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkU3Ry
aW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA4NzU1OEM1MTNCNEE1N0QwMEY0OTMwNyAvKiBT
dXJyb2dhdGVQYWlyQXdhcmVUZXh0SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDNE
MDE0MkExM0I1MjhFNjAwQUUyMUEyIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkocmV2aXNpb24gODk2
OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5jcHAiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVy
LmNwcCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFJlY3QuY3BwIgog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODk2OTgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNyArMTEz
LDYgQEAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0FuaW1hdGVFbGVtZW50OgogICAgICAgICBy
ZXR1cm4gQW5pbWF0ZWRBbmdsZTsKICAgICBjYXNlIEFuaW1hdGVkQm9vbGVhbjoKICAgICBjYXNl
IEFuaW1hdGVkRW51bWVyYXRpb246Ci0gICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlck9wdGlvbmFsTnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGhMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgpAQCAtMTI2LDYg
KzEyNSw4IEBAIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDoKICAgICBj
YXNlIEFuaW1hdGVkSW50ZWdlcjoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICBy
ZXR1cm4gQW5pbWF0ZWROdW1iZXI7CisgICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CisgICAg
ICAgIHJldHVybiBBbmltYXRlZE51bWJlckxpc3Q7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6CiAg
ICAgICAgIHJldHVybiBBbmltYXRlZFBhdGg7CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKQEAg
LTE5OSw2ICsyMDAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRl
CiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAg
Y2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKICAgICBj
YXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5p
bWF0ZWRTdHJpbmc6IHsKQEAgLTI3NCw2ICsyNzYsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50
OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5p
bWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRS
ZWN0OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CkBAIC0yOTksNiArMzAyLDcgQEAgYm9vbCBT
VkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZAogICAgIGNhc2UgQW5pbWF0ZWRDb2xv
cjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6Cisg
ICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAg
ICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOgpAQCAtMzI4LDYg
KzMzMiw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICBj
YXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFu
aW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgogICAgIGNhc2UgQW5p
bWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0
cmluZzogewpAQCAtMzY0LDYgKzM2OSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5
UmVzdWx0c1RvVGEKICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExl
bmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJM
aXN0OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAg
ICAgY2FzZSBBbmltYXRlZFN0cmluZzoKQEAgLTM4Nyw2ICszOTMsNyBAQCBmbG9hdCBTVkdBbmlt
YXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuCiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNl
IEFuaW1hdGVkTnVtYmVyTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2Ug
QW5pbWF0ZWRSZWN0OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAJKHJldmlzaW9uIDg5Njk4KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcs
NiArNjcsMjUgQEAgdm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdAogICAg
IHRvLT5udW1iZXIoKSArPSBmcm9tLT5udW1iZXIoKTsKIH0KIAordm9pZCBTVkdBbmltYXRlZE51
bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51bWJlcihTVkdBbmltYXRpb25FbGVtZW50
KiBhbmltYXRpb25FbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3Vu
dCwgZmxvYXQmIGFuaW1hdGVkTnVtYmVyLCBmbG9hdCBmcm9tTnVtYmVyLCBmbG9hdCB0b051bWJl
cikKK3sKKyAgICBmbG9hdCBudW1iZXI7CisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmNhbGNN
b2RlKCkgPT0gQ2FsY01vZGVEaXNjcmV0ZSkKKyAgICAgICAgbnVtYmVyID0gcGVyY2VudGFnZSA8
IDAuNSA/IGZyb21OdW1iZXIgOiB0b051bWJlcjsKKyAgICBlbHNlCisgICAgICAgIG51bWJlciA9
ICh0b051bWJlciAtIGZyb21OdW1iZXIpICogcGVyY2VudGFnZSArIGZyb21OdW1iZXI7CisgICAg
ICAgIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGZvciB2YWx1ZXMgYW5pbWF0
aW9uLiBSaWdodCBub3cgd2UgdHJhbnNmb3JtIHZhbHVlcy1hbmltYXRpb24gdG8gbXVsdGlwbGUg
ZnJvbS10by1hbmltYXRpb25zIGFuZAorICAgIC8vIGFjY3VtdWxhdGUgZXZlcnkgc2luZ2xlIHZh
bHVlIHRvIHRoZSBwcmV2aW91cyBvbmUuIEJ1dCBhY2N1bXVsYXRpb24gc2hvdWxkIGp1c3QgdGFr
ZSBpbnRvIGFjY291bnQgYWZ0ZXIgYSBjb21wbGV0ZSBjeWNsZQorICAgIC8vIG9mIHZhbHVlcy1h
bmltYWl0b24uIFNlZSBleGFtcGxlIGF0OiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1z
bWlsLWFuaW1hdGlvbi0yMDAxMDkwNC8jUmVwZWF0aW5nQW5pbQorICAgIGlmIChhbmltYXRpb25F
bGVtZW50LT5pc0FjY3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQpCisgICAgICAgIG51bWJlciAr
PSB0b051bWJlciAqIHJlcGVhdENvdW50OworICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5pc0Fk
ZGl0aXZlKCkgJiYgYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpICE9IFRvQW5pbWF0
aW9uKQorICAgICAgICBhbmltYXRlZE51bWJlciArPSBudW1iZXI7CisgICAgZWxzZQorICAgICAg
ICBhbmltYXRlZE51bWJlciA9IG51bWJlcjsKK30KKwogdm9pZCBTVkdBbmltYXRlZE51bWJlckFu
aW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVk
IHJlcGVhdENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKIHsKQEAg
LTkzLDIyICsxMTIsOCBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0
CiAgICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4
dEVsZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgdG9OdW1iZXJTdHJp
bmcpOwogICAgICAgICBwYXJzZU51bWJlckZyb21TdHJpbmcodG9OdW1iZXJTdHJpbmcsIHRvTnVt
YmVyKTsgCiAgICAgfQotCi0gICAgZmxvYXQgbnVtYmVyOwotICAgIGlmIChhbmltYXRpb25FbGVt
ZW50LT5jYWxjTW9kZSgpID09IENhbGNNb2RlRGlzY3JldGUpCi0gICAgICAgIG51bWJlciA9IHBl
cmNlbnRhZ2UgPCAwLjVmID8gZnJvbU51bWJlciA6IHRvTnVtYmVyOwotICAgIGVsc2UKLSAgICAg
ICAgbnVtYmVyID0gKHRvTnVtYmVyIC0gZnJvbU51bWJlcikgKiBwZXJjZW50YWdlICsgZnJvbU51
bWJlcjsKICAgICAKLSAgICAvLyBGSVhNRTogVGhpcyBpcyBub3QgY29ycmVjdCBmb3IgdmFsdWVz
IGFuaW1hdGlvbi4gUmlnaHQgbm93IHdlIHRyYW5zZm9ybSB2YWx1ZXMtYW5pbWF0aW9uIHRvIG11
bHRpcGxlIGZyb20tdG8tYW5pbWF0aW9ucyBhbmQKLSAgICAvLyBhY2N1bXVsYXRlIGV2ZXJ5IHNp
bmdsZSB2YWx1ZSB0byB0aGUgcHJldmlvdXMgb25lLiBCdXQgYWNjdW11bGF0aW9uIHNob3VsZCBq
dXN0IHRha2UgaW50byBhY2NvdW50IGFmdGVyIGEgY29tcGxldGUgY3ljbGUKLSAgICAvLyBvZiB2
YWx1ZXMtYW5pbWFpdG9uLiBTZWUgZXhhbXBsZSBhdDogaHR0cDovL3d3dy53My5vcmcvVFIvMjAw
MS9SRUMtc21pbC1hbmltYXRpb24tMjAwMTA5MDQvI1JlcGVhdGluZ0FuaW0KLSAgICBpZiAoYW5p
bWF0aW9uRWxlbWVudC0+aXNBY2N1bXVsYXRlZCgpICYmIHJlcGVhdENvdW50KQotICAgICAgICBu
dW1iZXIgKz0gdG9OdW1iZXIgKiByZXBlYXRDb3VudDsKLSAgICBpZiAoYW5pbWF0aW9uRWxlbWVu
dC0+aXNBZGRpdGl2ZSgpICYmIGFuaW1hdGlvbk1vZGUgIT0gVG9BbmltYXRpb24pCi0gICAgICAg
IGFuaW1hdGVkTnVtYmVyICs9IG51bWJlcjsKLSAgICBlbHNlCi0gICAgICAgIGFuaW1hdGVkTnVt
YmVyID0gbnVtYmVyOworICAgIGNhbGN1bGF0ZUFuaW1hdGVkTnVtYmVyKGFuaW1hdGlvbkVsZW1l
bnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZE51bWJlciwgZnJvbU51bWJlciwg
dG9OdW1iZXIpOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxh
dGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJp
bmcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkocmV2aXNpb24g
ODk2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDgsNiArNDgsOCBAQCBwdWJsaWM6CiAgICAgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwg
flNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoKSB7IH0KICAgICAKKyAgICBzdGF0aWMgdm9pZCBj
YWxjdWxhdGVBbmltYXRlZE51bWJlcihTVkdBbmltYXRpb25FbGVtZW50KiwgZmxvYXQgcGVyY2Vu
dGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsIGZsb2F0JiBhbmltYXRlZE51bWJlciwgZmxvYXQg
ZnJvbU51bWJlciwgZmxvYXQgdG9OdW1iZXIpOworICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1
ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCShyZXZp
c2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTA2IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikK
KyNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlckxpc3QuaCIKKworI2luY2x1ZGUgIlNWR0FuaW1h
dGVFbGVtZW50LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwg
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRv
cihBbmltYXRlZE51bWJlckxpc3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQor
eworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6
OmNyZWF0ZU51bWJlckxpc3QobmV3IFNWR051bWJlckxpc3QpOworICAgIGFuaW10ZWRUeXBlLT5u
dW1iZXJMaXN0KCkucGFyc2Uoc3RyaW5nKTsKKyAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFz
ZSgpOworfQorCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVG
cm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQo
bV9hbmltYXRpb25FbGVtZW50KTsKKyAgICAKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmlu
Zyhmcm9tU3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcodG9TdHJpbmcpOwor
fQorCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5k
QnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3Ry
aW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmlt
YXRpb25FbGVtZW50KTsKKyAgICAKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9t
U3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOworICAgIAor
ICAgIFNWR051bWJlckxpc3QmIGZyb21OdW1iZXJMaXN0ID0gZnJvbS0+bnVtYmVyTGlzdCgpOwor
ICAgIFNWR051bWJlckxpc3QmIHRvTnVtYmVyTGlzdCA9IHRvLT5udW1iZXJMaXN0KCk7CisgICAg
CisgICAgdW5zaWduZWQgc2l6ZSA9IGZyb21OdW1iZXJMaXN0LnNpemUoKTsKKyAgICBpZiAoc2l6
ZSAhPSB0b051bWJlckxpc3Quc2l6ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgICAgICB0b051bWJlckxpc3QuYXQoaSkg
Kz0gZnJvbU51bWJlckxpc3QuYXQoaSk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0
QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkK
K3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0
aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgCisg
ICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0
aW9uTW9kZSgpOworICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0
aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KKyAgICBTVkdO
dW1iZXJMaXN0JiBmcm9tTnVtYmVyTGlzdCA9IGZyb20tPm51bWJlckxpc3QoKTsKKyAgICBTVkdO
dW1iZXJMaXN0JiBhbmltYXRlZE51bWJlckxpc3QgPSBhbmltYXRlZC0+bnVtYmVyTGlzdCgpOwor
ICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKQorICAgICAgICBmcm9tTnVtYmVy
TGlzdCA9IGFuaW1hdGVkTnVtYmVyTGlzdDsKKworICAgIFNWR051bWJlckxpc3QmIHRvTnVtYmVy
TGlzdCA9IHRvLT5udW1iZXJMaXN0KCk7ICAgIAorICAgIHVuc2lnbmVkIGl0ZW1zQ291bnQgPSBm
cm9tTnVtYmVyTGlzdC5zaXplKCk7CisgICAgaWYgKGl0ZW1zQ291bnQgIT0gdG9OdW1iZXJMaXN0
LnNpemUoKSkgeworICAgICAgICBpZiAocGVyY2VudGFnZSA8IDAuNSkgeworICAgICAgICAgICAg
aWYgKGFuaW1hdGlvbk1vZGUgIT0gVG9BbmltYXRpb24pCisgICAgICAgICAgICAgICAgYW5pbWF0
ZWROdW1iZXJMaXN0ID0gZnJvbU51bWJlckxpc3Q7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgYW5pbWF0ZWROdW1iZXJMaXN0ID0gdG9OdW1iZXJMaXN0OworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIAorICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpdGVtc0NvdW50OyArK2kp
CisgICAgICAgIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkTnVt
YmVyKGFuaW1hdGlvbkVsZW1lbnQsIHBlcmNlbnRhZ2UsIHJlcGVhdENvdW50LCBhbmltYXRlZE51
bWJlckxpc3QuYXQoaSksIGZyb21OdW1iZXJMaXN0LmF0KGkpLCB0b051bWJlckxpc3QuYXQoaSkp
OworfQorCitmbG9hdCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlz
dGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICByZXR1cm4gLTE7Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuaAkocmV2aXNp
b24gODk2OTgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDcgQEAKIAogI2lmIEVOQUJMRShTVkcpCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWRMaXN0UHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IuaCIKICNpbmNsdWRlICJTVkdOdW1iZXJMaXN0LmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTM0LDYgKzM1LDI1IEBAIERFQ0xBUkVfQU5JTUFURURfTElTVF9Q
Uk9QRVJUWShTVkdBbmltYXQKIAogI2RlZmluZSBERUZJTkVfQU5JTUFURURfTlVNQkVSX0xJU1Qo
T3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwK
IERFRklORV9BTklNQVRFRF9MSVNUX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBE
T01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCwgU1ZHTnVtYmVy
TGlzdCwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkKKyAgICAKKyNpZiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKK2NsYXNzIFNWR0FuaW1h
dGVkTnVtYmVyTGlzdEFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsK
KyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcihTVkdBbmlt
YXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOworICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkTnVt
YmVyTGlzdEFuaW1hdG9yKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25z
dCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFs
IGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZyk7Cit9OworI2VuZGlmIC8vIEVOQUJMRShTVkdfQU5JTUFUSU9OKQog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFR5cGUuY3BwCShyZXZpc2lvbiA4OTY5OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjaW5jbHVk
ZSAiU1ZHQW5nbGUuaCIKICNpbmNsdWRlICJTVkdDb2xvci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0
aC5oIgorI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGls
aXRpZXMuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKIApAQCAtNTEsNiArNTIsOSBAQCBT
VkdBbmltYXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUoKQogICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXI6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEubnVtYmVyOwogICAgICAgICBicmVhazsKKyAgICBj
YXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAgICAgICAgZGVsZXRlIG1fZGF0YS5udW1iZXJMaXN0
OworICAgICAgICBicmVhazsKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBkZWxl
dGUgbV9kYXRhLnBvaW50TGlzdDsKICAgICAgICAgYnJlYWs7CkBAIC05OCw2ICsxMDIsMTQgQEAg
UGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJldHVybiBhbmlt
YXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KFNWR051bWJlckxpc3QqIG51bWJlckxpc3Qp
Cit7CisgICAgQVNTRVJUKG51bWJlckxpc3QpOworICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
IGFuaW1hdGVkVHlwZSA9IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFR5cGUoQW5pbWF0ZWROdW1i
ZXJMaXN0KSk7CisgICAgYW5pbWF0ZWRUeXBlLT5tX2RhdGEubnVtYmVyTGlzdCA9IG51bWJlckxp
c3Q7CisgICAgcmV0dXJuIGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVBvaW50TGlzdChTVkdQb2lu
dExpc3QqIHBvaW50TGlzdCkKIHsKICAgICBBU1NFUlQocG9pbnRMaXN0KTsKQEAgLTE0Niw2ICsx
NTgsMTIgQEAgZmxvYXQmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVyKCkKICAgICByZXR1cm4gKm1f
ZGF0YS5udW1iZXI7CiB9CiAKK1NWR051bWJlckxpc3QmIFNWR0FuaW1hdGVkVHlwZTo6bnVtYmVy
TGlzdCgpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZE51bWJlckxpc3QpOworICAg
IHJldHVybiAqbV9kYXRhLm51bWJlckxpc3Q7Cit9CisKIFNWR1BvaW50TGlzdCYgU1ZHQW5pbWF0
ZWRUeXBlOjpwb2ludExpc3QoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRQb2lu
dHMpOwpAQCAtMTc5LDYgKzE5Nyw5IEBAIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNT
dHJpbmcoKQogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIEFTU0VSVChtX2RhdGEu
bnVtYmVyKTsKICAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKCptX2RhdGEubnVtYmVyKTsK
KyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAgICAgICAgQVNTRVJUKG1fZGF0YS5udW1i
ZXJMaXN0KTsKKyAgICAgICAgcmV0dXJuIG1fZGF0YS5udW1iZXJMaXN0LT52YWx1ZUFzU3RyaW5n
KCk7CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5wb2lu
dExpc3QpOwogICAgICAgICByZXR1cm4gbV9kYXRhLnBvaW50TGlzdC0+dmFsdWVBc1N0cmluZygp
OwpAQCAtMjE2LDYgKzIzNywxMCBAQCBib29sIFNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0
cmluZyhjCiAgICAgICAgIEFTU0VSVChtX2RhdGEubnVtYmVyKTsKICAgICAgICAgcGFyc2VOdW1i
ZXJGcm9tU3RyaW5nKHZhbHVlLCAqbV9kYXRhLm51bWJlcik7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgorICAgICAgICBBU1NFUlQobV9kYXRhLm51bWJlckxp
c3QpOworICAgICAgICBtX2RhdGEubnVtYmVyTGlzdC0+cGFyc2UodmFsdWUpOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBBU1NFUlQobV9kYXRhLnBv
aW50TGlzdCk7CiAgICAgICAgIG1fZGF0YS5wb2ludExpc3QtPmNsZWFyKCk7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCShyZXZpc2lvbiA4OTY5OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjks
NyBAQCBjbGFzcyBDb2xvcjsKIGNsYXNzIEZsb2F0UmVjdDsKIGNsYXNzIFNWR0FuZ2xlOwogY2xh
c3MgU1ZHTGVuZ3RoOworY2xhc3MgU1ZHTnVtYmVyTGlzdDsKIGNsYXNzIFNWR1BvaW50TGlzdDsK
IAogY2xhc3MgU1ZHQW5pbWF0ZWRUeXBlIHsKQEAgLTQwLDYgKzQxLDcgQEAgcHVibGljOgogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlQ29sb3IoQ29sb3IqKTsK
ICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZUxlbmd0aChTVkdM
ZW5ndGgqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZU51
bWJlcihmbG9hdCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlTnVtYmVyTGlzdChTVkdOdW1iZXJMaXN0Kik7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0Kik7CiAgICAgc3RhdGlj
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVjdCopOwogICAg
IHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKFN0cmluZyop
OwpAQCAtNTAsNiArNTIsNyBAQCBwdWJsaWM6CiAgICAgQ29sb3ImIGNvbG9yKCk7CiAgICAgU1ZH
TGVuZ3RoJiBsZW5ndGgoKTsKICAgICBmbG9hdCYgbnVtYmVyKCk7CisgICAgU1ZHTnVtYmVyTGlz
dCYgbnVtYmVyTGlzdCgpOwogICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCk7CiAgICAgRmxv
YXRSZWN0JiByZWN0KCk7CiAgICAgU3RyaW5nJiBzdHJpbmcoKTsKQEAgLTczLDYgKzc2LDcgQEAg
cHJpdmF0ZToKICAgICAgICAgQ29sb3IqIGNvbG9yOwogICAgICAgICBTVkdMZW5ndGgqIGxlbmd0
aDsKICAgICAgICAgZmxvYXQqIG51bWJlcjsKKyAgICAgICAgU1ZHTnVtYmVyTGlzdCogbnVtYmVy
TGlzdDsKICAgICAgICAgU1ZHUG9pbnRMaXN0KiBwb2ludExpc3Q7CiAgICAgICAgIEZsb2F0UmVj
dCogcmVjdDsKICAgICAgICAgU3RyaW5nKiBzdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdG9yRmFjdG9yeS5oCShyZXZpc2lvbiA4OTY5OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBA
QAogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQ29sb3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTnVtYmVyLmgiCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZWROdW1iZXJMaXN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIKICNp
bmNsdWRlICJTVkdBbmltYXRlZFJlY3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5o
IgpAQCAtNTAsNiArNTEsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIo
bmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVs
ZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAg
ICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmlt
YXRlZFBvaW50czoKICAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRQ
b2ludExpc3RBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAg
ICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQ3KQorKysgTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTEt
MDYtMjUgIERpcmsgU2NodWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1
cHBvcnQgU1ZHTnVtYmVyTGlzdCBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTYzMzg3CisKKyAgICAgICAgVGVzdCBhbmltYXRpb24gb2Yg
YXR0cmlidXRlcyB3aXRoIHR5cGUgU1ZHTnVtYmVyTGlzdC4KKworICAgICAgICAqIHN2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0xLmpzOiBBZGRlZC4K
KyAgICAgICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChzYW1wbGUz
KToKKyAgICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi5qczogQWRkZWQuCisgICAgICAgIChz
YW1wbGUxKToKKyAgICAgICAgKHNhbXBsZTIpOgorICAgICAgICAoc2FtcGxlMyk6CisgICAgICAg
IChleGVjdXRlVGVzdCk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1h
bmltYXRpb24tMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTEuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2Fu
aW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIHN2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTIuaHRtbDog
QWRkZWQuCisKIDIwMTEtMDYtMjUgIEJhbGF6cyBLZWxlbWVuICA8a2JhbGF6c0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL3N2
Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0
aW9uLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMjggQEAKK1NWRyAxLjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHMKKworQUJD
RAorVGVzdCBTVkdOdW1iZXJMaXN0IGFuaW1hdGlvbiBvbiAncm90YXRlJyBhdHRyaWJ1dGUgb2Yg
dGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGV4dC5yb3RhdGUu
YW5pbVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5n
ZXRJdGVtKDEpLnZhbHVlIGlzIDAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIp
LnZhbHVlIGlzIDAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIGlz
IDAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDIyLjUKK1BB
U1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDQ1CitQQVNTIHRleHQu
cm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSBpcyA2Ny41CitQQVNTIHRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgzKS52YWx1ZSBpcyA5MAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFs
LmdldEl0ZW0oMCkudmFsdWUgaXMgNDUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVt
KDEpLnZhbHVlIGlzIDkwCitQQVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1
ZSBpcyAxMzUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIGlzIDE4
MAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMAorUEFTUyB0
ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0
ZS5hbmltVmFsLmdldEl0ZW0oMikudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFs
LmdldEl0ZW0oMykudmFsdWUgaXMgMAorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251
bWJlcmxpc3QtYW5pbWF0aW9uLTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0xLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0xLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRhdGVzL3Jlc291cmNlcy9TVkdUZXN0
Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0FuaW1hdGlvblRl
c3RDYXNlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGgxPlNWRyAxLjEgZHluYW1p
YyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlk
PSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3ZnbnVtYmVybGlz
dC1hbmltYXRpb24tMS5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJs
aXN0LWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI4IEBACitTVkcgMS4xIGR5bmFtaWMgYW5pbWF0aW9uIHRl
c3RzCisKK0FCQ0QKK1Rlc3QgJ2J5JyBhbmltYXRpb24gb2YgU1ZHTnVtYmVyTGlzdCBvbiAncm90
YXRlJyBhdHRyaWJ1dGUgb2YgdGV4dC4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2Vy
aWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisK
K1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDAKK1BBU1MgdGV4
dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDQ1CitQQVNTIHRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSBpcyA5MAorRkFJTCB0ZXh0LnJvdGF0ZS5hbmltVmFs
LmdldEl0ZW0oMykudmFsdWUgc2hvdWxkIGJlIDEzNS4gV2FzIDE1My4KK1BBU1MgdGV4dC5yb3Rh
dGUuYW5pbVZhbC5nZXRJdGVtKDApLnZhbHVlIGlzIDIyLjUKK1BBU1MgdGV4dC5yb3RhdGUuYW5p
bVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlzIDY3LjUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5n
ZXRJdGVtKDIpLnZhbHVlIGlzIDExMi41CitQQVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRl
bSgzKS52YWx1ZSBpcyAxNTcuNQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCku
dmFsdWUgaXMgNDUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDEpLnZhbHVlIGlz
IDkwCitQQVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSBpcyAxMzUKK1BB
U1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIGlzIDE4MAorUEFTUyB0ZXh0
LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5h
bmltVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNDUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5n
ZXRJdGVtKDIpLnZhbHVlIGlzIDkwCitGQUlMIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgz
KS52YWx1ZSBzaG91bGQgYmUgMTM1LiBXYXMgMTUzLgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQg
aXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRp
b25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1h
dGlvbi0yLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vZHluYW1pYy11cGRhdGVzL3Jlc291cmNl
cy9TVkdUZXN0Q2FzZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL1NWR0Fu
aW1hdGlvblRlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGgxPlNWRyAx
LjEgZHluYW1pYyBhbmltYXRpb24gdGVzdHM8L2gxPgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQgc3JjPSJzY3JpcHQtdGVzdHMvc3Zn
bnVtYmVybGlzdC1hbmltYXRpb24tMi5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVybGlz
dC1hbmltYXRpb24tMS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9u
cy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMS5qcwkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0
LWFuaW1hdGlvbi0xLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACitkZXNjcmlwdGlv
bigiVGVzdCBTVkdOdW1iZXJMaXN0IGFuaW1hdGlvbiBvbiAncm90YXRlJyBhdHRyaWJ1dGUgb2Yg
dGV4dC4iKTsKK2NyZWF0ZVNWR1Rlc3RDYXNlKCk7CisKKy8vIFNldHVwIHRlc3QgZG9jdW1lbnQK
K3ZhciB0ZXh0ID0gY3JlYXRlU1ZHRWxlbWVudCgidGV4dCIpOwordGV4dC50ZXh0Q29udGVudCA9
ICJBQkNEIjsKK3RleHQuc2V0QXR0cmlidXRlKCJpZCIsICJyZWN0Iik7Cit0ZXh0LnNldEF0dHJp
YnV0ZSgieCIsICI0MCA2MCA4MCAxMDAiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJ5IiwgIjYwIik7
Cit0ZXh0LnNldEF0dHJpYnV0ZSgicm90YXRlIiwgIjAgMCAwIDAiKTsKK3RleHQuc2V0QXR0cmli
dXRlKCJmaWxsIiwgImdyZWVuIik7Cit0ZXh0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICJleGVj
dXRlVGVzdCgpIik7CisKK3ZhciBhbmltYXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIp
OworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5zZXRB
dHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUiLCAicm90YXRlIik7CithbmltYXRlLnNldEF0dHJpYnV0
ZSgiYmVnaW4iLCAiY2xpY2siKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJkdXIiLCAiNHMiKTsK
K2FuaW1hdGUuc2V0QXR0cmlidXRlKCJmcm9tIiwgIjAgMCAwIDAiKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJ0byIsICI0NSA5MCAxMzUgMTgwIik7Cit0ZXh0LmFwcGVuZENoaWxkKGFuaW1hdGUp
Oworcm9vdFNWR0VsZW1lbnQuYXBwZW5kQ2hpbGQodGV4dCk7CisKKy8vIFNldHVwIGFuaW1hdGlv
biB0ZXN0CitmdW5jdGlvbiBzYW1wbGUxKCkgeworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiMCIpOworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiMCIpOworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMikudmFsdWUiLCAiMCIpOworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMykudmFsdWUiLCAiMCIpOworfQorCitmdW5jdGlvbiBzYW1wbGUyKCkgewor
CXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1
ZSIsICIyMi41IiwgMC4wMSk7CisJc2hvdWxkQmVDbG9zZUVub3VnaCgidGV4dC5yb3RhdGUuYW5p
bVZhbC5nZXRJdGVtKDEpLnZhbHVlIiwgIjQ1IiwgMC4wMSk7CisJc2hvdWxkQmVDbG9zZUVub3Vn
aCgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIpLnZhbHVlIiwgIjY3LjUiLCAwLjAxKTsK
KwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFs
dWUiLCAiOTAiLCAwLjAxKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKwlzaG91bGRCZUNs
b3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNDUiLCAw
LjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0o
MSkudmFsdWUiLCAiOTAiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0
ZS5hbmltVmFsLmdldEl0ZW0oMikudmFsdWUiLCAiMTM1IiwgMC4wMSk7CisJc2hvdWxkQmVDbG9z
ZUVub3VnaCgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIiwgIjE4MCIsIDAu
MDEpOworfQorCitmdW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZh
bHVlcyA9IFsKKyAgICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNhbXBs
ZUNhbGxiYWNrXQorICAgICAgICBbImFuaW1hdGlvbiIsIDAuMCwgICAgInJlY3QiLCBzYW1wbGUx
XSwKKyAgICAgICAgWyJhbmltYXRpb24iLCAyLjAsICAgICJyZWN0Iiwgc2FtcGxlMl0sCisgICAg
ICAgIFsiYW5pbWF0aW9uIiwgMy45OTk5LCAicmVjdCIsIHNhbXBsZTNdLAorICAgICAgICBbImFu
aW1hdGlvbiIsIDQuMCAsICAgInJlY3QiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5Bbmlt
YXRpb25UZXN0KGV4cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYword2lu
ZG93LnNldFRpbWVvdXQoInRyaWdnZXJVcGRhdGUoNDEsIDU5KSIsIDApOwordmFyIHN1Y2Nlc3Nm
dWxseVBhcnNlZCA9IHRydWU7CkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3Jp
cHQtdGVzdHMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9zdmcvYW5pbWF0aW9ucy9zY3JpcHQtdGVzdHMvc3ZnbnVtYmVybGlzdC1hbmltYXRp
b24tMi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3Njcmlw
dC10ZXN0cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLmpzCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDYwIEBACitkZXNjcmlwdGlvbigiVGVzdCAnYnknIGFuaW1hdGlvbiBvZiBTVkdOdW1iZXJM
aXN0IG9uICdyb3RhdGUnIGF0dHJpYnV0ZSBvZiB0ZXh0LiIpOworY3JlYXRlU1ZHVGVzdENhc2Uo
KTsKKworLy8gU2V0dXAgdGVzdCBkb2N1bWVudAordmFyIHRleHQgPSBjcmVhdGVTVkdFbGVtZW50
KCJ0ZXh0Iik7Cit0ZXh0LnRleHRDb250ZW50ID0gIkFCQ0QiOwordGV4dC5zZXRBdHRyaWJ1dGUo
ImlkIiwgInRleHQiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJ4IiwgIjQwIDYwIDgwIDEwMCIpOwor
dGV4dC5zZXRBdHRyaWJ1dGUoInkiLCAiNjAiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJyb3RhdGUi
LCAiMCA0NSA5MCAxNTMiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJmaWxsIiwgImdyZWVuIik7Cit0
ZXh0LnNldEF0dHJpYnV0ZSgib25jbGljayIsICJleGVjdXRlVGVzdCgpIik7CisKK3ZhciBhbmlt
YXRlID0gY3JlYXRlU1ZHRWxlbWVudCgiYW5pbWF0ZSIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUo
ImlkIiwgImFuaW1hdGlvbiIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImF0dHJpYnV0ZU5hbWUi
LCAicm90YXRlIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYmVnaW4iLCAiY2xpY2siKTsKK2Fu
aW1hdGUuc2V0QXR0cmlidXRlKCJkdXIiLCAiNHMiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJm
cm9tIiwgIjAgNDUgOTAgMTM1Iik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYnkiLCAiNDUgNDUg
NDUgNDUiKTsKK3RleHQuYXBwZW5kQ2hpbGQoYW5pbWF0ZSk7Cityb290U1ZHRWxlbWVudC5hcHBl
bmRDaGlsZCh0ZXh0KTsKKworLy8gU2V0dXAgYW5pbWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBs
ZTEoKSB7CisJc2hvdWxkQmUoInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSIs
ICIwIik7CisJc2hvdWxkQmUoInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgxKS52YWx1ZSIs
ICI0NSIpOworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMikudmFsdWUi
LCAiOTAiKTsKKwlzaG91bGRCZSgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVl
IiwgIjEzNSIpOworfQorCitmdW5jdGlvbiBzYW1wbGUyKCkgeworCXNob3VsZEJlQ2xvc2VFbm91
Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICIyMi41IiwgMC4wMSk7
CisJc2hvdWxkQmVDbG9zZUVub3VnaCgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDEpLnZh
bHVlIiwgIjY3LjUiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5h
bmltVmFsLmdldEl0ZW0oMikudmFsdWUiLCAiMTEyLjUiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3Nl
RW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFsdWUiLCAiMTU3LjUiLCAw
LjAxKTsKK30KKworZnVuY3Rpb24gc2FtcGxlMygpIHsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0
ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUiLCAiNDUiLCAwLjAxKTsKKwlzaG91
bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAi
OTAiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdl
dEl0ZW0oMikudmFsdWUiLCAiMTM1IiwgMC4wMSk7CisJc2hvdWxkQmVDbG9zZUVub3VnaCgidGV4
dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIiwgIjE4MCIsIDAuMDEpOworfQorCitm
dW5jdGlvbiBleGVjdXRlVGVzdCgpIHsKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgICAgLy8gW2FuaW1hdGlvbklkLCB0aW1lLCBlbGVtZW50SWQsIHNhbXBsZUNhbGxiYWNrXQor
ICAgICAgICBbImFuaW1hdGlvbiIsIDAuMCwgICAgInRleHQiLCBzYW1wbGUxXSwKKyAgICAgICAg
WyJhbmltYXRpb24iLCAyLjAsICAgICJ0ZXh0Iiwgc2FtcGxlMl0sCisgICAgICAgIFsiYW5pbWF0
aW9uIiwgMy45OTk5LCAidGV4dCIsIHNhbXBsZTNdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDQu
MCAsICAgInRleHQiLCBzYW1wbGUxXQorICAgIF07CisKKyAgICBydW5BbmltYXRpb25UZXN0KGV4
cGVjdGVkVmFsdWVzKTsKK30KKworLy8gQmVnaW4gdGVzdCBhc3luYword2luZG93LnNldFRpbWVv
dXQoInRyaWdnZXJVcGRhdGUoNDEsIDU5KSIsIDApOwordmFyIHN1Y2Nlc3NmdWxseVBhcnNlZCA9
IHRydWU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98606</attachid>
            <date>2011-06-25 14:24:46 -0700</date>
            <delta_ts>2011-06-25 14:33:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63387-20110625232442.patch</filename>
            <type>text/plain</type>
            <size>37176</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTEtMDYtMjUgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBTVkdBbmltYXRlZFR5cGUgc2hvdWxkIHN1cHBvcnQgU1ZHTnVtYmVy
TGlzdCBhbmltYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYzMzg3CisgICAgICAgIAorICAgICAgICBGb2xsb3cgdXAgb2YgIlNWR0FuaW1hdGlv
biBzaG91bGQgdXNlIGRpcmVjdCB1bml0IGFuaW1hdGlvbiBmb3IgU1ZHTGVuZ3RoIjogaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYxMzY4CisgICAgICAgIFRoaXMgcGF0
Y2ggY29udGludWVzIHRoZSBjb252ZXJzaW9uIHRvIHRoZSBuZXcgY29uY2VwdCBvZiBTVkdBbmlt
YXRvckZhY3Rvcnkgd2l0aCBTVkdOdW1iZXJMaXN0LgorICAgICAgICAKKyAgICAgICAgQW5pbWF0
aW9ucyBvZiBhdHRyaWJ1dGVzIHdpdGggdHlwZSBTVkdOdW1iZXJMaXN0IGNhbiBiZSBpbnRlcnBv
bGF0ZWQgbm93LgorCisgICAgICAgIFRlc3RzOiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0
LWFuaW1hdGlvbi0xLmh0bWwKKyAgICAgICAgICAgICAgIHN2Zy9hbmltYXRpb25zL3N2Z251bWJl
cmxpc3QtYW5pbWF0aW9uLTIuaHRtbAorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVk
IG5ldyBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFt
OiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUucHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6IE1ha2UgdXNlIG9mIGF0dHJpYnV0ZSB0eXBl
IEFuaW1hdGVkTnVtYmVyTGlzdC4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50
OjpkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1Rhcmdl
dCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFu
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZE51bWJlcik6
IE1hZGUgbWV0aG9kIHN0YXRpYyBmb3IgcmV1c2UgaW4gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IChh
bmQgU1ZHQW5pbWF0ZWROdW1iZXJPcHRpb25hbE51bWJlciBsYXRlcikuCisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKTog
VXNlIG5ldyBzdGF0aWMgZnVuY3Rpb24uCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHA6IEFkZGVkLiBOZXcg
YW5pbWF0b3IgZm9yIFNWR051bWJlckxpc3QuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZE51bWJlckxpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0
b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmlt
YXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1h
dG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkTnVtYmVy
TGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6
On5TVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcik6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5jcHA6IFVzZSBuZXcgQW5pbWF0b3IuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6On5TVkdBbmltYXRlZFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0
ZWRUeXBlOjpjcmVhdGVOdW1iZXJMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVk
VHlwZTo6bnVtYmVyTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OnZh
bHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1
ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6CisgICAgICAgICog
c3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0b3JG
YWN0b3J5OjpjcmVhdGUpOgorCiAyMDExLTA2LTI1ICBSb2IgQnVpcyAgPHJidWlzQHJpbS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTmlrb2xhcyBaaW1tZXJtYW5uLgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2NjAsNiArMTY2MCw3IEBAIElGIChFTkFCTEVfU1ZH
KQogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCisgICAgICAg
IHN2Zy9TVkdBbmltYXRlZE51bWJlckxpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKICAgICAgICAgc3Zn
L1NWR0FuaW1hdGVkU3RyaW5nLmNwcApJbmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFt
CShyZXZpc2lvbiA4OTc0NykKKysrIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0J
KHdvcmtpbmcgY29weSkKQEAgLTM0MzMsNiArMzQzMyw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBc
CiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoTGlzdC5oIFwKIAlTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuaCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVt
YmVyTGlzdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxpc3Qu
aCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBcCiAJU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmggXApJbmRleDogU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQkocmV2aXNpb24gODk3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTU3MTEsNiArNTcxMSw3IEBACiAgICAgICAgICAgICAnc3ZnL1NWR0Fu
aW1hdGVkQ29sb3IuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3Bw
JywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwJywKKyAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0Fu
aW1hdGVkUG9pbnRMaXN0LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkUmVjdC5j
cHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTMzMzgsNiArMzMzOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAgXAog
ICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIFwKICAgICAgICAgICAgICAg
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCBcCisgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRl
ZE51bWJlckxpc3QuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0
LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKICAgICAgICAg
ICAgICAgc3ZnL1NWR0FuaW1hdGVkU3RyaW5nLmNwcCBcCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiA4OTc0NykK
KysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtOTI5LDYgKzkyOSw3IEBACiAJCTQxRkEzMDNFMTMxNkMyOUMwMEMwQkZD
NSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQxRkEzMDNDMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRp
YUNvbnRyb2xzLmNwcCAqLzsgfTsKIAkJNDFGQTMwM0YxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRl
ck1lZGlhQ29udHJvbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQxRkEzMDNEMTMxNkMyOUMwMEMwQkZDNSAvKiBSZW5kZXJNZWRpYUNvbnRyb2xzLmgg
Ki87IH07CiAJCTQzMTQyRTdBMTNCMUU5NzcwMEYxQzg3MSAvKiBTVkdBbmltYXRlZFJlY3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMxNDJFNzkx
M0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgKi87IH07CisJCTQzMzFBQzc4
MTNCNjg3MDAwMEE5RTVBRSAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDMzMUFDNzcxM0I2ODcwMDAwQTlF
NUFFIC8qIFNWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAgKi87IH07CiAJCTQzNThFODZBMTM2MEEy
MTYwMEU0NzQ4QyAvKiBET01TVkdGRURyb3BTaGFkb3dFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzU4RTg2NzEzNjBBMjE2MDBFNDc0OEMg
LyogRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5oICovOyB9OwogCQk0MzU4RTg2QjEzNjBBMjE2
MDBFNDc0OEMgLyogRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzNThFODY4MTM2MEEyMTYwMEU0NzQ4QyAv
KiBET01TVkdGRURyb3BTaGFkb3dFbGVtZW50Lm1tICovOyB9OwogCQk0MzU4RTg2QzEzNjBBMjE2
MDBFNDc0OEMgLyogRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudEludGVybmFsLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0MzU4RTg2OTEzNjBBMjE2MDBF
NDc0OEMgLyogRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudEludGVybmFsLmggKi87IH07CkBAIC03
Mzg2LDYgKzczODcsNyBAQAogCQk0MUZBMzAzQzEzMTZDMjlDMDBDMEJGQzUgLyogUmVuZGVyTWVk
aWFDb250cm9scy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5k
ZXJNZWRpYUNvbnRyb2xzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDFGQTMw
M0QxMzE2QzI5QzAwQzBCRkM1IC8qIFJlbmRlck1lZGlhQ29udHJvbHMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVkaWFDb250cm9scy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk0MzE0MkU3OTEzQjFFOTc3MDBGMUM4NzEgLyogU1ZHQW5pbWF0ZWRS
ZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVk
UmVjdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQzMzFBQzc3MTNCNjg3MDAw
MEE5RTVBRSAvKiBTVkdBbmltYXRlZE51bWJlckxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDM1OEU4NjcxMzYwQTIxNjAwRTQ3NDhDIC8qIERPTVNWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MzU4
RTg2ODEzNjBBMjE2MDBFNDc0OEMgLyogRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERPTVNWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzNThFODY5MTM2MEEyMTYw
MEU0NzQ4QyAvKiBET01TVkdGRURyb3BTaGFkb3dFbGVtZW50SW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NU1ZHRkVEcm9wU2hhZG93RWxlbWVudEludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQwMSw2ICsxNzQwMyw3IEBACiAJ
CQkJNDNBMEYwQjAxM0FDN0Q2RDAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCAqLywK
IAkJCQkwOEIzNUIxMjEyN0I2QTdDMDA1MzE0REQgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaCAqLywK
IAkJCQlCMjIyNzdFQzBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWROdW1iZXIuaWRsICov
LAorCQkJCTQzMzFBQzc3MTNCNjg3MDAwMEE5RTVBRSAvKiBTVkdBbmltYXRlZE51bWJlckxpc3Qu
Y3BwICovLAogCQkJCTA4QjM1QjE2MTI3QjZBODgwMDUzMTRERCAvKiBTVkdBbmltYXRlZE51bWJl
ckxpc3QuaCAqLywKIAkJCQlCMjIyNzdFRDBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRO
dW1iZXJMaXN0LmlkbCAqLywKIAkJCQk0M0I5MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5p
bWF0ZWRQb2ludExpc3QuaCAqLywKQEAgLTI1ODE5LDYgKzI1ODIyLDcgQEAKIAkJCQk0M0E2MjY2
NzEzQjNEMTEwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMDg3NTU4QzUxM0I0QTU3RDAwRjQ5MzA3IC8qIFN1cnJvZ2F0ZVBhaXJBd2FyZVRleHRJ
dGVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkzNzZEQ0NFMTEzQjRGOTY2MDAyRUJFRkMg
LyogVGV4dFJ1bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0MzMxQUM3ODEzQjY4NzAwMDBBOUU1
QUUgLyogU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCShyZXZpc2lvbiA4OTc0NykKKysrIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAK
ICNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExl
bmd0aC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIgorI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3Qu
Y3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0
ZWRTdHJpbmcuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCShyZXZpc2lvbiA4OTc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMyw3ICsxMTMsNiBAQCBBbmltYXRlZEF0dHJp
YnV0ZVR5cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6CiAgICAgICAgIHJldHVybiBBbmltYXRlZEFuZ2xl
OwogICAgIGNhc2UgQW5pbWF0ZWRCb29sZWFuOgogICAgIGNhc2UgQW5pbWF0ZWRFbnVtZXJhdGlv
bjoKLSAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
T3B0aW9uYWxOdW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aExpc3Q6CiAgICAgY2FzZSBB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW86CkBAIC0xMjYsNiArMTI1LDggQEAgQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlIFNWR0FuaW1hdGVFbGVtZW50OgogICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2Vy
OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgICAgIHJldHVybiBBbmltYXRlZE51bWJl
cjsKKyAgICBjYXNlIEFuaW1hdGVkTnVtYmVyTGlzdDoKKyAgICAgICAgcmV0dXJuIEFuaW1hdGVk
TnVtYmVyTGlzdDsKICAgICBjYXNlIEFuaW1hdGVkUGF0aDoKICAgICAgICAgcmV0dXJuIEFuaW1h
dGVkUGF0aDsKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgpAQCAtMTk5LDYgKzIwMCw3IEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICBjYXNlIEFuaW1hdGVk
Q29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVy
OgorICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6
CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzogewpAQCAt
Mjc0LDYgKzI3Niw3IEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQK
ICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBj
YXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgY2FzZSBBbmlt
YXRlZFN0cmluZzoKQEAgLTI5OSw2ICszMDIsNyBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50Ojpj
YWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAgIGNhc2UgQW5pbWF0
ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKKyAgICBjYXNlIEFuaW1hdGVkTnVt
YmVyTGlzdDoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0
OgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CkBAIC0zMjgsNiArMzMyLDcgQEAgdm9pZCBTVkdB
bmltYXRlRWxlbWVudDo6cmVzZXRUb0Jhc2VWYWx1ZQogICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoK
ICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CisgICAg
Y2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKICAgICBj
YXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOiB7CkBAIC0zNjQsNiAr
MzY5LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQogICAgIGNh
c2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5p
bWF0ZWROdW1iZXI6CisgICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CiAgICAgY2FzZSBBbmlt
YXRlZFBvaW50czoKICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKICAgICBjYXNlIEFuaW1hdGVkU3Ry
aW5nOgpAQCAtMzg3LDYgKzM5Myw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxh
dGVEaXN0YW4KICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgorICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0
OgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAg
Y2FzZSBBbmltYXRlZFN0cmluZzoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZE51bWJlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
TnVtYmVyLmNwcAkocmV2aXNpb24gODk3NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZWROdW1iZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2NywyNSBAQCB2b2lkIFNW
R0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0CiAgICAgdG8tPm51bWJlcigpICs9IGZy
b20tPm51bWJlcigpOwogfQogCit2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkTnVtYmVyKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQs
IGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LCBmbG9hdCYgYW5pbWF0ZWRO
dW1iZXIsIGZsb2F0IGZyb21OdW1iZXIsIGZsb2F0IHRvTnVtYmVyKQoreworICAgIGZsb2F0IG51
bWJlcjsKKyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+Y2FsY01vZGUoKSA9PSBDYWxjTW9kZURp
c2NyZXRlKQorICAgICAgICBudW1iZXIgPSBwZXJjZW50YWdlIDwgMC41ID8gZnJvbU51bWJlciA6
IHRvTnVtYmVyOworICAgIGVsc2UKKyAgICAgICAgbnVtYmVyID0gKHRvTnVtYmVyIC0gZnJvbU51
bWJlcikgKiBwZXJjZW50YWdlICsgZnJvbU51bWJlcjsKKyAgICAgICAgCisgICAgLy8gRklYTUU6
IFRoaXMgaXMgbm90IGNvcnJlY3QgZm9yIHZhbHVlcyBhbmltYXRpb24uIFJpZ2h0IG5vdyB3ZSB0
cmFuc2Zvcm0gdmFsdWVzLWFuaW1hdGlvbiB0byBtdWx0aXBsZSBmcm9tLXRvLWFuaW1hdGlvbnMg
YW5kCisgICAgLy8gYWNjdW11bGF0ZSBldmVyeSBzaW5nbGUgdmFsdWUgdG8gdGhlIHByZXZpb3Vz
IG9uZS4gQnV0IGFjY3VtdWxhdGlvbiBzaG91bGQganVzdCB0YWtlIGludG8gYWNjb3VudCBhZnRl
ciBhIGNvbXBsZXRlIGN5Y2xlCisgICAgLy8gb2YgdmFsdWVzLWFuaW1haXRvbi4gU2VlIGV4YW1w
bGUgYXQ6IGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDEvUkVDLXNtaWwtYW5pbWF0aW9uLTIwMDEw
OTA0LyNSZXBlYXRpbmdBbmltCisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWNjdW11bGF0
ZWQoKSAmJiByZXBlYXRDb3VudCkKKyAgICAgICAgbnVtYmVyICs9IHRvTnVtYmVyICogcmVwZWF0
Q291bnQ7CisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmlzQWRkaXRpdmUoKSAmJiBhbmltYXRp
b25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgIT0gVG9BbmltYXRpb24pCisgICAgICAgIGFuaW1h
dGVkTnVtYmVyICs9IG51bWJlcjsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVkTnVtYmVyID0g
bnVtYmVyOworfQorCiB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQogewpAQCAtOTMsMjIgKzExMiw4IEBAIHZv
aWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXQKICAgICAgICAgYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5pbWF0aW9u
RWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCB0b051bWJlclN0cmluZyk7CiAgICAgICAgIHBhcnNl
TnVtYmVyRnJvbVN0cmluZyh0b051bWJlclN0cmluZywgdG9OdW1iZXIpOyAKICAgICB9Ci0KLSAg
ICBmbG9hdCBudW1iZXI7Ci0gICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQtPmNhbGNNb2RlKCkgPT0g
Q2FsY01vZGVEaXNjcmV0ZSkKLSAgICAgICAgbnVtYmVyID0gcGVyY2VudGFnZSA8IDAuNWYgPyBm
cm9tTnVtYmVyIDogdG9OdW1iZXI7Ci0gICAgZWxzZQotICAgICAgICBudW1iZXIgPSAodG9OdW1i
ZXIgLSBmcm9tTnVtYmVyKSAqIHBlcmNlbnRhZ2UgKyBmcm9tTnVtYmVyOwogICAgIAotICAgIC8v
IEZJWE1FOiBUaGlzIGlzIG5vdCBjb3JyZWN0IGZvciB2YWx1ZXMgYW5pbWF0aW9uLiBSaWdodCBu
b3cgd2UgdHJhbnNmb3JtIHZhbHVlcy1hbmltYXRpb24gdG8gbXVsdGlwbGUgZnJvbS10by1hbmlt
YXRpb25zIGFuZAotICAgIC8vIGFjY3VtdWxhdGUgZXZlcnkgc2luZ2xlIHZhbHVlIHRvIHRoZSBw
cmV2aW91cyBvbmUuIEJ1dCBhY2N1bXVsYXRpb24gc2hvdWxkIGp1c3QgdGFrZSBpbnRvIGFjY291
bnQgYWZ0ZXIgYSBjb21wbGV0ZSBjeWNsZQotICAgIC8vIG9mIHZhbHVlcy1hbmltYWl0b24uIFNl
ZSBleGFtcGxlIGF0OiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy1zbWlsLWFuaW1hdGlv
bi0yMDAxMDkwNC8jUmVwZWF0aW5nQW5pbQotICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5pc0Fj
Y3VtdWxhdGVkKCkgJiYgcmVwZWF0Q291bnQpCi0gICAgICAgIG51bWJlciArPSB0b051bWJlciAq
IHJlcGVhdENvdW50OwotICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgJiYg
YW5pbWF0aW9uTW9kZSAhPSBUb0FuaW1hdGlvbikKLSAgICAgICAgYW5pbWF0ZWROdW1iZXIgKz0g
bnVtYmVyOwotICAgIGVsc2UKLSAgICAgICAgYW5pbWF0ZWROdW1iZXIgPSBudW1iZXI7CisgICAg
Y2FsY3VsYXRlQW5pbWF0ZWROdW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVw
ZWF0Q291bnQsIGFuaW1hdGVkTnVtYmVyLCBmcm9tTnVtYmVyLCB0b051bWJlcik7CiB9CiAKIGZs
b2F0IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0
cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCShyZXZpc2lvbiA4OTc0NykKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCw2ICs0
OCw4IEBAIHB1YmxpYzoKICAgICBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlv
bkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcigpIHsgfQogICAgIAorICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkTnVt
YmVyKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBl
YXRDb3VudCwgZmxvYXQmIGFuaW1hdGVkTnVtYmVyLCBmbG9hdCBmcm9tTnVtYmVyLCBmbG9hdCB0
b051bWJlcik7CisgICAgCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4g
Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOwpJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxMTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1p
dGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lm
IEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2luY2x1ZGUgIlNWR0FuaW1h
dGVkTnVtYmVyTGlzdC5oIgorCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNs
dWRlICJTVkdBbmltYXRlZE51bWJlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0Fu
aW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcihT
VkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0
RWxlbWVudCkKKyAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkTnVtYmVyTGlz
dCwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCit7Cit9CisKK1Bhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y29uc3RydWN0
RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlTnVtYmVyTGlzdChu
ZXcgU1ZHTnVtYmVyTGlzdCk7CisgICAgYW5pbXRlZFR5cGUtPm51bWJlckxpc3QoKS5wYXJzZShz
dHJpbmcpOworICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7CisgICAg
QVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQp
OworICAgIAorICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAg
IHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0
ZWROdW1iZXJMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCit7CisgICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAg
IAorICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0g
Y29uc3RydWN0RnJvbVN0cmluZyhieVN0cmluZyk7CisgICAgCisgICAgU1ZHTnVtYmVyTGlzdCYg
ZnJvbU51bWJlckxpc3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7CisgICAgU1ZHTnVtYmVyTGlzdCYg
dG9OdW1iZXJMaXN0ID0gdG8tPm51bWJlckxpc3QoKTsKKyAgICAKKyAgICB1bnNpZ25lZCBzaXpl
ID0gZnJvbU51bWJlckxpc3Quc2l6ZSgpOworICAgIGlmIChzaXplICE9IHRvTnVtYmVyTGlzdC5z
aXplKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBz
aXplOyArK2kpCisgICAgICAgIHRvTnVtYmVyTGlzdFtpXSArPSBmcm9tTnVtYmVyTGlzdFtpXTsK
K30KKwordm9pZCBTVkdBbmltYXRlZE51bWJlckxpc3RBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0
ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQoreworICAgIEFTU0VSVChtX2FuaW1hdGlv
bkVsZW1lbnQpOworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKworICAgIFNWR0FuaW1h
dGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1l
bnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOyAgICAKKyAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlv
bk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCk7CisKKyAgICAvLyBUbyBh
bmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFuaW1h
dGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCisgICAgU1ZHTnVtYmVyTGlzdCYgZnJvbU51bWJlckxp
c3QgPSBmcm9tLT5udW1iZXJMaXN0KCk7CisgICAgU1ZHTnVtYmVyTGlzdCYgYW5pbWF0ZWROdW1i
ZXJMaXN0ID0gYW5pbWF0ZWQtPm51bWJlckxpc3QoKTsKKyAgICBpZiAoYW5pbWF0aW9uTW9kZSA9
PSBUb0FuaW1hdGlvbikKKyAgICAgICAgZnJvbU51bWJlckxpc3QgPSBhbmltYXRlZE51bWJlckxp
c3Q7CisKKyAgICBTVkdOdW1iZXJMaXN0JiB0b051bWJlckxpc3QgPSB0by0+bnVtYmVyTGlzdCgp
OworICAgIEFTU0VSVCh0b051bWJlckxpc3QpOworCisgICAgdW5zaWduZWQgaXRlbXNDb3VudCA9
IGZyb21OdW1iZXJMaXN0LnNpemUoKTsKKyAgICBpZiAoaXRlbXNDb3VudCAhPSB0b051bWJlckxp
c3Quc2l6ZSgpKSB7CisgICAgICAgIGlmIChwZXJjZW50YWdlIDwgMC41KSB7CisgICAgICAgICAg
ICBpZiAoYW5pbWF0aW9uTW9kZSAhPSBUb0FuaW1hdGlvbikKKyAgICAgICAgICAgICAgICBhbmlt
YXRlZE51bWJlckxpc3QgPSBmcm9tTnVtYmVyTGlzdDsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICBhbmltYXRlZE51bWJlckxpc3QgPSB0b051bWJlckxpc3Q7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGl0ZW1zQ291bnQ7ICsr
aSkKKyAgICAgICAgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRO
dW1iZXIoYW5pbWF0aW9uRWxlbWVudCwgcGVyY2VudGFnZSwgcmVwZWF0Q291bnQsIGFuaW1hdGVk
TnVtYmVyTGlzdFtpXSwgZnJvbU51bWJlckxpc3RbaV0sIHRvTnVtYmVyTGlzdFtpXSk7Cit9CisK
K2Zsb2F0IFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FOiBEaXN0YW5jZSBj
YWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR051bWJlckxpc3QgcmlnaHQgbm93LiBX
ZSBuZWVkIHRoZSBkaXN0YW5jZSBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgorICAgIHJldHVybiAt
MTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJ
T04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyTGlzdC5oCShy
ZXZpc2lvbiA4OTc0NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlckxp
c3QuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsNyBAQAogCiAjaWYgRU5BQkxFKFNWRykK
ICNpbmNsdWRlICJTVkdBbmltYXRlZExpc3RQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJT
VkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzQsNiArMzUsMjUgQEAgREVDTEFSRV9BTklNQVRFRF9M
SVNUX1BST1BFUlRZKFNWR0FuaW1hdAogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9OVU1CRVJf
TElTVChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0
eSkgXAogREVGSU5FX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1
dGUsIERPTUF0dHJpYnV0ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0LCBTVkdO
dW1iZXJMaXN0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQorICAgIAorI2lmIEVOQUJM
RShTVkdfQU5JTUFUSU9OKQorY2xhc3MgU1ZHQW5pbWF0aW9uRWxlbWVudDsKKworY2xhc3MgU1ZH
QW5pbWF0ZWROdW1iZXJMaXN0QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IgeworICAgIAorcHVibGljOgorICAgIFNWR0FuaW1hdGVkTnVtYmVyTGlzdEFuaW1hdG9yKFNW
R0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0
ZWROdW1iZXJMaXN0QW5pbWF0b3IoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOworICAg
IAorICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKKyAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCBy
ZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZp
cnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKK307CisjZW5kaWYgLy8gRU5BQkxFKFNWR19BTklNQVRJ
T04pCiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkVHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJTVkdBbmdsZS5oIgogI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZH
TGVuZ3RoLmgiCisjaW5jbHVkZSAiU1ZHTnVtYmVyTGlzdC5oIgogI2luY2x1ZGUgIlNWR1BhcnNl
clV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlNWR1BvaW50TGlzdC5oIgogCkBAIC01MSw2ICs1Miw5
IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSgpCiAgICAgY2FzZSBBbmltYXRl
ZE51bWJlcjoKICAgICAgICAgZGVsZXRlIG1fZGF0YS5udW1iZXI7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgorICAgICAgICBkZWxldGUgbV9kYXRhLm51bWJl
ckxpc3Q7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAg
IGRlbGV0ZSBtX2RhdGEucG9pbnRMaXN0OwogICAgICAgICBicmVhazsKQEAgLTk4LDYgKzEwMiwx
NCBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWRUCiAgICAgcmV0dXJu
IGFuaW1hdGVkVHlwZS5yZWxlYXNlKCk7CiB9CiAKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZU51bWJlckxpc3QoU1ZHTnVtYmVyTGlzdCogbnVtYmVy
TGlzdCkKK3sKKyAgICBBU1NFUlQobnVtYmVyTGlzdCk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gYW5pbWF0ZWRUeXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRl
ZE51bWJlckxpc3QpKTsKKyAgICBhbmltYXRlZFR5cGUtPm1fZGF0YS5udW1iZXJMaXN0ID0gbnVt
YmVyTGlzdDsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKK30KKwogUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUG9pbnRMaXN0KFNW
R1BvaW50TGlzdCogcG9pbnRMaXN0KQogewogICAgIEFTU0VSVChwb2ludExpc3QpOwpAQCAtMTQ2
LDYgKzE1OCwxMiBAQCBmbG9hdCYgU1ZHQW5pbWF0ZWRUeXBlOjpudW1iZXIoKQogICAgIHJldHVy
biAqbV9kYXRhLm51bWJlcjsKIH0KIAorU1ZHTnVtYmVyTGlzdCYgU1ZHQW5pbWF0ZWRUeXBlOjpu
dW1iZXJMaXN0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTnVtYmVyTGlzdCk7
CisgICAgcmV0dXJuICptX2RhdGEubnVtYmVyTGlzdDsKK30KKwogU1ZHUG9pbnRMaXN0JiBTVkdB
bmltYXRlZFR5cGU6OnBvaW50TGlzdCgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRl
ZFBvaW50cyk7CkBAIC0xNzksNiArMTk3LDkgQEAgU3RyaW5nIFNWR0FuaW1hdGVkVHlwZTo6dmFs
dWVBc1N0cmluZygpCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICAgICAgQVNTRVJUKG1f
ZGF0YS5udW1iZXIpOwogICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIoKm1fZGF0YS5udW1i
ZXIpOworICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0OgorICAgICAgICBBU1NFUlQobV9kYXRh
Lm51bWJlckxpc3QpOworICAgICAgICByZXR1cm4gbV9kYXRhLm51bWJlckxpc3QtPnZhbHVlQXNT
dHJpbmcoKTsKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgICAgICBBU1NFUlQobV9kYXRh
LnBvaW50TGlzdCk7CiAgICAgICAgIHJldHVybiBtX2RhdGEucG9pbnRMaXN0LT52YWx1ZUFzU3Ry
aW5nKCk7CkBAIC0yMTYsNiArMjM3LDEwIEBAIGJvb2wgU1ZHQW5pbWF0ZWRUeXBlOjpzZXRWYWx1
ZUFzU3RyaW5nKGMKICAgICAgICAgQVNTRVJUKG1fZGF0YS5udW1iZXIpOwogICAgICAgICBwYXJz
ZU51bWJlckZyb21TdHJpbmcodmFsdWUsICptX2RhdGEubnVtYmVyKTsKICAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBBbmltYXRlZE51bWJlckxpc3Q6CisgICAgICAgIEFTU0VSVChtX2RhdGEubnVt
YmVyTGlzdCk7CisgICAgICAgIG1fZGF0YS5udW1iZXJMaXN0LT5wYXJzZSh2YWx1ZSk7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgICAgIEFTU0VSVChtX2Rh
dGEucG9pbnRMaXN0KTsKICAgICAgICAgbV9kYXRhLnBvaW50TGlzdC0+Y2xlYXIoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDg5NzQ3KQorKysgU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2
ICsyOSw3IEBAIGNsYXNzIENvbG9yOwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgU1ZHQW5nbGU7
CiBjbGFzcyBTVkdMZW5ndGg7CitjbGFzcyBTVkdOdW1iZXJMaXN0OwogY2xhc3MgU1ZHUG9pbnRM
aXN0OwogCiBjbGFzcyBTVkdBbmltYXRlZFR5cGUgewpAQCAtNDAsNiArNDEsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVDb2xvcihDb2xv
ciopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTGVuZ3Ro
KFNWR0xlbmd0aCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlTnVtYmVyKGZsb2F0Kik7CisgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjcmVhdGVOdW1iZXJMaXN0KFNWR051bWJlckxpc3QqKTsKICAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50TGlzdChTVkdQb2ludExpc3QqKTsKICAgICBz
dGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3QoRmxvYXRSZWN0Kik7
CiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoU3Ry
aW5nKik7CkBAIC01MCw2ICs1Miw3IEBAIHB1YmxpYzoKICAgICBDb2xvciYgY29sb3IoKTsKICAg
ICBTVkdMZW5ndGgmIGxlbmd0aCgpOwogICAgIGZsb2F0JiBudW1iZXIoKTsKKyAgICBTVkdOdW1i
ZXJMaXN0JiBudW1iZXJMaXN0KCk7CiAgICAgU1ZHUG9pbnRMaXN0JiBwb2ludExpc3QoKTsKICAg
ICBGbG9hdFJlY3QmIHJlY3QoKTsKICAgICBTdHJpbmcmIHN0cmluZygpOwpAQCAtNzMsNiArNzYs
NyBAQCBwcml2YXRlOgogICAgICAgICBDb2xvciogY29sb3I7CiAgICAgICAgIFNWR0xlbmd0aCog
bGVuZ3RoOwogICAgICAgICBmbG9hdCogbnVtYmVyOworICAgICAgICBTVkdOdW1iZXJMaXN0KiBu
dW1iZXJMaXN0OwogICAgICAgICBTVkdQb2ludExpc3QqIHBvaW50TGlzdDsKICAgICAgICAgRmxv
YXRSZWN0KiByZWN0OwogICAgICAgICBTdHJpbmcqIHN0cmluZzsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlzaW9uIDg5NzQ3KQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsy
NSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKKyNpbmNsdWRlICJT
VkdBbmltYXRlZE51bWJlckxpc3QuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5o
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3Ry
aW5nLmgiCkBAIC01MCw2ICs1MSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250
ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgIGNhc2UgQW5pbWF0ZWROdW1iZXJMaXN0
OgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJlckxpc3RB
bmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNl
IEFuaW1hdGVkUG9pbnRzOgogICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gODk3NDcpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNyBAQAor
MjAxMS0wNi0yNSAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJraXQub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNWR0FuaW1hdGVkVHlwZSBzaG91
bGQgc3VwcG9ydCBTVkdOdW1iZXJMaXN0IGFuaW1hdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjMzODcKKworICAgICAgICBUZXN0IGFuaW1hdGlv
biBvZiBhdHRyaWJ1dGVzIHdpdGggdHlwZSBTVkdOdW1iZXJMaXN0LgorCisgICAgICAgICogc3Zn
L2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTEuanM6IEFk
ZGVkLgorICAgICAgICAoc2FtcGxlMSk6CisgICAgICAgIChzYW1wbGUyKToKKyAgICAgICAgKHNh
bXBsZTMpOgorICAgICAgICAoZXhlY3V0ZVRlc3QpOgorICAgICAgICAqIHN2Zy9hbmltYXRpb25z
L3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNhbXBsZTEpOgorICAgICAgICAoc2FtcGxlMik6CisgICAgICAgIChzYW1wbGUzKToKKyAg
ICAgICAgKGV4ZWN1dGVUZXN0KToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9ucy9zdmdudW1iZXJs
aXN0LWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2FuaW1h
dGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBz
dmcvYW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi5o
dG1sOiBBZGRlZC4KKwogMjAxMS0wNi0yNSAgQmFsYXpzIEtlbGVtZW4gIDxrYmFsYXpzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gR2FyZGVuaW5nLgpJbmRleDogTGF5b3V0VGVz
dHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1h
bmltYXRpb24tMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcv
YW5pbWF0aW9ucy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0xLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwyOCBAQAorU1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0cwor
CitBQkNECitUZXN0IFNWR051bWJlckxpc3QgYW5pbWF0aW9uIG9uICdyb3RhdGUnIGF0dHJpYnV0
ZSBvZiB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXh0LnJv
dGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0
ZW0oMikudmFsdWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFs
dWUgaXMgMAorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMjIu
NQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNDUKK1BBU1Mg
dGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDY3LjUKK1BBU1MgdGV4dC5y
b3RhdGUuYW5pbVZhbC5nZXRJdGVtKDMpLnZhbHVlIGlzIDkwCitQQVNTIHRleHQucm90YXRlLmFu
aW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyA0NQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdl
dEl0ZW0oMSkudmFsdWUgaXMgOTAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIp
LnZhbHVlIGlzIDEzNQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFsdWUg
aXMgMTgwCitQQVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyAwCitQ
QVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyAwCitQQVNTIHRleHQu
cm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSBpcyAwCitQQVNTIHRleHQucm90YXRlLmFu
aW1WYWwuZ2V0SXRlbSgzKS52YWx1ZSBpcyAwCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTEuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9u
LTEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1zdHlsZS5j
c3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5hbWljLXVwZGF0ZXMvcmVzb3VyY2VzL1NW
R1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvU1ZHQW5pbWF0
aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+U1ZHIDEuMSBk
eW5hbWljIGFuaW1hdGlvbiB0ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdmdudW1i
ZXJsaXN0LWFuaW1hdGlvbi0xLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251
bWJlcmxpc3QtYW5pbWF0aW9uLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjggQEAKK1NWRyAxLjEgZHluYW1pYyBhbmltYXRp
b24gdGVzdHMKKworQUJDRAorVGVzdCAnYnknIGFuaW1hdGlvbiBvZiBTVkdOdW1iZXJMaXN0IG9u
ICdyb3RhdGUnIGF0dHJpYnV0ZSBvZiB0ZXh0LgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
CisKKworUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMAorUEFT
UyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNDUKK1BBU1MgdGV4dC5y
b3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDkwCitGQUlMIHRleHQucm90YXRlLmFu
aW1WYWwuZ2V0SXRlbSgzKS52YWx1ZSBzaG91bGQgYmUgMTM1LiBXYXMgMTUzLgorUEFTUyB0ZXh0
LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMCkudmFsdWUgaXMgMjIuNQorUEFTUyB0ZXh0LnJvdGF0
ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUgaXMgNjcuNQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMikudmFsdWUgaXMgMTEyLjUKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5n
ZXRJdGVtKDMpLnZhbHVlIGlzIDE1Ny41CitQQVNTIHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRl
bSgwKS52YWx1ZSBpcyA0NQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFs
dWUgaXMgOTAKK1BBU1MgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDIpLnZhbHVlIGlzIDEz
NQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFsdWUgaXMgMTgwCitQQVNT
IHRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSBpcyAwCitQQVNTIHRleHQucm90
YXRlLmFuaW1WYWwuZ2V0SXRlbSgxKS52YWx1ZSBpcyA0NQorUEFTUyB0ZXh0LnJvdGF0ZS5hbmlt
VmFsLmdldEl0ZW0oMikudmFsdWUgaXMgOTAKK0ZBSUwgdGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJ
dGVtKDMpLnZhbHVlIHNob3VsZCBiZSAxMzUuIFdhcyAxNTMuCitQQVNTIHN1Y2Nlc3NmdWxseVBh
cnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Fu
aW1hdGlvbnMvc3ZnbnVtYmVybGlzdC1hbmltYXRpb24tMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTIuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3N2Z251bWJlcmxpc3Qt
YW5pbWF0aW9uLTIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBF
IEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9keW5hbWljLXVwZGF0ZXMvcmVz
b3VyY2VzL1NWR1Rlc3RDYXNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
U1ZHQW5pbWF0aW9uVGVzdENhc2UuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aDE+
U1ZHIDEuMSBkeW5hbWljIGFuaW1hdGlvbiB0ZXN0czwvaDE+Cis8cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0
cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1i
ZXJsaXN0LWFuaW1hdGlvbi0xLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9hbmlt
YXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0xLmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMvc2NyaXB0LXRlc3RzL3N2Z251bWJl
cmxpc3QtYW5pbWF0aW9uLTEuanMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjAgQEAKK2Rlc2Ny
aXB0aW9uKCJUZXN0IFNWR051bWJlckxpc3QgYW5pbWF0aW9uIG9uICdyb3RhdGUnIGF0dHJpYnV0
ZSBvZiB0ZXh0LiIpOworY3JlYXRlU1ZHVGVzdENhc2UoKTsKKworLy8gU2V0dXAgdGVzdCBkb2N1
bWVudAordmFyIHRleHQgPSBjcmVhdGVTVkdFbGVtZW50KCJ0ZXh0Iik7Cit0ZXh0LnRleHRDb250
ZW50ID0gIkFCQ0QiOwordGV4dC5zZXRBdHRyaWJ1dGUoImlkIiwgInJlY3QiKTsKK3RleHQuc2V0
QXR0cmlidXRlKCJ4IiwgIjQwIDYwIDgwIDEwMCIpOwordGV4dC5zZXRBdHRyaWJ1dGUoInkiLCAi
NjAiKTsKK3RleHQuc2V0QXR0cmlidXRlKCJyb3RhdGUiLCAiMCAwIDAgMCIpOwordGV4dC5zZXRB
dHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4iKTsKK3RleHQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwg
ImV4ZWN1dGVUZXN0KCkiKTsKKwordmFyIGFuaW1hdGUgPSBjcmVhdGVTVkdFbGVtZW50KCJhbmlt
YXRlIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiaWQiLCAiYW5pbWF0aW9uIik7CithbmltYXRl
LnNldEF0dHJpYnV0ZSgiYXR0cmlidXRlTmFtZSIsICJyb3RhdGUiKTsKK2FuaW1hdGUuc2V0QXR0
cmlidXRlKCJiZWdpbiIsICJjbGljayIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0
cyIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImZyb20iLCAiMCAwIDAgMCIpOworYW5pbWF0ZS5z
ZXRBdHRyaWJ1dGUoInRvIiwgIjQ1IDkwIDEzNSAxODAiKTsKK3RleHQuYXBwZW5kQ2hpbGQoYW5p
bWF0ZSk7Cityb290U1ZHRWxlbWVudC5hcHBlbmRDaGlsZCh0ZXh0KTsKKworLy8gU2V0dXAgYW5p
bWF0aW9uIHRlc3QKK2Z1bmN0aW9uIHNhbXBsZTEoKSB7CisJc2hvdWxkQmUoInRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICIwIik7CisJc2hvdWxkQmUoInRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgxKS52YWx1ZSIsICIwIik7CisJc2hvdWxkQmUoInRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSIsICIwIik7CisJc2hvdWxkQmUoInRleHQucm90YXRl
LmFuaW1WYWwuZ2V0SXRlbSgzKS52YWx1ZSIsICIwIik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIo
KSB7CisJc2hvdWxkQmVDbG9zZUVub3VnaCgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDAp
LnZhbHVlIiwgIjIyLjUiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0
ZS5hbmltVmFsLmdldEl0ZW0oMSkudmFsdWUiLCAiNDUiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3Nl
RW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMikudmFsdWUiLCAiNjcuNSIsIDAu
MDEpOworCXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgz
KS52YWx1ZSIsICI5MCIsIDAuMDEpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworCXNob3Vs
ZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI0
NSIsIDAuMDEpOworCXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0
SXRlbSgxKS52YWx1ZSIsICI5MCIsIDAuMDEpOworCXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQu
cm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSIsICIxMzUiLCAwLjAxKTsKKwlzaG91bGRC
ZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFsdWUiLCAiMTgw
IiwgMC4wMSk7Cit9CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVj
dGVkVmFsdWVzID0gWworICAgICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCwg
c2FtcGxlQ2FsbGJhY2tdCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMC4wLCAgICAicmVjdCIsIHNh
bXBsZTFdLAorICAgICAgICBbImFuaW1hdGlvbiIsIDIuMCwgICAgInJlY3QiLCBzYW1wbGUyXSwK
KyAgICAgICAgWyJhbmltYXRpb24iLCAzLjk5OTksICJyZWN0Iiwgc2FtcGxlM10sCisgICAgICAg
IFsiYW5pbWF0aW9uIiwgNC4wICwgICAicmVjdCIsIHNhbXBsZTFdCisgICAgXTsKKworICAgIHJ1
bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMpOworfQorCisvLyBCZWdpbiB0ZXN0IGFzeW5j
Cit3aW5kb3cuc2V0VGltZW91dCgidHJpZ2dlclVwZGF0ZSg0MSwgNTkpIiwgMCk7Cit2YXIgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsKSW5kZXg6IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25z
L3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0LWFuaW1hdGlvbi0yLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3N2Zy9hbmltYXRpb25zL3NjcmlwdC10ZXN0cy9zdmdudW1iZXJsaXN0LWFu
aW1hdGlvbi0yLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2FuaW1hdGlvbnMv
c2NyaXB0LXRlc3RzL3N2Z251bWJlcmxpc3QtYW5pbWF0aW9uLTIuanMJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjAgQEAKK2Rlc2NyaXB0aW9uKCJUZXN0ICdieScgYW5pbWF0aW9uIG9mIFNWR051
bWJlckxpc3Qgb24gJ3JvdGF0ZScgYXR0cmlidXRlIG9mIHRleHQuIik7CitjcmVhdGVTVkdUZXN0
Q2FzZSgpOworCisvLyBTZXR1cCB0ZXN0IGRvY3VtZW50Cit2YXIgdGV4dCA9IGNyZWF0ZVNWR0Vs
ZW1lbnQoInRleHQiKTsKK3RleHQudGV4dENvbnRlbnQgPSAiQUJDRCI7Cit0ZXh0LnNldEF0dHJp
YnV0ZSgiaWQiLCAidGV4dCIpOwordGV4dC5zZXRBdHRyaWJ1dGUoIngiLCAiNDAgNjAgODAgMTAw
Iik7Cit0ZXh0LnNldEF0dHJpYnV0ZSgieSIsICI2MCIpOwordGV4dC5zZXRBdHRyaWJ1dGUoInJv
dGF0ZSIsICIwIDQ1IDkwIDE1MyIpOwordGV4dC5zZXRBdHRyaWJ1dGUoImZpbGwiLCAiZ3JlZW4i
KTsKK3RleHQuc2V0QXR0cmlidXRlKCJvbmNsaWNrIiwgImV4ZWN1dGVUZXN0KCkiKTsKKwordmFy
IGFuaW1hdGUgPSBjcmVhdGVTVkdFbGVtZW50KCJhbmltYXRlIik7CithbmltYXRlLnNldEF0dHJp
YnV0ZSgiaWQiLCAiYW5pbWF0aW9uIik7CithbmltYXRlLnNldEF0dHJpYnV0ZSgiYXR0cmlidXRl
TmFtZSIsICJyb3RhdGUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJiZWdpbiIsICJjbGljayIp
OworYW5pbWF0ZS5zZXRBdHRyaWJ1dGUoImR1ciIsICI0cyIpOworYW5pbWF0ZS5zZXRBdHRyaWJ1
dGUoImZyb20iLCAiMCA0NSA5MCAxMzUiKTsKK2FuaW1hdGUuc2V0QXR0cmlidXRlKCJieSIsICI0
NSA0NSA0NSA0NSIpOwordGV4dC5hcHBlbmRDaGlsZChhbmltYXRlKTsKK3Jvb3RTVkdFbGVtZW50
LmFwcGVuZENoaWxkKHRleHQpOworCisvLyBTZXR1cCBhbmltYXRpb24gdGVzdAorZnVuY3Rpb24g
c2FtcGxlMSgpIHsKKwlzaG91bGRCZSgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDApLnZh
bHVlIiwgIjAiKTsKKwlzaG91bGRCZSgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDEpLnZh
bHVlIiwgIjQ1Iik7CisJc2hvdWxkQmUoInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52
YWx1ZSIsICI5MCIpOworCXNob3VsZEJlKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMyku
dmFsdWUiLCAiMTM1Iik7Cit9CisKK2Z1bmN0aW9uIHNhbXBsZTIoKSB7CisJc2hvdWxkQmVDbG9z
ZUVub3VnaCgidGV4dC5yb3RhdGUuYW5pbVZhbC5nZXRJdGVtKDApLnZhbHVlIiwgIjIyLjUiLCAw
LjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdoKCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0o
MSkudmFsdWUiLCAiNjcuNSIsIDAuMDEpOworCXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90
YXRlLmFuaW1WYWwuZ2V0SXRlbSgyKS52YWx1ZSIsICIxMTIuNSIsIDAuMDEpOworCXNob3VsZEJl
Q2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgzKS52YWx1ZSIsICIxNTcu
NSIsIDAuMDEpOworfQorCitmdW5jdGlvbiBzYW1wbGUzKCkgeworCXNob3VsZEJlQ2xvc2VFbm91
Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgwKS52YWx1ZSIsICI0NSIsIDAuMDEpOwor
CXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1WYWwuZ2V0SXRlbSgxKS52YWx1
ZSIsICI5MCIsIDAuMDEpOworCXNob3VsZEJlQ2xvc2VFbm91Z2goInRleHQucm90YXRlLmFuaW1W
YWwuZ2V0SXRlbSgyKS52YWx1ZSIsICIxMzUiLCAwLjAxKTsKKwlzaG91bGRCZUNsb3NlRW5vdWdo
KCJ0ZXh0LnJvdGF0ZS5hbmltVmFsLmdldEl0ZW0oMykudmFsdWUiLCAiMTgwIiwgMC4wMSk7Cit9
CisKK2Z1bmN0aW9uIGV4ZWN1dGVUZXN0KCkgeworICAgIGNvbnN0IGV4cGVjdGVkVmFsdWVzID0g
WworICAgICAgICAvLyBbYW5pbWF0aW9uSWQsIHRpbWUsIGVsZW1lbnRJZCwgc2FtcGxlQ2FsbGJh
Y2tdCisgICAgICAgIFsiYW5pbWF0aW9uIiwgMC4wLCAgICAidGV4dCIsIHNhbXBsZTFdLAorICAg
ICAgICBbImFuaW1hdGlvbiIsIDIuMCwgICAgInRleHQiLCBzYW1wbGUyXSwKKyAgICAgICAgWyJh
bmltYXRpb24iLCAzLjk5OTksICJ0ZXh0Iiwgc2FtcGxlM10sCisgICAgICAgIFsiYW5pbWF0aW9u
IiwgNC4wICwgICAidGV4dCIsIHNhbXBsZTFdCisgICAgXTsKKworICAgIHJ1bkFuaW1hdGlvblRl
c3QoZXhwZWN0ZWRWYWx1ZXMpOworfQorCisvLyBCZWdpbiB0ZXN0IGFzeW5jCit3aW5kb3cuc2V0
VGltZW91dCgidHJpZ2dlclVwZGF0ZSg0MSwgNTkpIiwgMCk7Cit2YXIgc3VjY2Vzc2Z1bGx5UGFy
c2VkID0gdHJ1ZTsK
</data>
<flag name="review"
          id="92861"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>