<?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>63296</bug_id>
          
          <creation_ts>2011-06-23 15:20:18 -0700</creation_ts>
          <short_desc>Convert AnimatedString to SVGAnimatorFactory concept</short_desc>
          <delta_ts>2011-06-24 03:21:56 -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>426543</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 15:20:18 -0700</bug_when>
    <thetext>Convert AnimatedString to SVGAnimatorFactory concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426549</commentid>
    <comment_count>1</comment_count>
      <attachid>98420</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 15:34:44 -0700</bug_when>
    <thetext>Created attachment 98420
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426551</commentid>
    <comment_count>2</comment_count>
      <attachid>98422</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 15:37:06 -0700</bug_when>
    <thetext>Created attachment 98422
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426552</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 15:39:02 -0700</bug_when>
    <thetext>Attachment 98420 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatorFactory.h:57:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 15 in 13 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>426556</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 15:41:03 -0700</bug_when>
    <thetext>Attachment 98422 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 13 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>426558</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 15:44:28 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Attachment 98422 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
&gt; 
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Total errors found: 14 in 13 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Again, this is a false  alert.

A note to this change:
356             valueToApply = m_animatedString;
 352            valueToApply = String();

This is called if we can&apos;t parse the string. It is irrelevant if we pass an empty string or a invalid string. Results in the same empty path. Changing it to an empty string avoids the need of m_animatedString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426698</commentid>
    <comment_count>6</comment_count>
      <attachid>98422</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-06-23 19:38:06 -0700</bug_when>
    <thetext>Comment on attachment 98422
Patch

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

r- since I have some questions, also double check those PassOwnPtr suggestions.

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:352
&gt; +            valueToApply = String();

I don&apos;t get this one? Was m_animatedString always empty String for AnimatedPath case before?

&gt; Source/WebCore/svg/SVGAnimatedString.cpp:38
&gt; +    return animtedType.release();

animted?

&gt; Source/WebCore/svg/SVGAnimatorFactory.h:-58
&gt; -            return adoptPtr(new SVGAnimatedLengthAnimator(animationElement, contextElement));

Why is this one removed?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426756</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 23:59:13 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 98422 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98422&amp;action=review
&gt; 
&gt; r- since I have some questions, also double check those PassOwnPtr suggestions.
I don&apos;t want to change the ownership. The animationelement should still have the ownership. And I do not pass an OwnPtr&lt;&gt; but a OwnPtr&lt;&gt;&amp;.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimateElement.cpp:352
&gt; &gt; +            valueToApply = String();
&gt; 
&gt; I don&apos;t get this one? Was m_animatedString always empty String for AnimatedPath case before?
Seems you did not read my comment at https://bugs.webkit.org/show_bug.cgi?id=63296#c5 . This is a valid question, but thats why I answered it before the review. If we don&apos;t have an Bytestream there, it means we couldn&apos;t parse the path. If we couldn&apos;t parse the path before, we won&apos;t get it parsed in SVGPathElement. Both use the same parsing code. So I can omit this completely and put an empty String there instead. This way we don&apos;t need m_animatedString anymore.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedString.cpp:38
&gt; &gt; +    return animtedType.release();
&gt; 
&gt; animted?
Typo fixed.

&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatorFactory.h:-58
&gt; &gt; -            return adoptPtr(new SVGAnimatedLengthAnimator(animationElement, contextElement));
&gt; 
&gt; Why is this one removed?
I did not removed it, I replaced it by StringAnimator. If you take a look one line before, you see a ASSERT_NOT_REACHED. If we get there, we are in an invalid state. So String animation for release builds makes much mire sense than length animation. Since it is clearly a failure to get there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426762</commentid>
    <comment_count>8</comment_count>
      <attachid>98465</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-24 00:12:59 -0700</bug_when>
    <thetext>Created attachment 98465
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426764</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-24 00:16:24 -0700</bug_when>
    <thetext>Attachment 98465 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:41:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.cpp:61:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:50:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedString.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 14 in 13 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>426787</commentid>
    <comment_count>10</comment_count>
      <attachid>98465</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-24 01:32:24 -0700</bug_when>
    <thetext>Comment on attachment 98465
Patch

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

Looks good to me, I&apos;ve discussed on IRC with Dirk, he actually already explained both my and Robs question in an earlier comment. r=me.

&gt; Source/WebCore/svg/SVGAnimateElement.cpp:352
&gt; -            valueToApply = m_animatedString;
&gt; +            valueToApply = String();

Dirk explained this in an earlier comment, it&apos;s safe and can be used to avoid m_animatedString completely.

&gt; Source/WebCore/svg/SVGAnimatorFactory.h:61
&gt; -            return adoptPtr(new SVGAnimatedLengthAnimator(animationElement, contextElement));
&gt; +            return adoptPtr(new SVGAnimatedStringAnimator(animationElement, contextElement));

To avoid the confusion use &quot;return nullptr&quot; here. It doesn&apos;t matter what&apos;s returned here, the code is never reached. But it&apos;s certainly better to return 0 than some other value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426803</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-24 03:21:56 -0700</bug_when>
    <thetext>Committed r89661: &lt;http://trac.webkit.org/changeset/89661&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98420</attachid>
            <date>2011-06-23 15:34:44 -0700</date>
            <delta_ts>2011-06-23 15:36:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63296-20110624003441.patch</filename>
            <type>text/plain</type>
            <size>22883</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjI4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDYtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IEFuaW1hdGVkU3RyaW5nIHRvIFNWR0FuaW1hdG9yRmFj
dG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzI5NgorCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5pbWF0aW9uIHNob3VsZCB1
c2UgZGlyZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhpcyBwYXRjaCBjb250aW51
ZXMgdGhlIGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNWR0FuaW1hdG9yRmFjdG9y
eSB3aXRoIFNWR1N0cmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQuIE5vIGNoYW5n
ZSBvZiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdTdHJpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1
bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6On5TVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
OjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorCiAyMDExLTA2LTIzICBFbWlsIEEgRWtsdW5kICA8
ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBJRiAo
RU5BQkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3Qu
Y3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQxOSw2ICszNDE5LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzE0LDYgKzU3MTQsNyBAQAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwJywKKyAg
ICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTMzMjgsNiArMzMyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBcCiAgICAgICAgICAg
ICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKKyAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODk1ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTk5Nyw2ICs5OTcsNyBAQAogCQk0M0EwRjBCNjEzQUNDQ0ZGMDBBNUYw
QTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5
cGUuY3BwICovOyB9OwogCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRD
b2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNB
NjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLzsgfTsKIAkJNDNB
NjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI1RjcxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwICovOyB9OworCQk0M0E2MjY2NzEzQjNEMTEwMDBB
Qzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI2NjYxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1h
dGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0M0I5MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3Qu
aCAqLzsgfTsKIAkJNDNCOTMzNkExM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
QjkzMzY4MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi87IH07
CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MwOTJCQTEy
RDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9OwpAQCAtNzQ4
NCw2ICs3NDg1LDcgQEAKIAkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVk
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRl
ZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0E2MjVGNjEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZENvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzQTYyNUY3MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQ29sb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0M0E2MjY2NjEzQjNEMTEwMDBBQzk0QjggLyogU1ZH
QW5pbWF0ZWRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0I5
MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1h
dGVkUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDND
MDkyQjkxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQxNyw2ICsxNzQxOSw3IEBACiAJ
CQkJNDMxNDJFNzkxM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgKi8sCiAJ
CQkJMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oICovLAogCQkJ
CUIyMjI3N0Y1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFJlY3QuaWRsICovLAorCQkJ
CTQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAgKi8sCiAJ
CQkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggKi8sCiAJ
CQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3RyaW5nLmlkbCAqLywK
IAkJCQkwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggKi8sCkBAIC0yNTgyMyw2ICsyNTgyNiw3IEBACiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFD
ODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I5MzM2QTEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVk
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
bEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUu
Y3BwCShyZXZpc2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZE51bWJlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODk1ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDAsNyArMjAwLDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZQogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJl
cjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgotICAgIGNhc2UgQW5pbWF0ZWRSZWN0OiB7Cisg
ICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzogewogICAgICAg
ICBBU1NFUlQobV9hbmltYXRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVk
VHlwZSk7CiAgICAgICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KQEAg
LTIxMSwxMyArMjEyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBBU1NFUlQoYW5pbWF0
aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlv
biB8fCBhbmltYXRpb25Nb2RlID09IFZhbHVlc0FuaW1hdGlvbik7Ci0gICAgaWYgKChhbmltYXRp
b25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKLSAgICAgICAgcmVzdWx0
cy0+bV9hbmltYXRlZFN0cmluZyA9IG1fdG9TdHJpbmc7Ci0gICAgZWxzZQotICAgICAgICByZXN1
bHRzLT5tX2FuaW1hdGVkU3RyaW5nID0gbV9mcm9tU3RyaW5nOwotICAgIC8vIEhpZ2hlciBwcmlv
cml0eSByZXBsYWNlIGFuaW1hdGlvbiBvdmVycmlkZXMgYW55IGFkZGl0aXZlIHJlc3VsdHMgc28g
ZmFyLgotICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gQW5pbWF0ZWRTdHJp
bmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHN0YXRpYyBib29sIGluaGVyaXRz
RnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yODEsMTUgKzI3Niwx
NCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBB
bmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0
ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9y
KCktPmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0
cmluZywgdG9TdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgbV9mcm9tU3RyaW5nID0gZnJvbVN0cmluZzsKLSAgICBt
X3RvU3RyaW5nID0gdG9TdHJpbmc7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBBbmlt
YXRlZFN0cmluZzsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnlTdHJpbmcpCkBAIC0zMDcsMTkgKzMwMSwyMCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50Ojpj
YWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1h
dGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJp
bmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyht
X2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgYnlTdHJpbmcpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYg
YmFzZVN0cmluZykKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGVk
U3RyaW5nID0gYmFzZVN0cmluZzsKICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKQEAgLTMz
NCw3ICszMjksOCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgY2FzZSBBbmltYXRlZFJlY3Q6IHsKKyAgICBjYXNlIEFu
aW1hdGVkUmVjdDoKKyAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOiB7CiAgICAgICAgIGlmICghbV9h
bmltYXRlZFR5cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGVuc3VyZUFuaW1hdG9y
KCktPmNvbnN0cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKQEAgLTM0
NCw3ICszNDAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlID0gQW5pbWF0ZWRTdHJpbmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAg
ICAgCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC0z
NTMsNyArMzQ5LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQog
ICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVk
UGF0aDogewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVk
UGF0aFBvaW50ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5p
bWF0ZWRTdHJpbmc7CisgICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmcoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgZ29pbmcgdG8gc3RyaW5n
IGFuZCBiYWNrIGJlY2F1c2Ugd2UgYXJlIGN1cnJlbnRseSBvbmx5IGFibGUgdG8gcGFpbnQKICAg
ICAgICAgICAgIC8vICJwcm9jZXNzZWQiIHBhdGhzIHdoZXJlIGNvbXBsZXggc2hhcGVzIGFyZSBy
ZXBsYWNlZCB3aXRoIHNpbXBsZXIgb25lcy4gUGF0aCAKQEAgLTM3MCwxMCArMzY2LDExIEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6
CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmlt
YXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmluZzsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHNldFRhcmdldEF0dHJpYnV0ZUFuaW1hdGVkVmFs
dWUodmFsdWVUb0FwcGx5KTsKIH0KQEAgLTM5MiwxMCArMzg5LDEyIEBAIGZsb2F0IFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAg
IGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBB
bmltYXRlZFN0cmluZzoKICAgICAgICAgcmV0dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0
ZURpc3RhbmNlKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIC0xOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24g
ODk1ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsOSArNzQsNiBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0
eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5
VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBTdHJpbmcgbV9mcm9tU3RyaW5n
OwotICAgIFN0cmluZyBtX3RvU3RyaW5nOwotICAgIFN0cmluZyBtX2FuaW1hdGVkU3RyaW5nOwog
ICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9mcm9tUGF0aDsKICAgICBPd25QdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IG1fdG9QYXRoOwogICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4g
bV9hbmltYXRlZFBhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1B
VElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgorCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZUVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRTdHJpbmcsIGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRTdHJpbmdBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlU3RyaW5nKG5ldyBTdHJpbmcpOworICAgIGFuaW10ZWRUeXBlLT5z
dHJpbmcoKSA9IHN0cmluZzsKKyAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworfQor
Cit2b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7
CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVs
ZW1lbnQpOworCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Cisg
ICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmlt
YXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQoreworICAgIEFTU0VSVCht
X2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICAK
KyAgICAvLyBOb3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdpdGgg
c3RyaW5nLiBGYWxsYmFjayB0byAndG8nLWFuaW1hdGlvbiByaWdodCBub3cuIAorICAgIGZyb20g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJv
bVN0cmluZyhieVN0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9u
RWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVF
bGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQq
PihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIAorICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKyAgICBTdHJpbmcmIGFu
aW1hdGVTdHJpbmcgPSBhbmltYXRlZC0+c3RyaW5nKCk7CisgICAgaWYgKChhbmltYXRpb25Nb2Rl
ID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25Nb2Rl
ID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKKyAgICAgICAgYW5pbWF0ZVN0cmlu
ZyA9IHRvLT5zdHJpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVTdHJpbmcgPSBmcm9t
LT5zdHJpbmcoKTsKK30KKworZmxvYXQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBObyBw
YWNlZCBhbmltYXRpb25zIGZvciBzdHJpbmdzLgorICAgIHJldHVybiAtMTsKK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gODk1ODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0
eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgi
CisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNSw3ICszNiwyNSBAQCBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0Fu
aW1hdGVkU3RyCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9TVFJJTkcoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklNQVRF
RF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFt
ZSgpLCBTVkdBbmltYXRlZFN0cmluZywgU3RyaW5nLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KQogCisjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFzcyBTVkdBbmltYXRpb25FbGVt
ZW50OworCitjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZFN0cmluZ0Fu
aW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+
U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9W
YWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7Cisg
ICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorI2VuZGlmIC8vIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1h
dGVkVHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEu
cmVjdDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKKyAgICAgICAg
ZGVsZXRlIG1fZGF0YS5zdHJpbmc7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTExMSw2ICsxMTQs
MTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJldHVy
biBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcoU3RyaW5nKiBzdHJpbmcpCit7CisgICAg
QVNTRVJUKHN0cmluZyk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFN0cmluZykpOworICAgIGFu
aW1hdGVkVHlwZS0+bV9kYXRhLnN0cmluZyA9IHN0cmluZzsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKK30KKwogU1ZHQW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUoKQog
ewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7CkBAIC0xNDcsNiArMTU4LDEy
IEBAIEZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRUeXBlOjpyZWN0KCkKICAgICByZXR1cm4gKm1fZGF0
YS5yZWN0OwogfQogCitTdHJpbmcmIFNWR0FuaW1hdGVkVHlwZTo6c3RyaW5nKCkKK3sKKyAgICBB
U1NFUlQobV90eXBlID09IEFuaW1hdGVkU3RyaW5nKTsKKyAgICByZXR1cm4gKm1fZGF0YS5zdHJp
bmc7Cit9CisKIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQogewogICAg
IHN3aXRjaCAobV90eXBlKSB7CkBAIC0xNjksNiArMTg2LDkgQEAgU3RyaW5nIFNWR0FuaW1hdGVk
VHlwZTo6dmFsdWVBc1N0cmluZygpCiAgICAgICAgIEFTU0VSVChtX2RhdGEucmVjdCk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX2RhdGEucmVjdC0+eCgpKSArICcgJyArIFN0cmlu
Zzo6bnVtYmVyKG1fZGF0YS5yZWN0LT55KCkpICsgJyAnCiAgICAgICAgICAgICAgKyBTdHJpbmc6
Om51bWJlcihtX2RhdGEucmVjdC0+d2lkdGgoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX2Rh
dGEucmVjdC0+aGVpZ2h0KCkpOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAgIEFT
U0VSVChtX2RhdGEuc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIwNSw2ICsyMjUsMTAgQEAgYm9v
bCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBBU1NFUlQobV9k
YXRhLnJlY3QpOwogICAgICAgICBwYXJzZVJlY3QodmFsdWUsICptX2RhdGEucmVjdCk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAgIEFTU0VSVChtX2Rh
dGEuc3RyaW5nKTsKKyAgICAgICAgKm1fZGF0YS5zdHJpbmcgPSB2YWx1ZTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24g
ODk1ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZsb2F0Kik7CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0Kik7CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVjdCop
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKFN0
cmluZyopOwogICAgIAogICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIGZsb2F0JiBu
dW1iZXIoKTsKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpOwogICAgIEZsb2F0UmVjdCYg
cmVjdCgpOworICAgIFN0cmluZyYgc3RyaW5nKCk7CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0cmlu
ZygpOwogICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgU3RyaW5nJik7CkBAIC03Myw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0KiBu
dW1iZXI7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwogICAgICAgICBGbG9hdFJl
Y3QqIHJlY3Q7CisgICAgICAgIFN0cmluZyogc3RyaW5nOwogICAgIH0gbV9kYXRhOwogfTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlzaW9u
IDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUmVjdC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTMsOSArNTQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFJlY3RBbmltYXRvcihhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgY2FzZSBBbmltYXRlZFN0
cmluZzoKKyAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkU3Ry
aW5nQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAg
cmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3
IFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1l
bnQpKTsKICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98422</attachid>
            <date>2011-06-23 15:37:06 -0700</date>
            <delta_ts>2011-06-24 00:12:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63296-20110624003703.patch</filename>
            <type>text/plain</type>
            <size>22875</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjI4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDYtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IEFuaW1hdGVkU3RyaW5nIHRvIFNWR0FuaW1hdG9yRmFj
dG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzI5NgorCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5pbWF0aW9uIHNob3VsZCB1
c2UgZGlyZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhpcyBwYXRjaCBjb250aW51
ZXMgdGhlIGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNWR0FuaW1hdG9yRmFjdG9y
eSB3aXRoIFNWR1N0cmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQuIE5vIGNoYW5n
ZSBvZiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdTdHJpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1
bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6On5TVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
OjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorCiAyMDExLTA2LTIzICBFbWlsIEEgRWtsdW5kICA8
ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBJRiAo
RU5BQkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3Qu
Y3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQxOSw2ICszNDE5LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzE0LDYgKzU3MTQsNyBAQAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwJywKKyAg
ICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTMzMjgsNiArMzMyOCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBcCiAgICAgICAgICAg
ICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKKyAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODk1ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTk5Nyw2ICs5OTcsNyBAQAogCQk0M0EwRjBCNjEzQUNDQ0ZGMDBBNUYw
QTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5
cGUuY3BwICovOyB9OwogCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRD
b2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNB
NjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLzsgfTsKIAkJNDNB
NjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI1RjcxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwICovOyB9OworCQk0M0E2MjY2NzEzQjNEMTEwMDBB
Qzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI2NjYxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1h
dGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0M0I5MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3Qu
aCAqLzsgfTsKIAkJNDNCOTMzNkExM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
QjkzMzY4MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi87IH07
CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MwOTJCQTEy
RDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9OwpAQCAtNzQ4
NCw2ICs3NDg1LDcgQEAKIAkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVk
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRl
ZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0E2MjVGNjEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZENvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzQTYyNUY3MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQ29sb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0M0E2MjY2NjEzQjNEMTEwMDBBQzk0QjggLyogU1ZH
QW5pbWF0ZWRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0I5
MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1h
dGVkUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDND
MDkyQjkxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQxNyw2ICsxNzQxOSw3IEBACiAJ
CQkJNDMxNDJFNzkxM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgKi8sCiAJ
CQkJMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oICovLAogCQkJ
CUIyMjI3N0Y1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFJlY3QuaWRsICovLAorCQkJ
CTQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAgKi8sCiAJ
CQkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggKi8sCiAJ
CQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3RyaW5nLmlkbCAqLywK
IAkJCQkwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggKi8sCkBAIC0yNTgyMyw2ICsyNTgyNiw3IEBACiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFD
ODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I5MzM2QTEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVk
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
bEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUu
Y3BwCShyZXZpc2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZE51bWJlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODk1ODcp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDAsNyArMjAwLDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZQogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJl
cjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgotICAgIGNhc2UgQW5pbWF0ZWRSZWN0OiB7Cisg
ICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzogewogICAgICAg
ICBBU1NFUlQobV9hbmltYXRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVk
VHlwZSk7CiAgICAgICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KQEAg
LTIxMSwxMyArMjEyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBBU1NFUlQoYW5pbWF0
aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlv
biB8fCBhbmltYXRpb25Nb2RlID09IFZhbHVlc0FuaW1hdGlvbik7Ci0gICAgaWYgKChhbmltYXRp
b25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKLSAgICAgICAgcmVzdWx0
cy0+bV9hbmltYXRlZFN0cmluZyA9IG1fdG9TdHJpbmc7Ci0gICAgZWxzZQotICAgICAgICByZXN1
bHRzLT5tX2FuaW1hdGVkU3RyaW5nID0gbV9mcm9tU3RyaW5nOwotICAgIC8vIEhpZ2hlciBwcmlv
cml0eSByZXBsYWNlIGFuaW1hdGlvbiBvdmVycmlkZXMgYW55IGFkZGl0aXZlIHJlc3VsdHMgc28g
ZmFyLgotICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gQW5pbWF0ZWRTdHJp
bmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHN0YXRpYyBib29sIGluaGVyaXRz
RnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yODEsMTUgKzI3Niwx
NCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBB
bmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0
ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9y
KCktPmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0
cmluZywgdG9TdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgbV9mcm9tU3RyaW5nID0gZnJvbVN0cmluZzsKLSAgICBt
X3RvU3RyaW5nID0gdG9TdHJpbmc7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBBbmlt
YXRlZFN0cmluZzsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnlTdHJpbmcpCkBAIC0zMDcsMTkgKzMwMSwyMCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50Ojpj
YWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1h
dGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJp
bmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyht
X2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgYnlTdHJpbmcpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYg
YmFzZVN0cmluZykKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGVk
U3RyaW5nID0gYmFzZVN0cmluZzsKICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKQEAgLTMz
NCw3ICszMjksOCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgY2FzZSBBbmltYXRlZFJlY3Q6IHsKKyAgICBjYXNlIEFu
aW1hdGVkUmVjdDoKKyAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOiB7CiAgICAgICAgIGlmICghbV9h
bmltYXRlZFR5cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGVuc3VyZUFuaW1hdG9y
KCktPmNvbnN0cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKQEAgLTM0
NCw3ICszNDAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlID0gQW5pbWF0ZWRTdHJpbmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAg
ICAgCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC0z
NTMsNyArMzQ5LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQog
ICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVk
UGF0aDogewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVk
UGF0aFBvaW50ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5p
bWF0ZWRTdHJpbmc7CisgICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmcoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgZ29pbmcgdG8gc3RyaW5n
IGFuZCBiYWNrIGJlY2F1c2Ugd2UgYXJlIGN1cnJlbnRseSBvbmx5IGFibGUgdG8gcGFpbnQKICAg
ICAgICAgICAgIC8vICJwcm9jZXNzZWQiIHBhdGhzIHdoZXJlIGNvbXBsZXggc2hhcGVzIGFyZSBy
ZXBsYWNlZCB3aXRoIHNpbXBsZXIgb25lcy4gUGF0aCAKQEAgLTM3MCwxMCArMzY2LDExIEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6
CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmlt
YXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmluZzsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHNldFRhcmdldEF0dHJpYnV0ZUFuaW1hdGVkVmFs
dWUodmFsdWVUb0FwcGx5KTsKIH0KQEAgLTM5MiwxMCArMzg5LDEyIEBAIGZsb2F0IFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAg
IGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBB
bmltYXRlZFN0cmluZzoKICAgICAgICAgcmV0dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0
ZURpc3RhbmNlKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIC0xOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24g
ODk1ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsOSArNzQsNiBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0
eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5
VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBTdHJpbmcgbV9mcm9tU3RyaW5n
OwotICAgIFN0cmluZyBtX3RvU3RyaW5nOwotICAgIFN0cmluZyBtX2FuaW1hdGVkU3RyaW5nOwog
ICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9mcm9tUGF0aDsKICAgICBPd25QdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IG1fdG9QYXRoOwogICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4g
bV9hbmltYXRlZFBhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1B
VElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgorCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZUVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRTdHJpbmcsIGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRTdHJpbmdBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltdGVkVHlwZSA9IFNWR0Fu
aW1hdGVkVHlwZTo6Y3JlYXRlU3RyaW5nKG5ldyBTdHJpbmcpOworICAgIGFuaW10ZWRUeXBlLT5z
dHJpbmcoKSA9IHN0cmluZzsKKyAgICByZXR1cm4gYW5pbXRlZFR5cGUucmVsZWFzZSgpOworfQor
Cit2b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVl
cyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCit7
CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVs
ZW1lbnQpOworCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7Cisg
ICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmlt
YXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQoreworICAgIEFTU0VSVCht
X2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICAK
KyAgICAvLyBOb3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdpdGgg
c3RyaW5nLiBGYWxsYmFjayB0byAndG8nLWFuaW1hdGlvbiByaWdodCBub3cuIAorICAgIGZyb20g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0RnJv
bVN0cmluZyhieVN0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9u
RWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVF
bGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQq
PihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIAorICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9u
TW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKyAgICBTdHJpbmcmIGFu
aW1hdGVTdHJpbmcgPSBhbmltYXRlZC0+c3RyaW5nKCk7CisgICAgaWYgKChhbmltYXRpb25Nb2Rl
ID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25Nb2Rl
ID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKKyAgICAgICAgYW5pbWF0ZVN0cmlu
ZyA9IHRvLT5zdHJpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVTdHJpbmcgPSBmcm9t
LT5zdHJpbmcoKTsKK30KKworZmxvYXQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBObyBw
YWNlZCBhbmltYXRpb25zIGZvciBzdHJpbmdzLgorICAgIHJldHVybiAtMTsKK30KKworfQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gODk1ODYpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMjMs
NiArMjMsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0
eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2ZmLmgi
CisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNSw3ICszNiwyNSBAQCBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0Fu
aW1hdGVkU3RyCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9TVFJJTkcoT3duZXJUeXBlLCBET01B
dHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklNQVRF
RF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFt
ZSgpLCBTVkdBbmltYXRlZFN0cmluZywgU3RyaW5nLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KQogCisjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFzcyBTVkdBbmltYXRpb25FbGVt
ZW50OworCitjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIDogcHVibGljIFNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZFN0cmluZ0Fu
aW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+
U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgUGFzc093
blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7
CisgICAgCisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9W
YWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsK
KyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAgIHZp
cnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7Cisg
ICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJp
bmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorI2VuZGlmIC8vIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShTVkcp
CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZp
c2lvbiA4OTU4NykKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1h
dGVkVHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEu
cmVjdDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKKyAgICAgICAg
ZGVsZXRlIG1fZGF0YS5zdHJpbmc7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTExMSw2ICsxMTQs
MTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJldHVy
biBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcoU3RyaW5nKiBzdHJpbmcpCit7CisgICAg
QVNTRVJUKHN0cmluZyk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFN0cmluZykpOworICAgIGFu
aW1hdGVkVHlwZS0+bV9kYXRhLnN0cmluZyA9IHN0cmluZzsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKK30KKwogU1ZHQW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUoKQog
ewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7CkBAIC0xNDcsNiArMTU4LDEy
IEBAIEZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRUeXBlOjpyZWN0KCkKICAgICByZXR1cm4gKm1fZGF0
YS5yZWN0OwogfQogCitTdHJpbmcmIFNWR0FuaW1hdGVkVHlwZTo6c3RyaW5nKCkKK3sKKyAgICBB
U1NFUlQobV90eXBlID09IEFuaW1hdGVkU3RyaW5nKTsKKyAgICByZXR1cm4gKm1fZGF0YS5zdHJp
bmc7Cit9CisKIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQogewogICAg
IHN3aXRjaCAobV90eXBlKSB7CkBAIC0xNjksNiArMTg2LDkgQEAgU3RyaW5nIFNWR0FuaW1hdGVk
VHlwZTo6dmFsdWVBc1N0cmluZygpCiAgICAgICAgIEFTU0VSVChtX2RhdGEucmVjdCk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX2RhdGEucmVjdC0+eCgpKSArICcgJyArIFN0cmlu
Zzo6bnVtYmVyKG1fZGF0YS5yZWN0LT55KCkpICsgJyAnCiAgICAgICAgICAgICAgKyBTdHJpbmc6
Om51bWJlcihtX2RhdGEucmVjdC0+d2lkdGgoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtX2Rh
dGEucmVjdC0+aGVpZ2h0KCkpOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAgIEFT
U0VSVChtX2RhdGEuc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIwNSw2ICsyMjUsMTAgQEAgYm9v
bCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBBU1NFUlQobV9k
YXRhLnJlY3QpOwogICAgICAgICBwYXJzZVJlY3QodmFsdWUsICptX2RhdGEucmVjdCk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAgIEFTU0VSVChtX2Rh
dGEuc3RyaW5nKTsKKyAgICAgICAgKm1fZGF0YS5zdHJpbmcgPSB2YWx1ZTsKKyAgICAgICAgYnJl
YWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAg
IGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24g
ODk1ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZsb2F0Kik7CiAgICAgc3RhdGljIFBhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0Kik7CiAgICAg
c3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVjdCop
OworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5nKFN0
cmluZyopOwogICAgIAogICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlOyB9CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIGZsb2F0JiBu
dW1iZXIoKTsKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpOwogICAgIEZsb2F0UmVjdCYg
cmVjdCgpOworICAgIFN0cmluZyYgc3RyaW5nKCk7CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0cmlu
ZygpOwogICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwgY29u
c3QgU3RyaW5nJik7CkBAIC03Myw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0KiBu
dW1iZXI7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwogICAgICAgICBGbG9hdFJl
Y3QqIHJlY3Q7CisgICAgICAgIFN0cmluZyogc3RyaW5nOwogICAgIH0gbV9kYXRhOwogfTsKICAg
ICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlzaW9u
IDg5NTg3KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIu
aCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUmVjdC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNTMsOSArNTQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVsZW1l
bnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgICAg
ICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFJlY3RBbmltYXRvcihhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkU3RyaW5n
OgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmlt
YXRlZFN0cmluZ0FuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAg
ICAgICAgIH0KICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98465</attachid>
            <date>2011-06-24 00:12:59 -0700</date>
            <delta_ts>2011-06-24 01:32:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63296-20110624091256.patch</filename>
            <type>text/plain</type>
            <size>22878</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NjI5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDggQEAKKzIwMTEtMDYtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IEFuaW1hdGVkU3RyaW5nIHRvIFNWR0FuaW1hdG9yRmFj
dG9yeSBjb25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD02MzI5NgorCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5pbWF0aW9uIHNob3VsZCB1
c2UgZGlyZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhpcyBwYXRjaCBjb250aW51
ZXMgdGhlIGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNWR0FuaW1hdG9yRmFjdG9y
eSB3aXRoIFNWR1N0cmluZy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYWRkZWQuIE5vIGNoYW5n
ZSBvZiBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6IEFkZGVkIG5l
dyBmaWxlIHRvIGJ1aWxkIHN5c3RlbS4KKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBE
aXR0by4KKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUu
cHJvOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6IERpdHRvLgorICAgICAgICAq
IHN2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW5jZSk6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdGVFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcDogQWRkZWQuIEFuaW1hdG9yIGZvciBTVkdTdHJpbmcuCisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1h
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNvbnN0
cnVjdEZyb21TdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRTdHJpbmdBbmlt
YXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1
bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6On5TVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZFR5cGU6OnN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFR5cGU6OnZhbHVlQXNTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
OjpzZXRWYWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRUeXBlLmg6Cisg
ICAgICAgICogc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0b3JGYWN0b3J5OjpjcmVhdGUpOgorCiAyMDExLTA2LTIzICBFbWlsIEEgRWtsdW5kICA8
ZWFlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiA4OTYyOSkKKysrIFNvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNjYwLDYgKzE2NjAsNyBAQCBJRiAo
RU5BQkxFX1NWRykKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAogICAgICAgICBz
dmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFJlY3Qu
Y3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAKICAgICAgICAgc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0JKHJldmlzaW9uIDg5NjI5KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQxOSw2ICszNDE5LDcgQEAgd2ViY29yZV9z
b3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmggXAorCVNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFN0cmluZy5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRl
ZFN0cmluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkJKHJldmlzaW9uIDg5NjI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCSh3b3JraW5nIGNvcHkpCkBAIC01NzE0LDYgKzU3MTQsNyBAQAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwJywKKyAg
ICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwJywKICAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50
LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgnLApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5wcm8JKHJldmlzaW9uIDg5NjI5KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8J
KHdvcmtpbmcgY29weSkKQEAgLTMzNDAsNiArMzM0MCw3IEBAIGNvbnRhaW5zKERFRklORVMsIEVO
QUJMRV9TVkc9MSkgewogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBcCiAgICAgICAgICAg
ICAgIHN2Zy9TVkdBbmltYXRlZFJlY3QuY3BwIFwKKyAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1h
dGVkU3RyaW5nLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZFR5cGUuY3BwIFwK
ICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcCBcCiAgICAgICAgICAgICAg
IHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODk2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTk5Nyw2ICs5OTcsNyBAQAogCQk0M0EwRjBCNjEzQUNDQ0ZGMDBBNUYw
QTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5
cGUuY3BwICovOyB9OwogCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRD
b2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNB
NjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLzsgfTsKIAkJNDNB
NjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI1RjcxM0IzMzA0MDAwQUM5
NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwICovOyB9OworCQk0M0E2MjY2NzEzQjNEMTEwMDBB
Qzk0QjggLyogU1ZHQW5pbWF0ZWRTdHJpbmcuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI2NjYxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1h
dGVkU3RyaW5nLmNwcCAqLzsgfTsKIAkJNDNCOTMzNjkxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0M0I5MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3Qu
aCAqLzsgfTsKIAkJNDNCOTMzNkExM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRM
aXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQz
QjkzMzY4MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi87IH07
CiAJCTQzQzA5MkJDMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3JlaWduT2JqZWN0Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0MwOTJCQTEy
RDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5oICovOyB9OwpAQCAtNzQ4
NCw2ICs3NDg1LDcgQEAKIAkJNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVk
VHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRl
ZFR5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0E2MjVGNjEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTVkdBbmltYXRlZENvbG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTQzQTYyNUY3MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0FuaW1hdGVkQ29sb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0M0E2MjY2NjEzQjNEMTEwMDBBQzk0QjggLyogU1ZH
QW5pbWF0ZWRTdHJpbmcuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
U1ZHQW5pbWF0ZWRTdHJpbmcuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0I5
MzM2NzEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1h
dGVkUG9pbnRMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNW
R0FuaW1hdGVkUG9pbnRMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDND
MDkyQjkxMkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNzQxNyw2ICsxNzQxOSw3IEBACiAJ
CQkJNDMxNDJFNzkxM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgKi8sCiAJ
CQkJMDhDODU5QkYxMjc0NTc1MzAwQTU3MjhEIC8qIFNWR0FuaW1hdGVkUmVjdC5oICovLAogCQkJ
CUIyMjI3N0Y1MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZFJlY3QuaWRsICovLAorCQkJ
CTQzQTYyNjY2MTNCM0QxMTAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZFN0cmluZy5jcHAgKi8sCiAJ
CQkJMDg0REI1OUExMjgwMDhDQzAwMkE2RDY0IC8qIFNWR0FuaW1hdGVkU3RyaW5nLmggKi8sCiAJ
CQkJQjIyMjc3RjYwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkU3RyaW5nLmlkbCAqLywK
IAkJCQkwODI1MDkzODEyOEJENEQ4MDBFMkVEOEUgLyogU1ZHQW5pbWF0ZWRUcmFuc2Zvcm1MaXN0
LmggKi8sCkBAIC0yNTgyMyw2ICsyNTgyNiw3IEBACiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFD
ODcxIC8qIFNWR0FuaW1hdGVkUmVjdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I5MzM2QTEz
QjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDNBNjI2NjcxM0IzRDExMDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVk
U3RyaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fs
bEluT25lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUu
Y3BwCShyZXZpc2lvbiA4OTYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJTVkdBbmltYXRl
ZE51bWJlci5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkUmVjdC5jcHAiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRTdHJpbmcuY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5jcHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVs
ZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCIKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAkocmV2aXNpb24gODk2Mjkp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMDAsNyArMjAwLDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
QW5pbWF0ZQogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJl
cjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgotICAgIGNhc2UgQW5pbWF0ZWRSZWN0OiB7Cisg
ICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzogewogICAgICAg
ICBBU1NFUlQobV9hbmltYXRvcik7CiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVk
VHlwZSk7CiAgICAgICAgIC8vIFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KQEAg
LTIxMSwxMyArMjEyLDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0
ZQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBBU1NFUlQoYW5pbWF0
aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlv
biB8fCBhbmltYXRpb25Nb2RlID09IFZhbHVlc0FuaW1hdGlvbik7Ci0gICAgaWYgKChhbmltYXRp
b25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKLSAgICAgICAgcmVzdWx0
cy0+bV9hbmltYXRlZFN0cmluZyA9IG1fdG9TdHJpbmc7Ci0gICAgZWxzZQotICAgICAgICByZXN1
bHRzLT5tX2FuaW1hdGVkU3RyaW5nID0gbV9mcm9tU3RyaW5nOwotICAgIC8vIEhpZ2hlciBwcmlv
cml0eSByZXBsYWNlIGFuaW1hdGlvbiBvdmVycmlkZXMgYW55IGFkZGl0aXZlIHJlc3VsdHMgc28g
ZmFyLgotICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gQW5pbWF0ZWRTdHJp
bmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKIHN0YXRpYyBib29sIGluaGVyaXRz
RnJvbVByb3BlcnR5KFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpCkBAIC0yODEsMTUgKzI3Niwx
NCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBB
bmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0
ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9y
KCktPmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhtX2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0
cmluZywgdG9TdHJpbmcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgbV9mcm9tU3RyaW5nID0gZnJvbVN0cmluZzsKLSAgICBt
X3RvU3RyaW5nID0gdG9TdHJpbmc7Ci0gICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBBbmlt
YXRlZFN0cmluZzsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0
ZUZyb21BbmRCeVZhbHVlcyhjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnlTdHJpbmcpCkBAIC0zMDcsMTkgKzMwMSwyMCBAQCBib29sIFNWR0FuaW1hdGVFbGVtZW50Ojpj
YWxjdWxhdGVGcm9tQW5kCiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICBjYXNlIEFuaW1h
dGVkUG9pbnRzOgogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgorICAgIGNhc2UgQW5pbWF0ZWRTdHJp
bmc6CiAgICAgICAgIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyht
X2Zyb21UeXBlLCBtX3RvVHlwZSwgZnJvbVN0cmluZywgYnlTdHJpbmcpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
IHRydWU7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIGZhbHNlOwogfQog
CiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKGNvbnN0IFN0cmluZyYg
YmFzZVN0cmluZykKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFy
Z2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKLSAgICBtX2FuaW1hdGVk
U3RyaW5nID0gYmFzZVN0cmluZzsKICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVy
bWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKQEAgLTMz
NCw3ICszMjksOCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgY2FzZSBBbmltYXRlZFJlY3Q6IHsKKyAgICBjYXNlIEFu
aW1hdGVkUmVjdDoKKyAgICBjYXNlIEFuaW1hdGVkU3RyaW5nOiB7CiAgICAgICAgIGlmICghbV9h
bmltYXRlZFR5cGUpCiAgICAgICAgICAgICBtX2FuaW1hdGVkVHlwZSA9IGVuc3VyZUFuaW1hdG9y
KCktPmNvbnN0cnVjdEZyb21TdHJpbmcoYmFzZVN0cmluZyk7CiAgICAgICAgIGVsc2UKQEAgLTM0
NCw3ICszNDAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlCiAg
ICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlID0gQW5pbWF0ZWRTdHJpbmc7CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAg
ICAgCiB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCkBAIC0z
NTMsNyArMzQ5LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYQog
ICAgIHN3aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKICAgICBjYXNlIEFuaW1hdGVk
UGF0aDogewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVk
UGF0aFBvaW50ZXItPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5p
bWF0ZWRTdHJpbmc7CisgICAgICAgICAgICB2YWx1ZVRvQXBwbHkgPSBTdHJpbmcoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGtlZXAgZ29pbmcgdG8gc3RyaW5n
IGFuZCBiYWNrIGJlY2F1c2Ugd2UgYXJlIGN1cnJlbnRseSBvbmx5IGFibGUgdG8gcGFpbnQKICAg
ICAgICAgICAgIC8vICJwcm9jZXNzZWQiIHBhdGhzIHdoZXJlIGNvbXBsZXggc2hhcGVzIGFyZSBy
ZXBsYWNlZCB3aXRoIHNpbXBsZXIgb25lcy4gUGF0aCAKQEAgLTM3MCwxMCArMzY2LDExIEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGEKICAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6
CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmlt
YXRlZFR5cGUtPnZhbHVlQXNTdHJpbmcoKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
LSAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmluZzsKKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgfQogICAgIHNldFRhcmdldEF0dHJpYnV0ZUFuaW1hdGVkVmFs
dWUodmFsdWVUb0FwcGx5KTsKIH0KQEAgLTM5MiwxMCArMzg5LDEyIEBAIGZsb2F0IFNWR0FuaW1h
dGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0YW4KICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAg
IGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CisgICAgY2FzZSBB
bmltYXRlZFN0cmluZzoKICAgICAgICAgcmV0dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0
ZURpc3RhbmNlKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKICAgICBkZWZhdWx0OgogICAgICAgICBi
cmVhazsKICAgICB9CisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIC0xOwog
fQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24g
ODk2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNzQsOSArNzQsNiBAQCBwcml2YXRlOgogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0
eVZhbHVlVHlwZSBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5
VmFsdWVUeXBlIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBTdHJpbmcgbV9mcm9tU3RyaW5n
OwotICAgIFN0cmluZyBtX3RvU3RyaW5nOwotICAgIFN0cmluZyBtX2FuaW1hdGVkU3RyaW5nOwog
ICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4gbV9mcm9tUGF0aDsKICAgICBPd25QdHI8U1ZH
UGF0aEJ5dGVTdHJlYW0+IG1fdG9QYXRoOwogICAgIE93blB0cjxTVkdQYXRoQnl0ZVN0cmVhbT4g
bV9hbmltYXRlZFBhdGg7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFN0cmlu
Zy5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJp
bmcuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwg
b3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJh
cnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAq
IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJh
bnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
KyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVl
dCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1B
VElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZFN0cmluZy5oIgorCisjaW5jbHVkZSAiU1ZHQW5p
bWF0ZUVsZW1lbnQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yOjpTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRTdHJpbmcsIGFuaW1hdGlvbkVsZW1lbnQsIGNv
bnRleHRFbGVtZW50KQoreworfQorCitQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bWF0ZWRTdHJpbmdBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0
cmluZykKK3sKKyAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBhbmltYXRlZFR5cGUgPSBTVkdB
bmltYXRlZFR5cGU6OmNyZWF0ZVN0cmluZyhuZXcgU3RyaW5nKTsKKyAgICBhbmltYXRlZFR5cGUt
PnN0cmluZygpID0gc3RyaW5nOworICAgIHJldHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwor
fQorCit2b2lkIFNWR0FuaW1hdGVkU3RyaW5nQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1Zh
bHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
Cit7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlv
bkVsZW1lbnQpOworCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7
CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdB
bmltYXRlZFN0cmluZ0FuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQoreworICAgIEFTU0VS
VChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAg
ICAKKyAgICAvLyBOb3Qgc3BlY2lmaWVkIHdoYXQgdG8gZG8gb24gJ2J5Jy1hbmltYXRpb25zIHdp
dGggc3RyaW5nLiBGYWxsYmFjayB0byAndG8nLWFuaW1hdGlvbiByaWdodCBub3cuIAorICAgIGZy
b20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOworICAgIHRvID0gY29uc3RydWN0
RnJvbVN0cmluZyhieVN0cmluZyk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCit7CisgICAgQVNTRVJUKG1fYW5pbWF0
aW9uRWxlbWVudCk7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIFNWR0FuaW1h
dGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1l
bnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIAorICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGlvbk1vZGUoKTsKKyAgICBTdHJpbmcm
IGFuaW1hdGVTdHJpbmcgPSBhbmltYXRlZC0+c3RyaW5nKCk7CisgICAgaWYgKChhbmltYXRpb25N
b2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25N
b2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKKyAgICAgICAgYW5pbWF0ZVN0
cmluZyA9IHRvLT5zdHJpbmcoKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVTdHJpbmcgPSBm
cm9tLT5zdHJpbmcoKTsKK30KKworZmxvYXQgU1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcjo6Y2Fs
Y3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK3sKKyAgICAvLyBO
byBwYWNlZCBhbmltYXRpb25zIGZvciBzdHJpbmdzLgorICAgIHJldHVybiAtMTsKK30KKworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkocmV2aXNpb24gODk2MjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
MjMsNiArMjMsNyBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9w
ZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RhdGljUHJvcGVydHlUZWFyT2Zm
LmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zNSw3ICszNiwyNSBAQCBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNW
R0FuaW1hdGVkU3RyCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9TVFJJTkcoT3duZXJUeXBlLCBE
T01BdHRyaWJ1dGUsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpIFwKIERFRklORV9BTklN
QVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2Fs
TmFtZSgpLCBTVkdBbmltYXRlZFN0cmluZywgU3RyaW5nLCBVcHBlclByb3BlcnR5LCBMb3dlclBy
b3BlcnR5KQogCisjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFzcyBTVkdBbmltYXRpb25F
bGVtZW50OworCitjbGFzcyBTVkdBbmltYXRlZFN0cmluZ0FuaW1hdG9yIDogcHVibGljIFNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZFN0cmlu
Z0FuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRTdHJpbmdBbmltYXRvcigpIHsgfQorICAgIAorICAgIHZpcnR1YWwgUGFz
c093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5n
Jik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOworICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVu
c2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7
CisgICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21T
dHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorI2VuZGlmIC8vIEVOQUJMRShTVkdfQU5JTUFUSU9OKQogI2VuZGlmIC8vIEVOQUJMRShT
VkcpCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShy
ZXZpc2lvbiA4OTYyOSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0Fu
aW1hdGVkVHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6CiAgICAgICAgIGRlbGV0ZSBtX2Rh
dGEucmVjdDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKKyAgICAg
ICAgZGVsZXRlIG1fZGF0YS5zdHJpbmc7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICBicmVhazsKQEAgLTExMSw2ICsx
MTQsMTQgQEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVAogICAgIHJl
dHVybiBhbmltYXRlZFR5cGUucmVsZWFzZSgpOwogfQogCitQYXNzT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVTdHJpbmcoU3RyaW5nKiBzdHJpbmcpCit7Cisg
ICAgQVNTRVJUKHN0cmluZyk7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRU
eXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZFN0cmluZykpOworICAg
IGFuaW1hdGVkVHlwZS0+bV9kYXRhLnN0cmluZyA9IHN0cmluZzsKKyAgICByZXR1cm4gYW5pbWF0
ZWRUeXBlLnJlbGVhc2UoKTsKK30KKwogU1ZHQW5nbGUmIFNWR0FuaW1hdGVkVHlwZTo6YW5nbGUo
KQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRBbmdsZSk7CkBAIC0xNDcsNiArMTU4
LDEyIEBAIEZsb2F0UmVjdCYgU1ZHQW5pbWF0ZWRUeXBlOjpyZWN0KCkKICAgICByZXR1cm4gKm1f
ZGF0YS5yZWN0OwogfQogCitTdHJpbmcmIFNWR0FuaW1hdGVkVHlwZTo6c3RyaW5nKCkKK3sKKyAg
ICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkU3RyaW5nKTsKKyAgICByZXR1cm4gKm1fZGF0YS5z
dHJpbmc7Cit9CisKIFN0cmluZyBTVkdBbmltYXRlZFR5cGU6OnZhbHVlQXNTdHJpbmcoKQogewog
ICAgIHN3aXRjaCAobV90eXBlKSB7CkBAIC0xNjksNiArMTg2LDkgQEAgU3RyaW5nIFNWR0FuaW1h
dGVkVHlwZTo6dmFsdWVBc1N0cmluZygpCiAgICAgICAgIEFTU0VSVChtX2RhdGEucmVjdCk7CiAg
ICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihtX2RhdGEucmVjdC0+eCgpKSArICcgJyArIFN0
cmluZzo6bnVtYmVyKG1fZGF0YS5yZWN0LT55KCkpICsgJyAnCiAgICAgICAgICAgICAgKyBTdHJp
bmc6Om51bWJlcihtX2RhdGEucmVjdC0+d2lkdGgoKSkgKyAnICcgKyBTdHJpbmc6Om51bWJlciht
X2RhdGEucmVjdC0+aGVpZ2h0KCkpOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAg
IEFTU0VSVChtX2RhdGEuc3RyaW5nKTsKKyAgICAgICAgcmV0dXJuICptX2RhdGEuc3RyaW5nOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTIwNSw2ICsyMjUsMTAgQEAg
Ym9vbCBTVkdBbmltYXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBBU1NFUlQo
bV9kYXRhLnJlY3QpOwogICAgICAgICBwYXJzZVJlY3QodmFsdWUsICptX2RhdGEucmVjdCk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CisgICAgICAgIEFTU0VSVCht
X2RhdGEuc3RyaW5nKTsKKyAgICAgICAgKm1fZGF0YS5zdHJpbmcgPSB2YWx1ZTsKKyAgICAgICAg
YnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgIGJyZWFrOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNp
b24gODk2MjkpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyKGZsb2F0Kik7CiAgICAgc3RhdGljIFBhc3NP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVQb2ludExpc3QoU1ZHUG9pbnRMaXN0Kik7CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVSZWN0KEZsb2F0UmVj
dCopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlU3RyaW5n
KFN0cmluZyopOwogICAgIAogICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlKCkgY29uc3Qg
eyByZXR1cm4gbV90eXBlOyB9CiAKQEAgLTUxLDYgKzUyLDcgQEAgcHVibGljOgogICAgIGZsb2F0
JiBudW1iZXIoKTsKICAgICBTVkdQb2ludExpc3QmIHBvaW50TGlzdCgpOwogICAgIEZsb2F0UmVj
dCYgcmVjdCgpOworICAgIFN0cmluZyYgc3RyaW5nKCk7CiAKICAgICBTdHJpbmcgdmFsdWVBc1N0
cmluZygpOwogICAgIGJvb2wgc2V0VmFsdWVBc1N0cmluZyhjb25zdCBRdWFsaWZpZWROYW1lJiwg
Y29uc3QgU3RyaW5nJik7CkBAIC03Myw2ICs3NSw3IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0
KiBudW1iZXI7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwogICAgICAgICBGbG9h
dFJlY3QqIHJlY3Q7CisgICAgICAgIFN0cmluZyogc3RyaW5nOwogICAgIH0gbV9kYXRhOwogfTsK
ICAgICAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlz
aW9uIDg5NjI5KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1i
ZXIuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkUmVjdC5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkU3RyaW5nLmgiCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNTMsOSArNTQsMTEgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0
dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFJlY3RBbmltYXRvcihhbmlt
YXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkU3Ry
aW5nOgorICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZFN0cmluZ0Fu
aW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVy
biBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcihhbmltYXRpb25FbGVtZW50
LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdB
bmltYXRlZFN0cmluZ0FuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7
CiAgICAgICAgIH0KICAgICB9CiAK
</data>
<flag name="review"
          id="92695"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>