<?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>41188</bug_id>
          
          <creation_ts>2010-06-24 17:49:14 -0700</creation_ts>
          <short_desc>Animations should not require from/to keyframes</short_desc>
          <delta_ts>2010-06-27 05:53:06 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>40794</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>ml</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>242766</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-24 17:49:14 -0700</bug_when>
    <thetext>Currently animations without a from/0 or to/100 keyframe are ignored. I propose that the style system should fill in those missing keyframes with the element style. 

This would allow animations to be more generic. Eg. you could apply an animation to objects with different initial settings and not have to create keyframes on the fly, or have the objects jump.

Open question though, should you be required to specify at least one keyframe? I think so. It could be any keyframe, but there needs to be one. This would mean that an empty list of keyframes is still an invalid animation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242963</commentid>
    <comment_count>1</comment_count>
      <attachid>59760</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 05:10:01 -0700</bug_when>
    <thetext>Created attachment 59760
patch

proposed patch with testcases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>242965</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 05:13:37 -0700</bug_when>
    <thetext>Attachment 59760 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:1460:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 8 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>242967</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 05:16:25 -0700</bug_when>
    <thetext>I&apos;m going to ignore the style bot here. It makes it more clear that we are checking against the 0% keyframe, rather than just the fact that a value exists. It also aligns well with the similar code below that is testing for the 1 or 100% key value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243007</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-25 07:48:52 -0700</bug_when>
    <thetext>Is this patch fixing both this and bug 41209?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243008</commentid>
    <comment_count>5</comment_count>
      <attachid>59760</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-25 07:54:28 -0700</bug_when>
    <thetext>Comment on attachment 59760
patch

WebCore/css/CSSStyleSelector.cpp:1466
 +      if (initialListSize &gt; 0 &amp;&amp; (list.endKeyframes()-1)-&gt;key() != 1) {
Need spaces around the minus here.

LayoutTests/ChangeLog:8
 +          * animations/fill-mode-missing-from-to-keyframes-expected.txt: Added.
 +          * animations/fill-mode-missing-from-to-keyframes.html: Added.

Did you mean to include these?WebCore/css/CSSStyleSelector.h:115
 +          void generateKeyframeStyle(const RenderStyle*, const WebKitCSSKeyframeRule*, KeyframeList&amp;);

This should be private.

Does this patch do the right thing if there&apos;s a transition running on the property that the animation is going to affect, and the 0% keyframe is missing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243149</commentid>
    <comment_count>6</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 12:52:55 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Is this patch fixing both this and bug 41209?

Nope - it is only fixing this.

And yes, I should leave the fill mode test out of this patch, otherwise I&apos;d have to skip it or check in intentionally failing results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243193</commentid>
    <comment_count>7</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 14:21:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
 
&gt; Does this patch do the right thing if there&apos;s a transition running on the property that the animation is going to affect, and the 0% keyframe is missing?

It does!!! attaching a manual test.

Well, at least I think it does the right thing. It uses the final style of the transition. eg. if you are in the middle of a transition from left: 100 to left: 200, then apply an animation, the 0% of the animation will start from 200. Do you expect it to use the transitioning value? If so that&apos;s slightly weird, because we say that animations trump the transition, so as far as the animation is concerned, the value of left is 200.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243235</commentid>
    <comment_count>8</comment_count>
      <attachid>59806</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 15:55:20 -0700</bug_when>
    <thetext>Created attachment 59806
updated patch with review fixes, new testcase for HW animations, and a manual test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243239</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 16:00:47 -0700</bug_when>
    <thetext>Attachment 59806 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:1460:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 9 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>243242</commentid>
    <comment_count>10</comment_count>
      <attachid>59806</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-25 16:11:16 -0700</bug_when>
    <thetext>Comment on attachment 59806
updated patch with review fixes, new testcase for HW animations, and a manual test

WebCore/ChangeLog:12
 +          Tests: animations/fill-mode-missing-from-to-keyframes.html
Wrong test listed here, and transform test is missing.

I&apos;d prefer that CSSStyleSelector::generateKeyframeStyle() not do the insertion into the KeyframeList. I think it should just return a RenderStyle. You could make another method that sets the RenderStyle for the appropriate keys.

The manual test should say what is being tested, and reference this bug.

r- to refactor use of generateKeyframeStyle().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243252</commentid>
    <comment_count>11</comment_count>
      <attachid>59809</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-25 16:39:46 -0700</bug_when>
    <thetext>Created attachment 59809
updated patch with refactored ::styleForKeyframe

Refactored into ::styleForKeyframe, which returns a RefPtr. Now the keyframe code gets that and assigns it in, releasing when it can.

Also updated the manual test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243253</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-25 16:42:46 -0700</bug_when>
    <thetext>Attachment 59809 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/css/CSSStyleSelector.cpp:1464:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 9 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>243258</commentid>
    <comment_count>13</comment_count>
      <attachid>59809</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-25 16:50:21 -0700</bug_when>
    <thetext>Comment on attachment 59809
updated patch with refactored ::styleForKeyframe

&gt; +    RefPtr&lt;RenderStyle&gt; keyframeStyle;
&gt;      
&gt;      // Construct and populate the style for each keyframe
&gt;      for (unsigned i = 0; i &lt; rule-&gt;length(); ++i) {

You should declare keyframeStyle inside the loop.

&gt; +        keyframeStyle.release();
&gt; +        

Extra blank line here.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243452</commentid>
    <comment_count>14</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2010-06-27 05:53:06 -0700</bug_when>
    <thetext>commited r61933</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59760</attachid>
            <date>2010-06-25 05:10:01 -0700</date>
            <delta_ts>2010-06-25 15:55:20 -0700</delta_ts>
            <desc>patch</desc>
            <filename>default-0-100.patch</filename>
            <type>text/plain</type>
            <size>26368</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2Q2ODc5Li45NGU5MmU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYt
MjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTE4OAorICAgICAgICBBbmltYXRpb25zIHNob3VsZCBub3QgcmVxdWlyZSAw
JSBhbmQgMTAwJSBrZXlmcmFtZXMKKworICAgICAgICAqIGFuaW1hdGlvbnMvZmlsbC1tb2RlLW1p
c3NpbmctZnJvbS10by1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL2ZpbGwtbW9kZS1taXNzaW5nLWZyb20tdG8ta2V5ZnJhbWVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGFuaW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5n
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlzc2lu
Zy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMt
dG8tbWlzc2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvbWlzc2luZy1m
cm9tLXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9taXNzaW5n
LWZyb20tdG8uaHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2ZpbGwtbW9kZS1taXNzaW5nLWZyb20tdG8ta2V5
ZnJhbWVzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC1tb2RlLW1p
c3NpbmctZnJvbS10by1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjY5YjYzYTcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL2ZpbGwtbW9kZS1taXNzaW5nLWZyb20tdG8ta2V5ZnJhbWVzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIyIEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRo
ZSBsZWZ0IHByb3BlcnR5IHdpdGggZm91ciBkaWZmZXJlbnQgZmlsbCBtb2Rlcy4gSXQgYW5pbWF0
ZXMgb3ZlciAwLjEgc2Vjb25kIHdpdGggYSAwLjEgc2Vjb25kIGRlbGF5LiBJdCB0YWtlcyBzbmFw
c2hvdHMgYXQgZG9jdW1lbnQgbG9hZCBhbmQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uLgorTm9u
ZSAtIGZyb20vdG8gcHJlc2VudAorQmFja3dhcmRzIC0gZnJvbS90byBwcmVzZW50CitGb3J3YXJk
cyAtIGZyb20vdG8gcHJlc2VudAorQm90aCAtIGZyb20vdG8gcHJlc2VudAorQm90aCBpdGVyYXRp
bmcgLSBmcm9tL3RvIHByZXNlbnQKK05vbmUgLSBmcm9tIG1pc3NpbmcKK0JhY2t3YXJkcyAtIGZy
b20gbWlzc2luZworRm9yd2FyZHMgLSBmcm9tIG1pc3NpbmcKK0JvdGggLSBmcm9tIG1pc3NpbmcK
K0JvdGggaXRlcmF0aW5nIC0gZnJvbSBtaXNzaW5nCitQQVNTIC0gc3RhcnQgb2YgYW5pbWF0aW9u
IC0gaWQ6IGEgZXhwZWN0ZWQ6IDEwMCBhY3R1YWw6IDEwMAorUEFTUyAtIHN0YXJ0IG9mIGFuaW1h
dGlvbiAtIGlkOiBiIGV4cGVjdGVkOiAyMDAgYWN0dWFsOiAyMDAKK1BBU1MgLSBzdGFydCBvZiBh
bmltYXRpb24gLSBpZDogYyBleHBlY3RlZDogMTAwIGFjdHVhbDogMTAwCitQQVNTIC0gc3RhcnQg
b2YgYW5pbWF0aW9uIC0gaWQ6IGQgZXhwZWN0ZWQ6IDIwMCBhY3R1YWw6IDIwMAorUEFTUyAtIHN0
YXJ0IG9mIGFuaW1hdGlvbiAtIGlkOiBlIGV4cGVjdGVkOiAyMDAgYWN0dWFsOiAyMDAKK1BBU1Mg
LSBlbmQgb2YgYW5pbWF0aW9uIC0gaWQ6IGEgZXhwZWN0ZWQ6IDEwMCBhY3R1YWw6IDEwMAorUEFT
UyAtIGVuZCBvZiBhbmltYXRpb24gLSBpZDogYiBleHBlY3RlZDogMTAwIGFjdHVhbDogMTAwCitQ
QVNTIC0gZW5kIG9mIGFuaW1hdGlvbiAtIGlkOiBjIGV4cGVjdGVkOiAzMDAgYWN0dWFsOiAzMDAK
K1BBU1MgLSBlbmQgb2YgYW5pbWF0aW9uIC0gaWQ6IGQgZXhwZWN0ZWQ6IDMwMCBhY3R1YWw6IDMw
MAorUEFTUyAtIGVuZCBvZiBhbmltYXRpb24gLSBpZDogZSBleHBlY3RlZDogMjAwIGFjdHVhbDog
MjAwCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC1tb2RlLW1pc3Np
bmctZnJvbS10by1rZXlmcmFtZXMuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvZmlsbC1t
b2RlLW1pc3NpbmctZnJvbS10by1rZXlmcmFtZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi4zNDgwN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9maWxsLW1vZGUtbWlzc2luZy1mcm9tLXRvLWtleWZyYW1lcy5odG1sCkBAIC0wLDAg
KzEsMTk0IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBU
cmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0
ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250
ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5U
ZXN0IG1pc3Npbmcga2V5ZnJhbWVzIHdpdGggZmlsbCBtb2RlczwvdGl0bGU+CisgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgLmJveCB7CisgICAgICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgIHRvcDogMTBweDsKKyAgICAg
IGhlaWdodDogMzBweDsKKyAgICAgIHdpZHRoOiAyMDBweDsKKyAgICAgIC13ZWJraXQtYW5pbWF0
aW9uLWRlbGF5OiAwLjFzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDAuMXM7
CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICB9
CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0xIHsKKyAgICAgICAgZnJvbSB7IGxlZnQ6IDIw
MHB4OyB9CisgICAgICAgIDUwJSB7IGxlZnQ6IDI1MHB4OyB9CisgICAgICAgIHRvICAgeyBsZWZ0
OiAzMDBweDsgfQorICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAg
ICA1MCUgeyBsZWZ0OiAyNTBweDsgfQorICAgICAgICB0byAgIHsgbGVmdDogMzAwcHg7IH0KKyAg
ICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0zIHsKKyAgICAgICAgZnJvbSB7IGxlZnQ6
IDIwMHB4OyB9CisgICAgICAgIDUwJSB7IGxlZnQ6IDI1MHB4OyB9CisgICAgfQorICAgIEAtd2Vi
a2l0LWtleWZyYW1lcyBhbmltNCB7CisgICAgICAgIDUwJSB7IGxlZnQ6IDI1MHB4OyB9CisgICAg
fQorCisgICAgI2EgeworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogbm9uZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5h
bWU6IGFuaW0xOworICAgIH0KKyAgICAjYiB7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7
CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJhY2t3YXJkczsKKyAgICAgIC13
ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0xOworICAgIH0KKyAgICAjYyB7CisgICAgICBiYWNr
Z3JvdW5kLWNvbG9yOiBncmVlbjsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWZpbGwtbW9kZTog
Zm9yd2FyZHM7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltMTsKKyAgICB9Cisg
ICAgI2QgeworICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgICAgLXdlYmtpdC1h
bmltYXRpb24tZmlsbC1tb2RlOiBib3RoOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTog
YW5pbTE7CisgICAgfQorICAgICNlIHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6ICM5OTk7Cisg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7CisgICAgICAtd2Via2l0LWFu
aW1hdGlvbi1pdGVyYXRpb24tY291bnQ6IDI7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kaXJl
Y3Rpb246IGFsdGVybmF0ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0xOwor
ICAgIH0KKworICAgICNmIHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAgICAt
d2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IG5vbmU7CisgICAgICAtd2Via2l0LWFuaW1hdGlv
bi1uYW1lOiBhbmltMjsKKyAgICB9CisgICAgI2cgeworICAgICAgYmFja2dyb3VuZC1jb2xvcjog
cmVkOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBiYWNrd2FyZHM7CisgICAg
ICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltMjsKKyAgICB9CisgICAgI2ggeworICAgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1v
ZGU6IGZvcndhcmRzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTI7CisgICAg
fQorICAgICNpIHsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICAgIC13ZWJr
aXQtYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5h
bWU6IGFuaW0yOworICAgIH0KKyAgICAjaiB7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTk5
OworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZmlsbC1tb2RlOiBib3RoOworICAgICAgLXdlYmtp
dC1hbmltYXRpb24taXRlcmF0aW9uLWNvdW50OiAyOworICAgICAgLXdlYmtpdC1hbmltYXRpb24t
ZGlyZWN0aW9uOiBhbHRlcm5hdGU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBhbmlt
MjsKKyAgICB9CisKKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IGNoYXJzZXQ9InV0Zi04Ij4KKyAgICBjb25zdCBudW1BbmltcyA9IDEwOworICAgIHZhciBhbmlt
c0ZpbmlzaGVkID0gMDsKKyAgICBjb25zdCBhbGxvd2FuY2UgPSA1OworICAgIGNvbnN0IGV4cGVj
dGVkVmFsdWVzID0gWworICAgICAge2lkOiAiYSIsIHN0YXJ0OiAxMDAsIGVuZDogMTAwfSwKKyAg
ICAgIHtpZDogImIiLCBzdGFydDogMjAwLCBlbmQ6IDEwMH0sCisgICAgICB7aWQ6ICJjIiwgc3Rh
cnQ6IDEwMCwgZW5kOiAzMDB9LAorICAgICAge2lkOiAiZCIsIHN0YXJ0OiAyMDAsIGVuZDogMzAw
fSwKKyAgICAgIHtpZDogImUiLCBzdGFydDogMjAwLCBlbmQ6IDIwMH0KKyAgICBdOworICAgIHZh
ciByZXN1bHQgPSAiIjsKKworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CisgICAgfQorCisgICAgZnVuY3Rpb24g
YW5pbWF0aW9uRW5kZWQoZXZlbnQpIHsKKyAgICAgICAgaWYgKCsrYW5pbXNGaW5pc2hlZCA9PSBu
dW1BbmltcykgeworICAgICAgICAgICAgc2V0VGltZW91dChlbmRUZXN0LCAwKTsgLy8gdGhpcyBz
ZXQgdGltZW91dCBzaG91bGQgYmUgb2sgaW4gdGhlIHRlc3QgZW52aXJvbm1lbnQKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHdlJ3JlIGp1c3QgZ2l2aW5nIHN0
eWxlIGEgY2hhbmNlIHRvIHJlc29sdmUKKyAgICAgICAgfQorICAgIH07CisKKyAgICBmdW5jdGlv
biBlbmRUZXN0KCkgeworCisgICAgICAgIGZvciAodmFyIGk9MDsgaSA8IGV4cGVjdGVkVmFsdWVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZChleHBlY3RlZFZhbHVlc1tpXS5pZCk7CisgICAgICAgICAgICB2YXIgZXhwZWN0ZWRWYWx1
ZSA9IGV4cGVjdGVkVmFsdWVzW2ldLmVuZDsKKyAgICAgICAgICAgIHZhciByZWFsVmFsdWUgPSB3
aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbCkuZ2V0UHJvcGVydHlDU1NWYWx1ZSgibGVmdCIpLmdl
dEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWUuQ1NTX05VTUJFUik7CisgICAgICAgICAgICBp
ZiAoTWF0aC5hYnMoZXhwZWN0ZWRWYWx1ZSAtIHJlYWxWYWx1ZSkgPCBhbGxvd2FuY2UpIHsKKyAg
ICAgICAgICAgICAgcmVzdWx0ICs9ICJQQVNTIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgIHJlc3VsdCArPSAiRkFJTCI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBy
ZXN1bHQgKz0gIiAtIGVuZCBvZiBhbmltYXRpb24gLSBpZDogIiArIGV4cGVjdGVkVmFsdWVzW2ld
LmlkICsgIiBleHBlY3RlZDogIiArIGV4cGVjdGVkVmFsdWUgKyAiIGFjdHVhbDogIiArIHJlYWxW
YWx1ZSArICI8YnI+IjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgncmVzdWx0JykuaW5uZXJIVE1MID0gcmVzdWx0OworCisgICAgICAgIGlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3Rp
ZnlEb25lKCk7CisgICAgfQorCisgICAgd2luZG93Lm9ubG9hZCA9IGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgZm9yICh2YXIgaT0wOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKyAg
ICAgICAgICAgIHZhciBlbCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGV4cGVjdGVkVmFsdWVz
W2ldLmlkKTsKKyAgICAgICAgICAgIHZhciBleHBlY3RlZFZhbHVlID0gZXhwZWN0ZWRWYWx1ZXNb
aV0uc3RhcnQ7CisgICAgICAgICAgICB2YXIgcmVhbFZhbHVlID0gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZWwpLmdldFByb3BlcnR5Q1NTVmFsdWUoImxlZnQiKS5nZXRGbG9hdFZhbHVlKENTU1By
aW1pdGl2ZVZhbHVlLkNTU19OVU1CRVIpOworICAgICAgICAgICAgaWYgKE1hdGguYWJzKGV4cGVj
dGVkVmFsdWUgLSByZWFsVmFsdWUpIDwgYWxsb3dhbmNlKSB7CisgICAgICAgICAgICAgIHJlc3Vs
dCArPSAiUEFTUyI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICByZXN1bHQg
Kz0gIkZBSUwiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ICs9ICIgLSBzdGFy
dCBvZiBhbmltYXRpb24gLSBpZDogIiArIGV4cGVjdGVkVmFsdWVzW2ldLmlkICsgIiBleHBlY3Rl
ZDogIiArIGV4cGVjdGVkVmFsdWUgKyAiIGFjdHVhbDogIiArIHJlYWxWYWx1ZSArICI8YnI+IjsK
KyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJ3ZWJraXRBbmlt
YXRpb25FbmQiLCBhbmltYXRpb25FbmRlZCwgZmFsc2UpOworICAgIH07CisKKyAgPC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhl
IGxlZnQgcHJvcGVydHkgd2l0aCBmb3VyIGRpZmZlcmVudAorZmlsbCBtb2Rlcy4gSXQgYW5pbWF0
ZXMgb3ZlciAwLjEgc2Vjb25kIHdpdGggYSAwLjEgc2Vjb25kIGRlbGF5LgorSXQgdGFrZXMgc25h
cHNob3RzIGF0IGRvY3VtZW50IGxvYWQgYW5kIHRoZSBlbmQgb2YgdGhlIGFuaW1hdGlvbi4KKwor
PGRpdiBpZD0iYSIgY2xhc3M9ImJveCI+CisgIE5vbmUgLSBmcm9tL3RvIHByZXNlbnQKKzwvZGl2
PgorPGRpdiBpZD0iYiIgY2xhc3M9ImJveCI+CisgIEJhY2t3YXJkcyAtIGZyb20vdG8gcHJlc2Vu
dAorPC9kaXY+Cis8ZGl2IGlkPSJjIiBjbGFzcz0iYm94Ij4KKyAgRm9yd2FyZHMgLSBmcm9tL3Rv
IHByZXNlbnQKKzwvZGl2PgorPGRpdiBpZD0iZCIgY2xhc3M9ImJveCI+CisgIEJvdGggLSBmcm9t
L3RvIHByZXNlbnQKKzwvZGl2PgorPGRpdiBpZD0iZSIgY2xhc3M9ImJveCI+CisgIEJvdGggaXRl
cmF0aW5nIC0gZnJvbS90byBwcmVzZW50Cis8L2Rpdj4KKworPGRpdiBpZD0iZiIgY2xhc3M9ImJv
eCI+CisgIE5vbmUgLSBmcm9tIG1pc3NpbmcKKzwvZGl2PgorPGRpdiBpZD0iZyIgY2xhc3M9ImJv
eCI+CisgIEJhY2t3YXJkcyAtIGZyb20gbWlzc2luZworPC9kaXY+Cis8ZGl2IGlkPSJoIiBjbGFz
cz0iYm94Ij4KKyAgRm9yd2FyZHMgLSBmcm9tIG1pc3NpbmcKKzwvZGl2PgorPGRpdiBpZD0iaSIg
Y2xhc3M9ImJveCI+CisgIEJvdGggLSBmcm9tIG1pc3NpbmcKKzwvZGl2PgorPGRpdiBpZD0iaiIg
Y2xhc3M9ImJveCI+CisgIEJvdGggaXRlcmF0aW5nIC0gZnJvbSBtaXNzaW5nCis8L2Rpdj4KKwor
PGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy1leHBlY3Rl
ZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NWNiMDYuLjAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLWV4cGVjdGVk
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyB0ZXN0IHBlcmZvcm1zIGFu
IGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gVGhlICdmcm9tJyBrZXlmcmFtZSBpcyBt
aXNzaW5nIHNvIGl0IHNob3VsZCBub3QgYW5pbWF0ZQotUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMWVjYWFhNS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICsw
LDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5z
aXRpb25hbC8vRU4iCi0gICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4K
LQotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQt
VHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLSAgPHRpdGxlPktleWZy
YW1lcyB0ZXN0IHdpdGggJ2Zyb20nIGtleWZyYW1lIG1pc3Npbmc8L3RpdGxlPgotICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgotICAgICNib3ggewotICAgICAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgICAgIGxlZnQ6IDA7Ci0gICAgICAgIHRvcDogMTAwcHg7Ci0g
ICAgICAgIGhlaWdodDogMTAwcHg7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogYmx1ZTsKLSAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246
IDFzOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsK
LSAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogImFuaW0iOwotICAgIH0KLSAgICBALXdl
YmtpdC1rZXlmcmFtZXMgImFuaW0iIHsKLSAgICAgICAgMjAlICB7IGxlZnQ6IDEwMHB4OyB9Ci0g
ICAgICAgIDQwJSAgeyBsZWZ0OiAxMDBweDsgfQotICAgICAgICA2MCUgIHsgbGVmdDogMjAwcHg7
IH0KLSAgICAgICAgODAlICB7IGxlZnQ6IDIwMHB4OyB9Ci0gICAgICAgIHRvICAgeyBsZWZ0OiAz
MDBweDsgfQotICAgIH0KLSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgCi0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAg
IHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAK
LSAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25F
bGVtZW50V2l0aElkKCJhbmltIiwgMC41LCAiYm94IikpCi0gICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUw6IGFuaW1hdGlvbiBpcyBy
dW5uaW5nIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHdp
bmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXIoJ2xvYWQnLCBzdGFydCwgZmFsc2UpOwotICAgIAotICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxi
b2R5PgotVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0
eS4gVGhlICdmcm9tJyBrZXlmcmFtZSBpcyBtaXNzaW5nIHNvIGl0IHNob3VsZCBub3QgYW5pbWF0
ZQotPGRpdiBpZD0iYm94Ij4KLTwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij4KLTwvZGl2PgotPC9i
b2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFt
ZXMtdG8tbWlzc2luZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZy
YW1lcy10by1taXNzaW5nLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzY5Y2Q0NC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1l
cy10by1taXNzaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAot
VGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gVGhl
ICd0bycga2V5ZnJhbWUgaXMgbWlzc2luZyBzbyBpdCBzaG91bGQgbm90IGFuaW1hdGUKLVBBU1MK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3Npbmcu
aHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRtbApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjNTY4MC4uMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy10by1taXNzaW5nLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw1MiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhU
TUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgotICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0
L2xvb3NlLmR0ZCI+Ci0KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci0g
IDx0aXRsZT5LZXlmcmFtZXMgdGVzdCB3aXRoICd0bycga2V5ZnJhbWUgbWlzc2luZzwvdGl0bGU+
Ci0gIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0gICAgI2JveCB7Ci0g
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgbGVmdDogMDsKLSAgICAgICAgdG9w
OiAxMDBweDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAgICAgICAgd2lkdGg6IDEwMHB4Owot
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlv
bi1kdXJhdGlvbjogMXM7Ci0gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlv
bjogbGluZWFyOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7Ci0gICAg
fQotICAgIEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgewotICAgICAgICBmcm9tIHsgbGVmdDog
NTBweDsgfQotICAgICAgICAyMCUgIHsgbGVmdDogMTAwcHg7IH0KLSAgICAgICAgNDAlICB7IGxl
ZnQ6IDEwMHB4OyB9Ci0gICAgICAgIDYwJSAgeyBsZWZ0OiAyMDBweDsgfQotICAgICAgICA4MCUg
IHsgbGVmdDogMjAwcHg7IH0KLSAgICB9Ci0gICAgPC9zdHlsZT4KLSAgICA8c2NyaXB0IHR5cGU9
InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgotICAgIAotICAgIGZ1bmN0aW9uIHN0
YXJ0KCkKLSAgICB7Ci0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
LSAgICAgICAgCi0gICAgICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlv
bkF0VGltZU9uRWxlbWVudFdpdGhJZCgiYW5pbSIsIDAuNSwgImJveCIpKQotICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMOiBhbmlt
YXRpb24gaXMgcnVubmluZyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgfQotICAgIAot
ICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCdsb2FkJywgc3RhcnQsIGZhbHNlKTsKLSAgICAKLSAgPC9zY3JpcHQ+Ci08
L2hlYWQ+Ci08Ym9keT4KLVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxl
ZnQgcHJvcGVydHkuIFRoZSAndG8nIGtleWZyYW1lIGlzIG1pc3Npbmcgc28gaXQgc2hvdWxkIG5v
dCBhbmltYXRlCi08ZGl2IGlkPSJib3giPgotPC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPgotPC9k
aXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25z
L21pc3NpbmctZnJvbS10by1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL21p
c3NpbmctZnJvbS10by1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uNGRkZjI3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
bWlzc2luZy1mcm9tLXRvLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3Qg
cGVyZm9ybXMgYW5pbWF0aW9ucyBvZiB0aGUgbGVmdCBwcm9wZXJ0eSBvbiBmaXZlIGJveGVzIG92
ZXIgMiBzZWNvbmRzLiBCb3ggMSBoYXMgYWxsIGtleWZyYW1lcy4gQm94IDIgaGFzIGEgbWlzc2lu
ZyAiZnJvbSIga2V5ZnJhbWUuIEJveCAzIGhhcyBhIG1pc3NpbmcgInRvIiBrZXlmcmFtZS4gQm94
IDQgaGFzIGJvdGggImZyb20iIGFuZCAidG8iIGtleWZyYW1lcyBtaXNzaW5nLCBidXQgb3RoZXIg
a2V5ZnJhbWVzIHdoaWNoIHNob3VsZCB0cmlnZ2VyIHRoZSBnZW5lcmF0aW9uIG9mICJmcm9tIiBh
bmQgInRvIi4gQm94IDUgaGFzIG5vIGtleWZyYW1lcywgYW5kIHNob3VsZCBub3QgYW5pbWF0ZS4g
VGhlIHRlc3QgdGFrZXMgMyBzbmFwc2hvdHMgZWFjaCBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0
byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCitQQVNTIC0gYm94NSBhbmltYXRpb24gd2Fz
IG5vdCBydW5uaW5nCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBh
dCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5
IGZvciAiYm94MSIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFT
UyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMS42cyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAxNQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1l
bnQgYXQgMC40cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAK
K1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDEuNnMgc2F3IHNv
bWV0aGluZyBjbG9zZSB0bzogMTUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBl
bGVtZW50IGF0IDAuNHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1MgLSAibGVmdCIg
cHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDIwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAxLjZzIHNh
dyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94
NCIgZWxlbWVudCBhdCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxl
ZnQiIHByb3BlcnR5IGZvciAiYm94NCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAyNQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMS42
cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9t
aXNzaW5nLWZyb20tdG8uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45
YjkyYTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9taXNzaW5n
LWZyb20tdG8uaHRtbApAQCAtMCwwICsxLDEyMiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICIt
Ly9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8aHRtbCBsYW5nPSJlbiI+Cis8aGVhZD4KKyAg
PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
ZXQ9dXRmLTgiPgorICA8dGl0bGU+VGVzdCBhbmltYXRpb24gd2l0aCBtaXNzaW5nIGZyb20gYW5k
IHRvIGtleWZyYW1lczwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbiI+CisgICAgLmJveCB7CisgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBsZWZ0
OiAxMHB4OworICAgICAgdG9wOiAxMHB4OworICAgICAgaGVpZ2h0OiAyMHB4OworICAgICAgd2lk
dGg6IDIwcHg7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOworICAgICAgLXdlYmtpdC1h
bmltYXRpb24tZHVyYXRpb246IDJzOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1
bmN0aW9uOiBsaW5lYXI7CisgICAgfQorICAKKyAgICAjYm94MSB7CisgICAgICAtd2Via2l0LWFu
aW1hdGlvbi1uYW1lOiBhbmltMTsKKyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0x
IHsKKyAgICAgICAgZnJvbSB7IGxlZnQ6IDEwcHg7IH0KKyAgICAgICAgNDAlIHsgbGVmdDogMzBw
eDsgfQorICAgICAgICA2MCUgeyBsZWZ0OiAxMHB4OyB9CisgICAgICAgIHRvIHsgbGVmdDogMjBw
eDsgfQorICAgIH0KKworICAgICNib3gyIHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6
IGFuaW0yOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAgIH0KKyAgICBALXdlYmtp
dC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAgICA0MCUgeyBsZWZ0OiAzMHB4OyB9CisgICAgICAg
IDYwJSB7IGxlZnQ6IDEwcHg7IH0KKyAgICAgICAgdG8geyBsZWZ0OiAyMHB4OyB9CisgICAgfQor
CisgICAgI2JveDMgeworICAgICAgbGVmdDogMjBweDsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9u
LW5hbWU6IGFuaW0zOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CisgICAgfQorICAg
IEAtd2Via2l0LWtleWZyYW1lcyBhbmltMyB7CisgICAgICAgIGZyb20geyBsZWZ0OiAxMHB4OyB9
CisgICAgICAgIDQwJSB7IGxlZnQ6IDMwcHg7IH0KKyAgICAgICAgNjAlIHsgbGVmdDogMTBweDsg
fQorICAgIH0KKworICAgICNib3g0IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFu
aW00OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OworICAgIH0KKyAgICBALXdlYmtp
dC1rZXlmcmFtZXMgYW5pbTQgeworICAgICAgICA0MCUgeyBsZWZ0OiAzMHB4OyB9CisgICAgICAg
IDYwJSB7IGxlZnQ6IDIwcHg7IH0KKyAgICB9CisKKyAgICAjYm94NSB7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1uYW1lOiBhbmltNTsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IG9yYW5nZTsK
KyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW01IHsKKyAgICB9CisgICAgCisgICAg
I3Jlc3VsdCB7CisgICAgICBtYXJnaW4tdG9wOiAyMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKyAg
PHNjcmlwdCBzcmM9ImFuaW1hdGlvbi10ZXN0LWhlbHBlcnMuanMiIHR5cGU9InRleHQvamF2YXNj
cmlwdCIgY2hhcnNldD0idXRmLTgiPjwvc2NyaXB0PgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiPgorCisgICAgY29uc3QgZXhwZWN0ZWRWYWx1ZXMgPSBb
CisgICAgICAvLyBbYW5pbWF0aW9uLW5hbWUsIHRpbWUsIGVsZW1lbnQtaWQsIHByb3BlcnR5LCBl
eHBlY3RlZC12YWx1ZSwgdG9sZXJhbmNlXQorICAgICAgWyJhbmltMSIsIDAuNCwgImJveDEiLCAi
bGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAxLjAsICJib3gxIiwgImxlZnQiLCAyMCwg
Ml0sCisgICAgICBbImFuaW0xIiwgMS42LCAiYm94MSIsICJsZWZ0IiwgMTUsIDJdLAorICAgICAg
WyJhbmltMiIsIDAuNCwgImJveDIiLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTIiLCAx
LjAsICJib3gyIiwgImxlZnQiLCAyMCwgMl0sCisgICAgICBbImFuaW0yIiwgMS42LCAiYm94MiIs
ICJsZWZ0IiwgMTUsIDJdLAorICAgICAgWyJhbmltMyIsIDAuNCwgImJveDMiLCAibGVmdCIsIDIw
LCAyXSwKKyAgICAgIFsiYW5pbTMiLCAxLjAsICJib3gzIiwgImxlZnQiLCAyMCwgMl0sCisgICAg
ICBbImFuaW0zIiwgMS42LCAiYm94MyIsICJsZWZ0IiwgMTUsIDJdLAorICAgICAgWyJhbmltNCIs
IDAuNCwgImJveDQiLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTQiLCAxLjAsICJib3g0
IiwgImxlZnQiLCAyNSwgMl0sCisgICAgICBbImFuaW00IiwgMS42LCAiYm94NCIsICJsZWZ0Iiwg
MTUsIDJdCisgICAgXTsKKworICAgIHJ1bkFuaW1hdGlvblRlc3QoZXhwZWN0ZWRWYWx1ZXMsIGZ1
bmN0aW9uKCkgeworICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgICAg
aWYgKGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0
aElkKCJhbmltNSIsIDAuMSwgImJveDUiKSkKKyAgICAgICAgICAgICAgcmVzdWx0ICs9ICJGQUlM
IC0gYm94NSBhbmltYXRpb24gd2FzIHJ1bm5pbmc8YnI+IjsKKyAgICAgICAgICBlbHNlIAorICAg
ICAgICAgICAgICByZXN1bHQgKz0gIlBBU1MgLSBib3g1IGFuaW1hdGlvbiB3YXMgbm90IHJ1bm5p
bmc8YnI+IjsKKyAgICAgIH0KKyAgICB9KTsKKyAgICAKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KK1RoaXMgdGVzdCBwZXJmb3JtcyBhbmltYXRpb25zIG9mIHRoZSBsZWZ0IHByb3BlcnR5
IG9uIGZpdmUgYm94ZXMgb3ZlciAyIHNlY29uZHMuCitCb3ggMSBoYXMgYWxsIGtleWZyYW1lcy4g
Qm94IDIgaGFzIGEgbWlzc2luZyAiZnJvbSIga2V5ZnJhbWUuCitCb3ggMyBoYXMgYSBtaXNzaW5n
ICJ0byIga2V5ZnJhbWUuCitCb3ggNCBoYXMgYm90aCAiZnJvbSIgYW5kICJ0byIga2V5ZnJhbWVz
IG1pc3NpbmcsIGJ1dCBvdGhlciBrZXlmcmFtZXMgd2hpY2gKK3Nob3VsZCB0cmlnZ2VyIHRoZSBn
ZW5lcmF0aW9uIG9mICJmcm9tIiBhbmQgInRvIi4gQm94IDUgaGFzIG5vIGtleWZyYW1lcywgYW5k
CitzaG91bGQgbm90IGFuaW1hdGUuCitUaGUgdGVzdCB0YWtlcyAzIHNuYXBzaG90cyBlYWNoIGFu
ZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4KKzxk
aXYgY2xhc3M9ImJveCIgaWQ9ImJveDEiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJi
b3gyIj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94MyI+Cis8L2Rpdj4KKzxkaXYg
Y2xhc3M9ImJveCIgaWQ9ImJveDQiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3g1
Ij4KKzwvZGl2PgorPGRpdiBpZD0icmVzdWx0Ij4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBh
ZDExMWE1Li5iZDYzYjU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDEwLTA2LTI1ICBEZWFuIEphY2tzb24g
IDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDExODgK
KyAgICAgICAgQW5pbWF0aW9ucyBzaG91bGQgbm90IHJlcXVpcmUgMCUgYW5kIDEwMCUga2V5ZnJh
bWVzCisKKyAgICAgICAgV2hlbiB3ZSBhcmUgZ2VuZXJhdGluZyB0aGUgYW5pbWF0aW9uIGxpc3Rz
IGluIENTU1N0eWxlU2VsZWN0b3IsCisgICAgICAgIHJhdGhlciB0aGFuIGJhaWwgaWYgd2Ugbm90
aWNlIHRoYXQgImZyb20iIG9yICJ0byIgYXJlIG1pc3NpbmcsIHdlCisgICAgICAgIG5vdyBnZW5l
cmF0ZSBzeW50aGV0aWMga2V5ZnJhbWVzIGZvciB0aG9zZSBjYXNlcy4KKworICAgICAgICBUZXN0
czogYW5pbWF0aW9ucy9maWxsLW1vZGUtbWlzc2luZy1mcm9tLXRvLWtleWZyYW1lcy5odG1sCisg
ICAgICAgICAgICAgICBhbmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sCisKKyAgICAgICAg
KiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNl
bGVjdG9yOjpnZW5lcmF0ZUtleWZyYW1lU3R5bGUpOgorICAgICAgICAgICAgICAgIE1vdmVkIGlu
ZGl2aWR1YWwga2V5ZnJhbWUgZ2VuZXJhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uLgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24p
OgorICAgICAgICAgICAgICAgIENhbGwgdGhlIG5ldyBmdW5jdGlvbiBhYm92ZSBmb3IgcmVndWxh
ciBrZXlmcmFtZXMsIGFuZAorICAgICAgICAgICAgICAgIGFsc28gY2hlY2sgZm9yIG1pc3Npbmcg
a2V5ZnJhbWVzIGFuZCBnZW5lcmF0ZSB0aGVtIGlmCisgICAgICAgICAgICAgICAgbmVjZXNzYXJ5
LgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisKIDIwMTAtMDYtMTcgIEFuZHkg
RXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJu
c3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDRmNDAzOGMuLmU2NTQxM2UgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xMzcyLDYgKzEzNzIsNjIgQEAgUGFzc1JlZlB0
cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnQq
IGUsIFJlbmRlclN0eWwKICAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7CiB9CiAKK3ZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6Z2VuZXJhdGVLZXlmcmFtZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
KiBlbGVtZW50U3R5bGUsIGNvbnN0IFdlYktpdENTU0tleWZyYW1lUnVsZSoga2V5ZnJhbWVSdWxl
LCBLZXlmcmFtZUxpc3QmIGxpc3QpCit7CisgICAgaWYgKGtleWZyYW1lUnVsZS0+c3R5bGUoKSkK
KyAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKGtleWZyYW1lUnVsZS0+c3R5bGUoKSk7CisK
KyAgICBBU1NFUlQoIW1fc3R5bGUpOworCisgICAgLy8gQ3JlYXRlIHRoZSBzdHlsZQorICAgIG1f
c3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoZWxlbWVudFN0eWxlKTsKKworICAgIG1fbGluZUhl
aWdodFZhbHVlID0gMDsKKworICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gYm90aGVyIHdpdGggIWlt
cG9ydGFudC4gU2luY2UgdGhlcmUgaXMgb25seSBldmVyIG9uZQorICAgIC8vIGRlY2wsIHRoZXJl
J3Mgbm90aGluZyB0byBvdmVycmlkZS4gU28ganVzdCBhZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMu
CisgICAgaWYgKGtleWZyYW1lUnVsZS0+c3R5bGUoKSkKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlv
bnM8dHJ1ZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOworCisgICAgLy8g
SWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgorICAg
IGlmIChtX2ZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgLy8gTGluZS1o
ZWlnaHQgaXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXpl
CisgICAgaWYgKG1fbGluZUhlaWdodFZhbHVlKQorICAgICAgICBhcHBseVByb3BlcnR5KENTU1By
b3BlcnR5TGluZUhlaWdodCwgbV9saW5lSGVpZ2h0VmFsdWUpOworCisgICAgLy8gTm93IGRvIHJl
c3Qgb2YgdGhlIHByb3BlcnRpZXMuCisgICAgaWYgKGtleWZyYW1lUnVsZS0+c3R5bGUoKSkKKyAg
ICAgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5z
aXplKCkgLSAxKTsKKworICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0
aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLAorICAgIC8vIGdvIGFoZWFkIGFuZCB1cGRhdGUg
aXQgYSBzZWNvbmQgdGltZS4KKyAgICBpZiAobV9mb250RGlydHkpCisgICAgICAgIHVwZGF0ZUZv
bnQoKTsKKworICAgIC8vIEFkZCBhbGwgdGhlIGFuaW1hdGluZyBwcm9wZXJ0aWVzIHRvIHRoZSBs
aXN0CisgICAgaWYgKGtleWZyYW1lUnVsZS0+c3R5bGUoKSkgeworICAgICAgICBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0ga2V5ZnJhbWVSdWxlLT5zdHls
ZSgpLT5lbmQoKTsKKyAgICAgICAgZm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBrZXlmcmFtZVJ1bGUtPnN0eWxlKCktPmJlZ2luKCk7IGl0ICE9IGVu
ZDsgKytpdCkgeworICAgICAgICAgICAgaW50IHByb3BlcnR5ID0gKCppdCkuaWQoKTsKKyAgICAg
ICAgICAgIC8vIFRpbWluZy1mdW5jdGlvbiB3aXRoaW4ga2V5ZnJhbWVzIGlzIHNwZWNpYWwsIGJl
Y2F1c2UgaXQgaXMgbm90IGFuaW1hdGVkOyBpdCBqdXN0CisgICAgICAgICAgICAvLyBkZXNjcmli
ZXMgdGhlIHRpbWluZyBmdW5jdGlvbiBiZXR3ZWVuIHRoaXMga2V5ZnJhbWUgYW5kIHRoZSBuZXh0
LgorICAgICAgICAgICAgaWYgKHByb3BlcnR5ICE9IENTU1Byb3BlcnR5V2Via2l0QW5pbWF0aW9u
VGltaW5nRnVuY3Rpb24pCisgICAgICAgICAgICAgICAgbGlzdC5hZGRQcm9wZXJ0eShwcm9wZXJ0
eSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBzdHlsZSB0
byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGltZXMKKyAgICBWZWN0b3I8ZmxvYXQ+IGtleXM7Cisg
ICAga2V5ZnJhbWVSdWxlLT5nZXRLZXlzKGtleXMpOworICAgIGZvciAoc2l6ZV90IGtleUluZGV4
ID0gMDsga2V5SW5kZXggPCBrZXlzLnNpemUoKTsgKytrZXlJbmRleCkgeworICAgICAgICBmbG9h
dCBrZXkgPSBrZXlzW2tleUluZGV4XTsKKyAgICAgICAgbGlzdC5pbnNlcnQoa2V5LCBtX3N0eWxl
KTsKKyAgICB9CisgICAgbV9zdHlsZSA9IDA7Cit9CisKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
a2V5ZnJhbWVTdHlsZXNGb3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUq
IGVsZW1lbnRTdHlsZSwgS2V5ZnJhbWVMaXN0JiBsaXN0KQogewogICAgIGxpc3QuY2xlYXIoKTsK
QEAgLTEzOTMsNjUgKzE0NDksMjUgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0
eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSoKICAgICAgICAg
aW5pdEVsZW1lbnQoZSk7CiAgICAgICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSk7CiAgICAgICAg
IAotICAgICAgICBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIGtmID0gcnVsZS0+aXRlbShp
KTsKLSAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKGtmLT5zdHlsZSgpKTsKLQotICAgICAg
ICBBU1NFUlQoIW1fc3R5bGUpOwotCi0gICAgICAgIC8vIENyZWF0ZSB0aGUgc3R5bGUKLSAgICAg
ICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShlbGVtZW50U3R5bGUpOwotICAgICAgICAK
LSAgICAgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOwotICAgICAgICAKLSAgICAgICAgLy8gV2Ug
ZG9uJ3QgbmVlZCB0byBib3RoZXIgd2l0aCAhaW1wb3J0YW50LiBTaW5jZSB0aGVyZSBpcyBvbmx5
IGV2ZXIgb25lCi0gICAgICAgIC8vIGRlY2wsIHRoZXJlJ3Mgbm90aGluZyB0byBvdmVycmlkZS4g
U28ganVzdCBhZGQgdGhlIGZpcnN0IHByb3BlcnRpZXMuCi0gICAgICAgIGFwcGx5RGVjbGFyYXRp
b25zPHRydWU+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKLSAgICAgICAg
Ci0gICAgICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRl
IGl0IG5vdy4KLSAgICAgICAgaWYgKG1fZm9udERpcnR5KQotICAgICAgICAgICAgdXBkYXRlRm9u
dCgpOwotCi0gICAgICAgIC8vIExpbmUtaGVpZ2h0IGlzIHNldCB3aGVuIHdlIGFyZSBzdXJlIHdl
IGRlY2lkZWQgb24gdGhlIGZvbnQtc2l6ZQotICAgICAgICBpZiAobV9saW5lSGVpZ2h0VmFsdWUp
Ci0gICAgICAgICAgICBhcHBseVByb3BlcnR5KENTU1Byb3BlcnR5TGluZUhlaWdodCwgbV9saW5l
SGVpZ2h0VmFsdWUpOworICAgICAgICBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqIGtleWZy
YW1lUnVsZSA9IHJ1bGUtPml0ZW0oaSk7CiAgICAgICAgIAotICAgICAgICAvLyBOb3cgZG8gcmVz
dCBvZiB0aGUgcHJvcGVydGllcy4KLSAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnM8ZmFsc2U+KGZh
bHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKLSAgICAgICAgCi0gICAgICAgIC8v
IElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250
IHByb3BzLCAKLSAgICAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1l
LgotICAgICAgICBpZiAobV9mb250RGlydHkpCi0gICAgICAgICAgICB1cGRhdGVGb250KCk7Ci0K
LSAgICAgICAgLy8gQWRkIGFsbCB0aGUgYW5pbWF0aW5nIHByb3BlcnRpZXMgdG8gdGhlIGxpc3QK
LSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IGtmLT5zdHlsZSgpLT5lbmQoKTsKLSAgICAgICAgZm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBrZi0+c3R5bGUoKS0+YmVnaW4oKTsgaXQgIT0gZW5k
OyArK2l0KSB7Ci0gICAgICAgICAgICBpbnQgcHJvcGVydHkgPSAoKml0KS5pZCgpOwotICAgICAg
ICAgICAgLy8gVGltaW5nLWZ1bmN0aW9uIHdpdGhpbiBrZXlmcmFtZXMgaXMgc3BlY2lhbCwgYmVj
YXVzZSBpdCBpcyBub3QgYW5pbWF0ZWQ7IGl0IGp1c3QKLSAgICAgICAgICAgIC8vIGRlc2NyaWJl
cyB0aGUgdGltaW5nIGZ1bmN0aW9uIGJldHdlZW4gdGhpcyBrZXlmcmFtZSBhbmQgdGhlIG5leHQu
Ci0gICAgICAgICAgICBpZiAocHJvcGVydHkgIT0gQ1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25U
aW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgICAgICBsaXN0LmFkZFByb3BlcnR5KHByb3BlcnR5
KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gQWRkIHRoaXMga2V5ZnJhbWUgc3R5
bGUgdG8gYWxsIHRoZSBpbmRpY2F0ZWQga2V5IHRpbWVzCi0gICAgICAgIFZlY3RvcjxmbG9hdD4g
a2V5czsKLSAgICAgICAga2YtPmdldEtleXMoa2V5cyk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGtl
eUluZGV4ID0gMDsga2V5SW5kZXggPCBrZXlzLnNpemUoKTsgKytrZXlJbmRleCkgewotICAgICAg
ICAgICAgZmxvYXQga2V5ID0ga2V5c1trZXlJbmRleF07Ci0gICAgICAgICAgICBsaXN0Lmluc2Vy
dChrZXksIG1fc3R5bGUpOwotICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUgPSAwOworICAgICAg
ICBnZW5lcmF0ZUtleWZyYW1lU3R5bGUoZWxlbWVudFN0eWxlLCBrZXlmcmFtZVJ1bGUsIGxpc3Qp
OwogICAgIH0KICAgICAKLSAgICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYSAwJSBhbmQgYSAxMDAl
IGtleWZyYW1lCi0gICAgZmxvYXQgZmlyc3QgPSAtMTsKLSAgICBmbG9hdCBsYXN0ID0gLTE7Ci0g
ICAgaWYgKGxpc3Quc2l6ZSgpID49IDIpIHsKLSAgICAgICAgZmlyc3QgPSBsaXN0LmJlZ2luS2V5
ZnJhbWVzKCktPmtleSgpOwotICAgICAgICBsYXN0ID0gKGxpc3QuZW5kS2V5ZnJhbWVzKCktMSkt
PmtleSgpOwotICAgIH0KLSAgICBpZiAoZmlyc3QgIT0gMCB8fCBsYXN0ICE9IDEpCi0gICAgICAg
IGxpc3QuY2xlYXIoKTsKKyAgICAvLyBJZiB0aGUgMCUga2V5ZnJhbWUgaXMgbWlzc2luZywgY3Jl
YXRlIGl0IChidXQgb25seSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3RoZXIga2V5ZnJhbWUp
CisgICAgaW50IGluaXRpYWxMaXN0U2l6ZSA9IGxpc3Quc2l6ZSgpOworICAgIGlmIChpbml0aWFs
TGlzdFNpemUgPiAwICYmIGxpc3QuYmVnaW5LZXlmcmFtZXMoKS0+a2V5KCkgIT0gMCkgeworICAg
ICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENTU0tl
eWZyYW1lUnVsZTo6Y3JlYXRlKCk7CisgICAgICAgIGtleWZyYW1lLT5zZXRLZXlUZXh0KCIwJSIp
OworICAgICAgICBnZW5lcmF0ZUtleWZyYW1lU3R5bGUoZWxlbWVudFN0eWxlLCBrZXlmcmFtZS5n
ZXQoKSwgbGlzdCk7CisgICAgfQorCisgICAgLy8gSWYgdGhlIDEwMCUga2V5ZnJhbWUgaXMgbWlz
c2luZywgY3JlYXRlIGl0IChidXQgb25seSBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3RoZXIg
a2V5ZnJhbWUpCisgICAgaWYgKGluaXRpYWxMaXN0U2l6ZSA+IDAgJiYgKGxpc3QuZW5kS2V5ZnJh
bWVzKCktMSktPmtleSgpICE9IDEpIHsKKyAgICAgICAgUmVmUHRyPFdlYktpdENTU0tleWZyYW1l
UnVsZT4ga2V5ZnJhbWUgPSBXZWJLaXRDU1NLZXlmcmFtZVJ1bGU6OmNyZWF0ZSgpOworICAgICAg
ICBrZXlmcmFtZS0+c2V0S2V5VGV4dCgiMTAwJSIpOworICAgICAgICBnZW5lcmF0ZUtleWZyYW1l
U3R5bGUoZWxlbWVudFN0eWxlLCBrZXlmcmFtZS5nZXQoKSwgbGlzdCk7CisgICAgfQogfQogCiBQ
YXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVs
ZW1lbnQoUHNldWRvSWQgcHNldWRvLCBFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5
bGUsIGJvb2wgbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3MpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5k
ZXggMDVjZDEwOS4uMTQ5ZmRkNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtNjQsNiArNjQs
NyBAQCBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hl
ZXRMaXN0OwogY2xhc3MgU3R5bGVkRWxlbWVudDsKK2NsYXNzIFdlYktpdENTU0tleWZyYW1lUnVs
ZTsKIGNsYXNzIFdlYktpdENTU0tleWZyYW1lc1J1bGU7CiAKIGNsYXNzIE1lZGlhUXVlcnlSZXN1
bHQgOiBwdWJsaWMgTm9uY29weWFibGUgewpAQCAtMTExLDYgKzExMiw4IEBAIHB1YmxpYzoKIAog
ICAgICAgICBSZW5kZXJTdHlsZSogc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgp
OyB9CiAKKyAgICAgICAgdm9pZCBnZW5lcmF0ZUtleWZyYW1lU3R5bGUoY29uc3QgUmVuZGVyU3R5
bGUqLCBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUqLCBLZXlmcmFtZUxpc3QmKTsKKwogICAg
IHB1YmxpYzoKICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxsIGdpdmUgYmFjayB0aGUgc2V0
IG9mIHJ1bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVtZW50IChvciBhIHBzZXVkby1l
bGVtZW50KS4KICAgICAgICAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gc3R5bGVSdWxlc0ZvckVs
ZW1lbnQoRWxlbWVudCosIGJvb2wgYXV0aG9yT25seSk7Cg==
</data>
<flag name="review"
          id="46826"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59806</attachid>
            <date>2010-06-25 15:55:20 -0700</date>
            <delta_ts>2010-06-25 16:39:46 -0700</delta_ts>
            <desc>updated patch with review fixes, new testcase for HW animations, and a manual test</desc>
            <filename>default-0-100.patch</filename>
            <type>text/plain</type>
            <size>26536</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2Q2ODc5Li45NGU5MmU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYt
MjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTE4OAorICAgICAgICBBbmltYXRpb25zIHNob3VsZCBub3QgcmVxdWlyZSAw
JSBhbmQgMTAwJSBrZXlmcmFtZXMKKworICAgICAgICAqIGFuaW1hdGlvbnMvZmlsbC1tb2RlLW1p
c3NpbmctZnJvbS10by1rZXlmcmFtZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL2ZpbGwtbW9kZS1taXNzaW5nLWZyb20tdG8ta2V5ZnJhbWVzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGFuaW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy1leHBlY3RlZC50
eHQ6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5n
Lmh0bWw6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlzc2lu
Zy1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9rZXlmcmFtZXMt
dG8tbWlzc2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvbWlzc2luZy1m
cm9tLXRvLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogYW5pbWF0aW9ucy9taXNzaW5n
LWZyb20tdG8uaHRtbDogQWRkZWQuCisKIDIwMTAtMDYtMTcgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4uCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmctZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLWV4
cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ1Y2IwNi4uMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmctZXhw
ZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1UaGlzIHRlc3QgcGVyZm9y
bXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsZWZ0IHByb3BlcnR5LiBUaGUgJ2Zyb20nIGtleWZyYW1l
IGlzIG1pc3Npbmcgc28gaXQgc2hvdWxkIG5vdCBhbmltYXRlCi1QQVNTCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1mcm9tLW1pc3NpbmcuaHRtbCBiL0xheW91
dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy5odG1sCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxZWNhYWE1Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Fu
aW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEg
VHJhbnNpdGlvbmFsLy9FTiIKLSAgICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5k
dGQiPgotCi08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLSAgPG1ldGEgaHR0cC1lcXVpdj0iQ29u
dGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiPgotICA8dGl0bGU+
S2V5ZnJhbWVzIHRlc3Qgd2l0aCAnZnJvbScga2V5ZnJhbWUgbWlzc2luZzwvdGl0bGU+Ci0gIDxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0gICAgI2JveCB7Ci0gICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICAgICAgbGVmdDogMDsKLSAgICAgICAgdG9wOiAxMDBw
eDsKLSAgICAgICAgaGVpZ2h0OiAxMDBweDsKLSAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJh
dGlvbjogMXM7Ci0gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGlu
ZWFyOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7Ci0gICAgfQotICAg
IEAtd2Via2l0LWtleWZyYW1lcyAiYW5pbSIgewotICAgICAgICAyMCUgIHsgbGVmdDogMTAwcHg7
IH0KLSAgICAgICAgNDAlICB7IGxlZnQ6IDEwMHB4OyB9Ci0gICAgICAgIDYwJSAgeyBsZWZ0OiAy
MDBweDsgfQotICAgICAgICA4MCUgIHsgbGVmdDogMjAwcHg7IH0KLSAgICAgICAgdG8gICB7IGxl
ZnQ6IDMwMHB4OyB9Ci0gICAgfQotICAgIDwvc3R5bGU+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KLSAgICAKLSAgICBmdW5jdGlvbiBzdGFydCgp
Ci0gICAgewotICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Ci0gICAg
ICAgIAotICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRp
bWVPbkVsZW1lbnRXaXRoSWQoImFuaW0iLCAwLjUsICJib3giKSkKLSAgICAgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5lckhUTUwgPSAiRkFJTDogYW5pbWF0aW9u
IGlzIHJ1bm5pbmciOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIlBBU1MiOwotICAgIH0KLSAgICAKLSAgICBp
ZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgICAgICB3aW5kb3cuYWRkRXZlbnRM
aXN0ZW5lcignbG9hZCcsIHN0YXJ0LCBmYWxzZSk7Ci0gICAgCi0gIDwvc2NyaXB0PgotPC9oZWFk
PgotPGJvZHk+Ci1UaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsZWZ0IHBy
b3BlcnR5LiBUaGUgJ2Zyb20nIGtleWZyYW1lIGlzIG1pc3Npbmcgc28gaXQgc2hvdWxkIG5vdCBh
bmltYXRlCi08ZGl2IGlkPSJib3giPgotPC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPgotPC9kaXY+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tl
eWZyYW1lcy10by1taXNzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMv
a2V5ZnJhbWVzLXRvLW1pc3NpbmctZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3NjljZDQ0Li4wMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5
ZnJhbWVzLXRvLW1pc3NpbmctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMiArMCww
IEBACi1UaGlzIHRlc3QgcGVyZm9ybXMgYW4gYW5pbWF0aW9uIG9mIHRoZSBsZWZ0IHByb3BlcnR5
LiBUaGUgJ3RvJyBrZXlmcmFtZSBpcyBtaXNzaW5nIHNvIGl0IHNob3VsZCBub3QgYW5pbWF0ZQot
UEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlz
c2luZy5odG1sIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlzc2luZy5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNGM1NjgwLi4wMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCi0gICAiaHR0cDovL3d3dy53My5vcmcvVFIv
aHRtbDQvbG9vc2UuZHRkIj4KLQotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0
dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04
Ij4KLSAgPHRpdGxlPktleWZyYW1lcyB0ZXN0IHdpdGggJ3RvJyBrZXlmcmFtZSBtaXNzaW5nPC90
aXRsZT4KLSAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KLSAgICAjYm94
IHsKLSAgICAgICAgcG9zaXRpb246IGFic29sdXRlOwotICAgICAgICBsZWZ0OiAwOwotICAgICAg
ICB0b3A6IDEwMHB4OwotICAgICAgICBoZWlnaHQ6IDEwMHB4OwotICAgICAgICB3aWR0aDogMTAw
cHg7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7Ci0gICAgICAgIC13ZWJraXQtYW5p
bWF0aW9uLWR1cmF0aW9uOiAxczsKLSAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1
bmN0aW9uOiBsaW5lYXI7Ci0gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6ICJhbmltIjsK
LSAgICB9Ci0gICAgQC13ZWJraXQta2V5ZnJhbWVzICJhbmltIiB7Ci0gICAgICAgIGZyb20geyBs
ZWZ0OiA1MHB4OyB9Ci0gICAgICAgIDIwJSAgeyBsZWZ0OiAxMDBweDsgfQotICAgICAgICA0MCUg
IHsgbGVmdDogMTAwcHg7IH0KLSAgICAgICAgNjAlICB7IGxlZnQ6IDIwMHB4OyB9Ci0gICAgICAg
IDgwJSAgeyBsZWZ0OiAyMDBweDsgfQotICAgIH0KLSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+Ci0gICAgCi0gICAgZnVuY3Rp
b24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGxheW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5p
bWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKCJhbmltIiwgMC41LCAiYm94IikpCi0gICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUw6
IGFuaW1hdGlvbiBpcyBydW5uaW5nIjsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJQQVNTIjsKLSAgICB9Ci0g
ICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93
LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFydCwgZmFsc2UpOwotICAgIAotICA8L3Njcmlw
dD4KLTwvaGVhZD4KLTxib2R5PgotVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0
aGUgbGVmdCBwcm9wZXJ0eS4gVGhlICd0bycga2V5ZnJhbWUgaXMgbWlzc2luZyBzbyBpdCBzaG91
bGQgbm90IGFuaW1hdGUKLTxkaXYgaWQ9ImJveCI+Ci08L2Rpdj4KLTxkaXYgaWQ9InJlc3VsdCI+
Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1h
dGlvbnMvbWlzc2luZy1mcm9tLXRvLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvbWlzc2luZy1mcm9tLXRvLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi40ZGRmMjdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0
aW9ucy9taXNzaW5nLWZyb20tdG8tZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMg
dGVzdCBwZXJmb3JtcyBhbmltYXRpb25zIG9mIHRoZSBsZWZ0IHByb3BlcnR5IG9uIGZpdmUgYm94
ZXMgb3ZlciAyIHNlY29uZHMuIEJveCAxIGhhcyBhbGwga2V5ZnJhbWVzLiBCb3ggMiBoYXMgYSBt
aXNzaW5nICJmcm9tIiBrZXlmcmFtZS4gQm94IDMgaGFzIGEgbWlzc2luZyAidG8iIGtleWZyYW1l
LiBCb3ggNCBoYXMgYm90aCAiZnJvbSIgYW5kICJ0byIga2V5ZnJhbWVzIG1pc3NpbmcsIGJ1dCBv
dGhlciBrZXlmcmFtZXMgd2hpY2ggc2hvdWxkIHRyaWdnZXIgdGhlIGdlbmVyYXRpb24gb2YgImZy
b20iIGFuZCAidG8iLiBCb3ggNSBoYXMgbm8ga2V5ZnJhbWVzLCBhbmQgc2hvdWxkIG5vdCBhbmlt
YXRlLiBUaGUgdGVzdCB0YWtlcyAzIHNuYXBzaG90cyBlYWNoIGFuZCBleHBlY3RzIGVhY2ggcmVz
dWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCByYW5nZS4KK1BBU1MgLSBib3g1IGFuaW1hdGlv
biB3YXMgbm90IHJ1bm5pbmcKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gxIiBlbGVt
ZW50IGF0IDAuNHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1MgLSAibGVmdCIgcHJv
cGVydHkgZm9yICJib3gxIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIw
CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAxLjZzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDE1CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MiIg
ZWxlbWVudCBhdCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxlZnQi
IHByb3BlcnR5IGZvciAiYm94MiIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRv
OiAyMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMS42cyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJv
eDMiIGVsZW1lbnQgYXQgMC40cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJs
ZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDMiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMjAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDEu
NnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMTUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9y
ICJib3g0IiBlbGVtZW50IGF0IDAuNHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1Mg
LSAibGVmdCIgcHJvcGVydHkgZm9yICJib3g0IiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcg
Y2xvc2UgdG86IDI1CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NCIgZWxlbWVudCBh
dCAxLjZzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9taXNzaW5nLWZyb20tdG8tdHJhbnNmb3Jtcy1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMxZWU0ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLXRyYW5z
Zm9ybXMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTUgQEAKK1RoaXMgdGVzdCBwZXJmb3JtcyBh
bmltYXRpb25zIG9mIHRoZSBsZWZ0IHByb3BlcnR5IG9uIGZpdmUgYm94ZXMgb3ZlciAyIHNlY29u
ZHMuIEJveCAxIGhhcyBhbGwga2V5ZnJhbWVzLiBCb3ggMiBoYXMgYSBtaXNzaW5nICJmcm9tIiBr
ZXlmcmFtZS4gQm94IDMgaGFzIGEgbWlzc2luZyAidG8iIGtleWZyYW1lLiBCb3ggNCBoYXMgYm90
aCAiZnJvbSIgYW5kICJ0byIga2V5ZnJhbWVzIG1pc3NpbmcsIGJ1dCBvdGhlciBrZXlmcmFtZXMg
d2hpY2ggc2hvdWxkIHRyaWdnZXIgdGhlIGdlbmVyYXRpb24gb2YgImZyb20iIGFuZCAidG8iLiBC
b3ggNSBoYXMgbm8ga2V5ZnJhbWVzLCBhbmQgc2hvdWxkIG5vdCBhbmltYXRlLiBUaGUgdGVzdCB0
YWtlcyAzIHNuYXBzaG90cyBlYWNoIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhp
biBhIHNwZWNpZmllZCByYW5nZS4KK1BBU1MgLSBib3g1IGFuaW1hdGlvbiB3YXMgbm90IHJ1bm5p
bmcKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVu
dCBhdCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gIndlYmtpdFRyYW5z
Zm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBj
bG9zZSB0bzogMjAKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94
MSIgZWxlbWVudCBhdCAxLjZzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitQQVNTIC0gIndl
YmtpdFRyYW5zZm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMC40cyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0uNCIgcHJvcGVy
dHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQ
QVNTIC0gIndlYmtpdFRyYW5zZm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQg
MS42cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAxNQorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0u
NCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuNHMgc2F3IHNvbWV0aGluZyBjbG9z
ZSB0bzogMjAKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94MyIg
ZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJ3ZWJraXRU
cmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDEuNnMgc2F3IHNvbWV0
aGluZyBjbG9zZSB0bzogMTUKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZv
ciAiYm94NCIgZWxlbWVudCBhdCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNT
IC0gIndlYmtpdFRyYW5zZm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMXMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjUKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHBy
b3BlcnR5IGZvciAiYm94NCIgZWxlbWVudCBhdCAxLjZzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86
IDE1CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRv
LXRyYW5zZm9ybXMuaHRtbCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRv
LXRyYW5zZm9ybXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDlj
N2QzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9taXNzaW5nLWZy
b20tdG8tdHJhbnNmb3Jtcy5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgaHRtbCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxo
ZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRt
bDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0IGFuaW1hdGlvbiB3aXRoIG1pc3Npbmcg
ZnJvbSBhbmQgdG8ga2V5ZnJhbWVzPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAg
ICAgIGxlZnQ6IDEwcHg7CisgICAgICB0b3A6IDEwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7Cisg
ICAgICB3aWR0aDogMjBweDsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEw
cHgpOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0
aW9uLWR1cmF0aW9uOiAyczsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlv
bjogbGluZWFyOworICAgIH0KKyAgCisgICAgI2JveDEgeworICAgICAgLXdlYmtpdC1hbmltYXRp
b24tbmFtZTogYW5pbTE7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltMSB7Cisg
ICAgICBmcm9tIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7IH0KKyAgICAg
IDQwJSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpOyB9CisgICAgICA2MCUg
eyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMHB4KTsgfQorICAgICAgdG8geyAtd2Vi
a2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsgfQorICAgIH0KKworICAgICNib3gyIHsK
KyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0yOworICAgICAgYmFja2dyb3VuZC1j
b2xvcjogcmVkOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAg
NDAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7IH0KKyAgICAgIDYwJSB7
IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOyB9CisgICAgICB0byB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDIwcHgpOyB9CisgICAgfQorCisgICAgI2JveDMgewor
ICAgICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CisgICAgICAtd2Via2l0
LWFuaW1hdGlvbi1uYW1lOiBhbmltMzsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwor
ICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTMgeworICAgICAgZnJvbSB7IC13ZWJr
aXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOyB9CisgICAgICA0MCUgeyAtd2Via2l0LXRy
YW5zZm9ybTogdHJhbnNsYXRlWCgzMHB4KTsgfQorICAgICAgNjAlIHsgLXdlYmtpdC10cmFuc2Zv
cm06IHRyYW5zbGF0ZVgoMTBweCk7IH0KKyAgICB9CisKKyAgICAjYm94NCB7CisgICAgICAtd2Vi
a2l0LWFuaW1hdGlvbi1uYW1lOiBhbmltNDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxv
dzsKKyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW00IHsKKyAgICAgIDQwJSB7IC13
ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpOyB9CisgICAgICA2MCUgeyAtd2Via2l0
LXRyYW5zZm9ybTogdHJhbnNsYXRlWCgyMHB4KTsgfQorICAgIH0KKworICAgICNib3g1IHsKKyAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW01OworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogb3JhbmdlOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTUgeworICAgIH0K
KyAgICAKKyAgICAjcmVzdWx0IHsKKyAgICAgIG1hcmdpbi10b3A6IDIwcHg7CisgICAgfQorICA8
L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3Rl
ZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwg
cHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbImFuaW0xIiwgMC40
LCAiYm94MSIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAx
LjAsICJib3gxIiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAgICAgWyJhbmltMSIs
IDEuNiwgImJveDEiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisgICAgICBbImFuaW0y
IiwgMC40LCAiYm94MiIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5p
bTIiLCAxLjAsICJib3gyIiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAgICAgWyJh
bmltMiIsIDEuNiwgImJveDIiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisgICAgICBb
ImFuaW0zIiwgMC40LCAiYm94MyIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAg
IFsiYW5pbTMiLCAxLjAsICJib3gzIiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAg
ICAgWyJhbmltMyIsIDEuNiwgImJveDMiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisg
ICAgICBbImFuaW00IiwgMC40LCAiYm94NCIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwK
KyAgICAgIFsiYW5pbTQiLCAxLjAsICJib3g0IiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjUsIDJd
LAorICAgICAgWyJhbmltNCIsIDEuNiwgImJveDQiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwg
Ml0KKyAgICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgZnVuY3Rp
b24oKSB7CisgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICBpZiAo
bGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQo
ImFuaW01IiwgMC4xLCAiYm94NSIpKQorICAgICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBi
b3g1IGFuaW1hdGlvbiB3YXMgcnVubmluZzxicj4iOworICAgICAgICAgIGVsc2UgCisgICAgICAg
ICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIGJveDUgYW5pbWF0aW9uIHdhcyBub3QgcnVubmluZzxi
cj4iOworICAgICAgfQorICAgIH0pOworICAgIAorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5
PgorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuaW1hdGlvbnMgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0
eSBvbiBmaXZlIGJveGVzIG92ZXIgMiBzZWNvbmRzLgorQm94IDEgaGFzIGFsbCBrZXlmcmFtZXMu
IEJveCAyIGhhcyBhIG1pc3NpbmcgImZyb20iIGtleWZyYW1lLgorQm94IDMgaGFzIGEgbWlzc2lu
ZyAidG8iIGtleWZyYW1lLgorQm94IDQgaGFzIGJvdGggImZyb20iIGFuZCAidG8iIGtleWZyYW1l
cyBtaXNzaW5nLCBidXQgb3RoZXIga2V5ZnJhbWVzIHdoaWNoCitzaG91bGQgdHJpZ2dlciB0aGUg
Z2VuZXJhdGlvbiBvZiAiZnJvbSIgYW5kICJ0byIuIEJveCA1IGhhcyBubyBrZXlmcmFtZXMsIGFu
ZAorc2hvdWxkIG5vdCBhbmltYXRlLgorVGhlIHRlc3QgdGFrZXMgMyBzbmFwc2hvdHMgZWFjaCBh
bmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCis8
ZGl2IGNsYXNzPSJib3giIGlkPSJib3gxIj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0i
Ym94MiI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDMiPgorPC9kaXY+Cis8ZGl2
IGNsYXNzPSJib3giIGlkPSJib3g0Ij4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94
NSI+Cis8L2Rpdj4KKzxkaXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliOTJhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9hbmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sCkBAIC0wLDAgKzEsMTIyIEBA
Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9u
YWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxo
dG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUi
IGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0IGFuaW1h
dGlvbiB3aXRoIG1pc3NpbmcgZnJvbSBhbmQgdG8ga2V5ZnJhbWVzPC90aXRsZT4KKyAgPHN0eWxl
IHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHBvc2l0
aW9uOiByZWxhdGl2ZTsKKyAgICAgIGxlZnQ6IDEwcHg7CisgICAgICB0b3A6IDEwcHg7CisgICAg
ICBoZWlnaHQ6IDIwcHg7CisgICAgICB3aWR0aDogMjBweDsKKyAgICAgIGJhY2tncm91bmQtY29s
b3I6IGJsdWU7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CisgICAgICAt
d2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICB9CisgIAorICAg
ICNib3gxIHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0xOworICAgIH0KKyAg
ICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTEgeworICAgICAgICBmcm9tIHsgbGVmdDogMTBweDsg
fQorICAgICAgICA0MCUgeyBsZWZ0OiAzMHB4OyB9CisgICAgICAgIDYwJSB7IGxlZnQ6IDEwcHg7
IH0KKyAgICAgICAgdG8geyBsZWZ0OiAyMHB4OyB9CisgICAgfQorCisgICAgI2JveDIgeworICAg
ICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTI7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZWQ7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltMiB7CisgICAgICAgIDQw
JSB7IGxlZnQ6IDMwcHg7IH0KKyAgICAgICAgNjAlIHsgbGVmdDogMTBweDsgfQorICAgICAgICB0
byB7IGxlZnQ6IDIwcHg7IH0KKyAgICB9CisKKyAgICAjYm94MyB7CisgICAgICBsZWZ0OiAyMHB4
OworICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTM7CisgICAgICBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsKKyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0zIHsKKyAg
ICAgICAgZnJvbSB7IGxlZnQ6IDEwcHg7IH0KKyAgICAgICAgNDAlIHsgbGVmdDogMzBweDsgfQor
ICAgICAgICA2MCUgeyBsZWZ0OiAxMHB4OyB9CisgICAgfQorCisgICAgI2JveDQgeworICAgICAg
LXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTQ7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5
ZWxsb3c7CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltNCB7CisgICAgICAgIDQw
JSB7IGxlZnQ6IDMwcHg7IH0KKyAgICAgICAgNjAlIHsgbGVmdDogMjBweDsgfQorICAgIH0KKwor
ICAgICNib3g1IHsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW01OworICAgICAg
YmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMg
YW5pbTUgeworICAgIH0KKyAgICAKKyAgICAjcmVzdWx0IHsKKyAgICAgIG1hcmdpbi10b3A6IDIw
cHg7CisgICAgfQorICA8L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVs
cGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+
CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAg
ICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGlt
ZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAg
ICBbImFuaW0xIiwgMC40LCAiYm94MSIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmltMSIs
IDEuMCwgImJveDEiLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAxLjYsICJib3gx
IiwgImxlZnQiLCAxNSwgMl0sCisgICAgICBbImFuaW0yIiwgMC40LCAiYm94MiIsICJsZWZ0Iiwg
MjAsIDJdLAorICAgICAgWyJhbmltMiIsIDEuMCwgImJveDIiLCAibGVmdCIsIDIwLCAyXSwKKyAg
ICAgIFsiYW5pbTIiLCAxLjYsICJib3gyIiwgImxlZnQiLCAxNSwgMl0sCisgICAgICBbImFuaW0z
IiwgMC40LCAiYm94MyIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmltMyIsIDEuMCwgImJv
eDMiLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTMiLCAxLjYsICJib3gzIiwgImxlZnQi
LCAxNSwgMl0sCisgICAgICBbImFuaW00IiwgMC40LCAiYm94NCIsICJsZWZ0IiwgMjAsIDJdLAor
ICAgICAgWyJhbmltNCIsIDEuMCwgImJveDQiLCAibGVmdCIsIDI1LCAyXSwKKyAgICAgIFsiYW5p
bTQiLCAxLjYsICJib3g0IiwgImxlZnQiLCAxNSwgMl0KKyAgICBdOworCisgICAgcnVuQW5pbWF0
aW9uVGVzdChleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24oKSB7CisgICAgICBpZiAobGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VB
bmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoImFuaW01IiwgMC4xLCAiYm94NSIpKQorICAg
ICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBib3g1IGFuaW1hdGlvbiB3YXMgcnVubmluZzxi
cj4iOworICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIGJv
eDUgYW5pbWF0aW9uIHdhcyBub3QgcnVubmluZzxicj4iOworICAgICAgfQorICAgIH0pOworICAg
IAorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuaW1h
dGlvbnMgb2YgdGhlIGxlZnQgcHJvcGVydHkgb24gZml2ZSBib3hlcyBvdmVyIDIgc2Vjb25kcy4K
K0JveCAxIGhhcyBhbGwga2V5ZnJhbWVzLiBCb3ggMiBoYXMgYSBtaXNzaW5nICJmcm9tIiBrZXlm
cmFtZS4KK0JveCAzIGhhcyBhIG1pc3NpbmcgInRvIiBrZXlmcmFtZS4KK0JveCA0IGhhcyBib3Ro
ICJmcm9tIiBhbmQgInRvIiBrZXlmcmFtZXMgbWlzc2luZywgYnV0IG90aGVyIGtleWZyYW1lcyB3
aGljaAorc2hvdWxkIHRyaWdnZXIgdGhlIGdlbmVyYXRpb24gb2YgImZyb20iIGFuZCAidG8iLiBC
b3ggNSBoYXMgbm8ga2V5ZnJhbWVzLCBhbmQKK3Nob3VsZCBub3QgYW5pbWF0ZS4KK1RoZSB0ZXN0
IHRha2VzIDMgc25hcHNob3RzIGVhY2ggYW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0
aGluIGEgc3BlY2lmaWVkIHJhbmdlLgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94MSI+Cis8L2Rp
dj4KKzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDIiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3gi
IGlkPSJib3gzIj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94NCI+Cis8L2Rpdj4K
KzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDUiPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGFkMTExYTUuLmJkNjNiNTQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAK
KzIwMTAtMDYtMjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00MTE4OAorICAgICAgICBBbmltYXRpb25zIHNob3VsZCBub3Qg
cmVxdWlyZSAwJSBhbmQgMTAwJSBrZXlmcmFtZXMKKworICAgICAgICBXaGVuIHdlIGFyZSBnZW5l
cmF0aW5nIHRoZSBhbmltYXRpb24gbGlzdHMgaW4gQ1NTU3R5bGVTZWxlY3RvciwKKyAgICAgICAg
cmF0aGVyIHRoYW4gYmFpbCBpZiB3ZSBub3RpY2UgdGhhdCAiZnJvbSIgb3IgInRvIiBhcmUgbWlz
c2luZywgd2UKKyAgICAgICAgbm93IGdlbmVyYXRlIHN5bnRoZXRpYyBrZXlmcmFtZXMgZm9yIHRo
b3NlIGNhc2VzLgorCisgICAgICAgIFRlc3RzOiBhbmltYXRpb25zL2ZpbGwtbW9kZS1taXNzaW5n
LWZyb20tdG8ta2V5ZnJhbWVzLmh0bWwKKyAgICAgICAgICAgICAgIGFuaW1hdGlvbnMvbWlzc2lu
Zy1mcm9tLXRvLmh0bWwKKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmdlbmVyYXRlS2V5ZnJhbWVTdHlsZSk6
CisgICAgICAgICAgICAgICAgTW92ZWQgaW5kaXZpZHVhbCBrZXlmcmFtZSBnZW5lcmF0aW9uIGlu
dG8gYSBuZXcgZnVuY3Rpb24uCisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpr
ZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbik6CisgICAgICAgICAgICAgICAgQ2FsbCB0aGUgbmV3
IGZ1bmN0aW9uIGFib3ZlIGZvciByZWd1bGFyIGtleWZyYW1lcywgYW5kCisgICAgICAgICAgICAg
ICAgYWxzbyBjaGVjayBmb3IgbWlzc2luZyBrZXlmcmFtZXMgYW5kIGdlbmVyYXRlIHRoZW0gaWYK
KyAgICAgICAgICAgICAgICBuZWNlc3NhcnkuCisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0
b3IuaDoKKwogMjAxMC0wNi0xNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
aW5kZXggNGY0MDM4Yy4uYTVhMjU4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
ZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTEz
NzIsNiArMTM3Miw2MiBAQCBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBDU1NTdHlsZVNlbGVjdG9y
OjpzdHlsZUZvckVsZW1lbnQoRWxlbWVudCogZSwgUmVuZGVyU3R5bAogICAgIHJldHVybiBtX3N0
eWxlLnJlbGVhc2UoKTsKIH0KIAordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpnZW5lcmF0ZUtleWZy
YW1lU3R5bGUoY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgV2ViS2l0Q1NT
S2V5ZnJhbWVSdWxlKiBrZXlmcmFtZVJ1bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKK3sKKyAgICBp
ZiAoa2V5ZnJhbWVSdWxlLT5zdHlsZSgpKQorICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24o
a2V5ZnJhbWVSdWxlLT5zdHlsZSgpKTsKKworICAgIEFTU0VSVCghbV9zdHlsZSk7CisKKyAgICAv
LyBDcmVhdGUgdGhlIHN0eWxlCisgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShlbGVt
ZW50U3R5bGUpOworCisgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOworCisgICAgLy8gV2UgZG9u
J3QgbmVlZCB0byBib3RoZXIgd2l0aCAhaW1wb3J0YW50LiBTaW5jZSB0aGVyZSBpcyBvbmx5IGV2
ZXIgb25lCisgICAgLy8gZGVjbCwgdGhlcmUncyBub3RoaW5nIHRvIG92ZXJyaWRlLiBTbyBqdXN0
IGFkZCB0aGUgZmlyc3QgcHJvcGVydGllcy4KKyAgICBpZiAoa2V5ZnJhbWVSdWxlLT5zdHlsZSgp
KQorICAgICAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVj
bHMuc2l6ZSgpIC0gMSk7CisKKyAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhl
YWQgYW5kIHVwZGF0ZSBpdCBub3cuCisgICAgaWYgKG1fZm9udERpcnR5KQorICAgICAgICB1cGRh
dGVGb250KCk7CisKKyAgICAvLyBMaW5lLWhlaWdodCBpcyBzZXQgd2hlbiB3ZSBhcmUgc3VyZSB3
ZSBkZWNpZGVkIG9uIHRoZSBmb250LXNpemUKKyAgICBpZiAobV9saW5lSGVpZ2h0VmFsdWUpCisg
ICAgICAgIGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRW
YWx1ZSk7CisKKyAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJvcGVydGllcy4KKyAgICBpZiAo
a2V5ZnJhbWVSdWxlLT5zdHlsZSgpKQorICAgICAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4o
ZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOworCisgICAgLy8gSWYgb3VyIGZv
bnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsCisg
ICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgorICAgIGlmIChtX2Zv
bnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgLy8gQWRkIGFsbCB0aGUgYW5p
bWF0aW5nIHByb3BlcnRpZXMgdG8gdGhlIGxpc3QKKyAgICBpZiAoa2V5ZnJhbWVSdWxlLT5zdHls
ZSgpKSB7CisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRv
ciBlbmQgPSBrZXlmcmFtZVJ1bGUtPnN0eWxlKCktPmVuZCgpOworICAgICAgICBmb3IgKENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGtleWZyYW1lUnVsZS0+
c3R5bGUoKS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpbnQgcHJv
cGVydHkgPSAoKml0KS5pZCgpOworICAgICAgICAgICAgLy8gVGltaW5nLWZ1bmN0aW9uIHdpdGhp
biBrZXlmcmFtZXMgaXMgc3BlY2lhbCwgYmVjYXVzZSBpdCBpcyBub3QgYW5pbWF0ZWQ7IGl0IGp1
c3QKKyAgICAgICAgICAgIC8vIGRlc2NyaWJlcyB0aGUgdGltaW5nIGZ1bmN0aW9uIGJldHdlZW4g
dGhpcyBrZXlmcmFtZSBhbmQgdGhlIG5leHQuCisgICAgICAgICAgICBpZiAocHJvcGVydHkgIT0g
Q1NTUHJvcGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbikKKyAgICAgICAgICAgICAg
ICBsaXN0LmFkZFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8v
IEFkZCB0aGlzIGtleWZyYW1lIHN0eWxlIHRvIGFsbCB0aGUgaW5kaWNhdGVkIGtleSB0aW1lcwor
ICAgIFZlY3RvcjxmbG9hdD4ga2V5czsKKyAgICBrZXlmcmFtZVJ1bGUtPmdldEtleXMoa2V5cyk7
CisgICAgZm9yIChzaXplX3Qga2V5SW5kZXggPSAwOyBrZXlJbmRleCA8IGtleXMuc2l6ZSgpOyAr
K2tleUluZGV4KSB7CisgICAgICAgIGZsb2F0IGtleSA9IGtleXNba2V5SW5kZXhdOworICAgICAg
ICBsaXN0Lmluc2VydChrZXksIG1fc3R5bGUpOworICAgIH0KKyAgICBtX3N0eWxlID0gMDsKK30K
Kwogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1hdGlvbihFbGVt
ZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBLZXlmcmFtZUxpc3QmIGxp
c3QpCiB7CiAgICAgbGlzdC5jbGVhcigpOwpAQCAtMTM5Myw2NSArMTQ0OSwyNSBAQCB2b2lkIENT
U1N0eWxlU2VsZWN0b3I6OmtleWZyYW1lU3R5bGVzRm9yQW5pbWF0aW9uKEVsZW1lbnQqIGUsIGNv
bnN0IFJlbmRlclN0eWxlKgogICAgICAgICBpbml0RWxlbWVudChlKTsKICAgICAgICAgaW5pdEZv
clN0eWxlUmVzb2x2ZShlKTsKICAgICAgICAgCi0gICAgICAgIGNvbnN0IFdlYktpdENTU0tleWZy
YW1lUnVsZSoga2YgPSBydWxlLT5pdGVtKGkpOwotICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRp
b24oa2YtPnN0eWxlKCkpOwotCi0gICAgICAgIEFTU0VSVCghbV9zdHlsZSk7Ci0KLSAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBzdHlsZQotICAgICAgICBtX3N0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25l
KGVsZW1lbnRTdHlsZSk7Ci0gICAgICAgIAotICAgICAgICBtX2xpbmVIZWlnaHRWYWx1ZSA9IDA7
Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGJvdGhlciB3aXRoICFpbXBv
cnRhbnQuIFNpbmNlIHRoZXJlIGlzIG9ubHkgZXZlciBvbmUKLSAgICAgICAgLy8gZGVjbCwgdGhl
cmUncyBub3RoaW5nIHRvIG92ZXJyaWRlLiBTbyBqdXN0IGFkZCB0aGUgZmlyc3QgcHJvcGVydGll
cy4KLSAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnM8dHJ1ZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERl
Y2xzLnNpemUoKSAtIDEpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRp
cnRpZWQsIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgotICAgICAgICBpZiAobV9mb250RGly
dHkpCi0gICAgICAgICAgICB1cGRhdGVGb250KCk7Ci0KLSAgICAgICAgLy8gTGluZS1oZWlnaHQg
aXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXplCi0gICAg
ICAgIGlmIChtX2xpbmVIZWlnaHRWYWx1ZSkKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7CisgICAgICAgIGNvbnN0IFdl
YktpdENTU0tleWZyYW1lUnVsZSoga2V5ZnJhbWVSdWxlID0gcnVsZS0+aXRlbShpKTsKICAgICAg
ICAgCi0gICAgICAgIC8vIE5vdyBkbyByZXN0IG9mIHRoZSBwcm9wZXJ0aWVzLgotICAgICAgICBh
cHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAt
IDEpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25l
IG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsIAotICAgICAgICAvLyBnbyBhaGVhZCBh
bmQgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCi0gICAgICAgIGlmIChtX2ZvbnREaXJ0eSkKLSAg
ICAgICAgICAgIHVwZGF0ZUZvbnQoKTsKLQotICAgICAgICAvLyBBZGQgYWxsIHRoZSBhbmltYXRp
bmcgcHJvcGVydGllcyB0byB0aGUgbGlzdAotICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0ga2YtPnN0eWxlKCktPmVuZCgpOwotICAgICAgICBm
b3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGtmLT5z
dHlsZSgpLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgICAgIGludCBwcm9w
ZXJ0eSA9ICgqaXQpLmlkKCk7Ci0gICAgICAgICAgICAvLyBUaW1pbmctZnVuY3Rpb24gd2l0aGlu
IGtleWZyYW1lcyBpcyBzcGVjaWFsLCBiZWNhdXNlIGl0IGlzIG5vdCBhbmltYXRlZDsgaXQganVz
dAotICAgICAgICAgICAgLy8gZGVzY3JpYmVzIHRoZSB0aW1pbmcgZnVuY3Rpb24gYmV0d2VlbiB0
aGlzIGtleWZyYW1lIGFuZCB0aGUgbmV4dC4KLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eSAhPSBD
U1NQcm9wZXJ0eVdlYmtpdEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAgICAgICAg
IGxpc3QuYWRkUHJvcGVydHkocHJvcGVydHkpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAg
ICAvLyBBZGQgdGhpcyBrZXlmcmFtZSBzdHlsZSB0byBhbGwgdGhlIGluZGljYXRlZCBrZXkgdGlt
ZXMKLSAgICAgICAgVmVjdG9yPGZsb2F0PiBrZXlzOwotICAgICAgICBrZi0+Z2V0S2V5cyhrZXlz
KTsKLSAgICAgICAgZm9yIChzaXplX3Qga2V5SW5kZXggPSAwOyBrZXlJbmRleCA8IGtleXMuc2l6
ZSgpOyArK2tleUluZGV4KSB7Ci0gICAgICAgICAgICBmbG9hdCBrZXkgPSBrZXlzW2tleUluZGV4
XTsKLSAgICAgICAgICAgIGxpc3QuaW5zZXJ0KGtleSwgbV9zdHlsZSk7Ci0gICAgICAgIH0KLSAg
ICAgICAgbV9zdHlsZSA9IDA7CisgICAgICAgIGdlbmVyYXRlS2V5ZnJhbWVTdHlsZShlbGVtZW50
U3R5bGUsIGtleWZyYW1lUnVsZSwgbGlzdCk7CiAgICAgfQogICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGVyZSBpcyBhIDAlIGFuZCBhIDEwMCUga2V5ZnJhbWUKLSAgICBmbG9hdCBmaXJzdCA9IC0x
OwotICAgIGZsb2F0IGxhc3QgPSAtMTsKLSAgICBpZiAobGlzdC5zaXplKCkgPj0gMikgewotICAg
ICAgICBmaXJzdCA9IGxpc3QuYmVnaW5LZXlmcmFtZXMoKS0+a2V5KCk7Ci0gICAgICAgIGxhc3Qg
PSAobGlzdC5lbmRLZXlmcmFtZXMoKS0xKS0+a2V5KCk7Ci0gICAgfQotICAgIGlmIChmaXJzdCAh
PSAwIHx8IGxhc3QgIT0gMSkKLSAgICAgICAgbGlzdC5jbGVhcigpOworICAgIC8vIElmIHRoZSAw
JSBrZXlmcmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBvdGhlciBrZXlmcmFtZSkKKyAgICBpbnQgaW5pdGlhbExpc3RTaXplID0gbGlz
dC5zaXplKCk7CisgICAgaWYgKGluaXRpYWxMaXN0U2l6ZSA+IDAgJiYgbGlzdC5iZWdpbktleWZy
YW1lcygpLT5rZXkoKSAhPSAwKSB7CisgICAgICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1
bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUoKTsKKyAgICAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoIjAlIik7CisgICAgICAgIGdlbmVyYXRlS2V5ZnJhbWVTdHls
ZShlbGVtZW50U3R5bGUsIGtleWZyYW1lLmdldCgpLCBsaXN0KTsKKyAgICB9CisKKyAgICAvLyBJ
ZiB0aGUgMTAwJSBrZXlmcmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRo
ZXJlIGlzIGF0IGxlYXN0IG9uZSBvdGhlciBrZXlmcmFtZSkKKyAgICBpZiAoaW5pdGlhbExpc3RT
aXplID4gMCAmJiAobGlzdC5lbmRLZXlmcmFtZXMoKSAtIDEpLT5rZXkoKSAhPSAxKSB7CisgICAg
ICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5
ZnJhbWVSdWxlOjpjcmVhdGUoKTsKKyAgICAgICAga2V5ZnJhbWUtPnNldEtleVRleHQoIjEwMCUi
KTsKKyAgICAgICAgZ2VuZXJhdGVLZXlmcmFtZVN0eWxlKGVsZW1lbnRTdHlsZSwga2V5ZnJhbWUu
Z2V0KCksIGxpc3QpOworICAgIH0KIH0KIAogUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5
bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVGb3JFbGVtZW50KFBzZXVkb0lkIHBzZXVkbywgRWxlbWVu
dCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0eWxlLCBib29sIG1hdGNoVmlzaXRlZFBzZXVkb0Ns
YXNzKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCmluZGV4IDA1Y2QxMDkuLjE0OWZkZDUgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmgKQEAgLTY0LDYgKzY0LDcgQEAgY2xhc3MgU3R5bGVJbWFnZTsKIGNsYXNz
IFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKIGNsYXNzIFN0eWxlZEVsZW1lbnQ7
CitjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZVJ1bGU7CiBjbGFzcyBXZWJLaXRDU1NLZXlmcmFtZXNS
dWxlOwogCiBjbGFzcyBNZWRpYVF1ZXJ5UmVzdWx0IDogcHVibGljIE5vbmNvcHlhYmxlIHsKQEAg
LTExMSw2ICsxMTIsOCBAQCBwdWJsaWM6CiAKICAgICAgICAgUmVuZGVyU3R5bGUqIHN0eWxlKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHlsZS5nZXQoKTsgfQogCisgICAgICAgIHZvaWQgZ2VuZXJhdGVL
ZXlmcmFtZVN0eWxlKGNvbnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVS
dWxlKiwgS2V5ZnJhbWVMaXN0Jik7CisKICAgICBwdWJsaWM6CiAgICAgICAgIC8vIFRoZXNlIG1l
dGhvZHMgd2lsbCBnaXZlIGJhY2sgdGhlIHNldCBvZiBydWxlcyB0aGF0IG1hdGNoZWQgZm9yIGEg
Z2l2ZW4gZWxlbWVudCAob3IgYSBwc2V1ZG8tZWxlbWVudCkuCiAgICAgICAgIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBib29sIGF1dGhvck9u
bHkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9tYW51YWwtdGVzdHMvYW5pbWF0aW9uLXdpdGgtdHJh
bnNpdGlvbi5odG1sIGIvV2ViQ29yZS9tYW51YWwtdGVzdHMvYW5pbWF0aW9uLXdpdGgtdHJhbnNp
dGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMTBlNmEKLS0t
IC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9hbmltYXRpb24td2l0aC10cmFu
c2l0aW9uLmh0bWwKQEAgLTAsMCArMSw1NiBAQAorPGh0bWw+Cis8aGVhZD4KKyAgPG1ldGEgaHR0
cC1lcXVpdj0iQ29udGVudC10eXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgi
PgorICA8dGl0bGU+c2ltcGxlLWFuaW1hdGlvbjwvdGl0bGU+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyIgbWVkaWE9InNjcmVlbiI+CisgICAgZGl2IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2
ZTsKKyAgICAgIGxlZnQ6IDEwcHg7CisgICAgICB0b3A6IDEwcHg7CisgICAgICB3aWR0aDogMjAw
cHg7CisgICAgICBoZWlnaHQ6IDIwMHB4OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzY5NjsK
KyAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogbGVmdCA1cywgdG9wIDVzOworICAgIH0KKyAgICAK
KyAgICAuYW5pbWF0ZSB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBzaW1wbGU7Cisg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CisgICAgICAtd2Via2l0LWFuaW1h
dGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWZp
bGwtbW9kZTogYmFja3dhcmRzOworICAgIH0KKyAgICAKKyAgICBALXdlYmtpdC1rZXlmcmFtZXMg
c2ltcGxlIHsKKy8qICAgICAgMCUgeworICAgICAgICBsZWZ0OiAxMHB4OworICAgICAgfQorKi8g
ICAgICA1MCUgeworICAgICAgICBsZWZ0OiAzMDBweDsKKyAgICAgIH0KKyAgICAgIDEwMCUgewor
ICAgICAgICBsZWZ0OiA4MHB4OworICAgICAgfQorICAgIH0KKyAgICAKKyAgICAKKyAgPC9zdHls
ZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAg
ICAKKyAgICBmdW5jdGlvbiBkb1RyYW5zaXRpb24oKSB7CisgICAgICB2YXIgZGl2ID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvcigiZGl2Iik7CisgICAgICBkaXYuc3R5bGUubGVmdCA9ICIyMDBweCI7
CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGRvQW5pbWF0aW9uKCkgeworICAgICAgdmFyIGRp
diA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImRpdiIpOworICAgICAgZGl2LmNsYXNzTmFtZSA9
ICJhbmltYXRlIjsKKyAgICB9CisgICAgCisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
IDxidXR0b24gb25jbGljaz0iZG9UcmFuc2l0aW9uKCk7Ij5UcmFuc2l0aW9uPC9idXR0b24+Cisg
IDxidXR0b24gb25jbGljaz0iZG9BbmltYXRpb24oKTsiPlNldCBBbmltYXRpb248L2J1dHRvbj4K
KzxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="46901"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59809</attachid>
            <date>2010-06-25 16:39:46 -0700</date>
            <delta_ts>2010-06-25 16:50:21 -0700</delta_ts>
            <desc>updated patch with refactored ::styleForKeyframe</desc>
            <filename>default-0-100.patch</filename>
            <type>text/plain</type>
            <size>27298</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1Y2Q2ODc5Li41YzdiOTE5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYt
MjUgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFNpbW9uIEZyYXNlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDExODgKKyAgICAgICAgQW5pbWF0aW9ucyBzaG91bGQgbm90IHJlcXVpcmUgMCUg
YW5kIDEwMCUga2V5ZnJhbWVzCisKKyAgICAgICAgKiBhbmltYXRpb25zL2tleWZyYW1lcy1mcm9t
LW1pc3NpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGFuaW1hdGlvbnMva2V5
ZnJhbWVzLWZyb20tbWlzc2luZy5odG1sOiBSZW1vdmVkLgorICAgICAgICAqIGFuaW1hdGlvbnMv
a2V5ZnJhbWVzLXRvLW1pc3NpbmctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIGFu
aW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAgKiBh
bmltYXRpb25zL21pc3NpbmctZnJvbS10by10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogYW5pbWF0aW9ucy9taXNzaW5nLWZyb20tdG8tdHJhbnNmb3Jtcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBhbmltYXRpb25zL21pc3NpbmctZnJvbS10by1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGFuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLmh0bWw6IEFkZGVk
LgorCiAyMDEwLTA2LTE3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5p
bWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2FuaW1hdGlvbnMva2V5ZnJhbWVzLWZyb20tbWlzc2luZy1leHBlY3RlZC50eHQKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NWNiMDYuLjAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
YW5pbWF0aW9ucy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLWV4cGVjdGVkLnR4dAorKysgL2Rldi9u
dWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyB0ZXN0IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0
aGUgbGVmdCBwcm9wZXJ0eS4gVGhlICdmcm9tJyBrZXlmcmFtZSBpcyBtaXNzaW5nIHNvIGl0IHNo
b3VsZCBub3QgYW5pbWF0ZQotUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9u
cy9rZXlmcmFtZXMtZnJvbS1taXNzaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tl
eWZyYW1lcy1mcm9tLW1pc3NpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MWVjYWFhNS4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy1m
cm9tLW1pc3NpbmcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLTwhRE9DVFlQ
RSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iCi0g
ICAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLQotPGh0bWwgbGFuZz0i
ZW4iPgotPGhlYWQ+Ci0gIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0i
dGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KLSAgPHRpdGxlPktleWZyYW1lcyB0ZXN0IHdpdGgg
J2Zyb20nIGtleWZyYW1lIG1pc3Npbmc8L3RpdGxlPgotICA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW4iPgotICAgICNib3ggewotICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7
Ci0gICAgICAgIGxlZnQ6IDA7Ci0gICAgICAgIHRvcDogMTAwcHg7Ci0gICAgICAgIGhlaWdodDog
MTAwcHg7Ci0gICAgICAgIHdpZHRoOiAxMDBweDsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
Ymx1ZTsKLSAgICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDFzOwotICAgICAgICAt
d2Via2l0LWFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKLSAgICAgICAgLXdlYmtp
dC1hbmltYXRpb24tbmFtZTogImFuaW0iOwotICAgIH0KLSAgICBALXdlYmtpdC1rZXlmcmFtZXMg
ImFuaW0iIHsKLSAgICAgICAgMjAlICB7IGxlZnQ6IDEwMHB4OyB9Ci0gICAgICAgIDQwJSAgeyBs
ZWZ0OiAxMDBweDsgfQotICAgICAgICA2MCUgIHsgbGVmdDogMjAwcHg7IH0KLSAgICAgICAgODAl
ICB7IGxlZnQ6IDIwMHB4OyB9Ci0gICAgICAgIHRvICAgeyBsZWZ0OiAzMDBweDsgfQotICAgIH0K
LSAgICA8L3N0eWxlPgotICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCI+Ci0gICAgCi0gICAgZnVuY3Rpb24gc3RhcnQoKQotICAgIHsKLSAgICAgICAgbGF5
b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotICAgICAgICAKLSAgICAgICAgaWYgKGxh
eW91dFRlc3RDb250cm9sbGVyLnBhdXNlQW5pbWF0aW9uQXRUaW1lT25FbGVtZW50V2l0aElkKCJh
bmltIiwgMC41LCAiYm94IikpCi0gICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
cmVzdWx0JykuaW5uZXJIVE1MID0gIkZBSUw6IGFuaW1hdGlvbiBpcyBydW5uaW5nIjsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlu
bmVySFRNTCA9ICJQQVNTIjsKLSAgICB9Ci0gICAgCi0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0
Q29udHJvbGxlcikKLSAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBzdGFy
dCwgZmFsc2UpOwotICAgIAotICA8L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotVGhpcyB0ZXN0
IHBlcmZvcm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gVGhlICdmcm9tJyBr
ZXlmcmFtZSBpcyBtaXNzaW5nIHNvIGl0IHNob3VsZCBub3QgYW5pbWF0ZQotPGRpdiBpZD0iYm94
Ij4KLTwvZGl2PgotPGRpdiBpZD0icmVzdWx0Ij4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9rZXlmcmFtZXMtdG8tbWlzc2luZy1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy10by1taXNzaW5n
LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzY5Y2Q0NC4uMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL2tleWZyYW1lcy10by1taXNzaW5nLWV4
cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVGhpcyB0ZXN0IHBlcmZv
cm1zIGFuIGFuaW1hdGlvbiBvZiB0aGUgbGVmdCBwcm9wZXJ0eS4gVGhlICd0bycga2V5ZnJhbWUg
aXMgbWlzc2luZyBzbyBpdCBzaG91bGQgbm90IGFuaW1hdGUKLVBBU1MKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRtbCBiL0xheW91dFRl
c3RzL2FuaW1hdGlvbnMva2V5ZnJhbWVzLXRvLW1pc3NpbmcuaHRtbApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjRjNTY4MC4uMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL2tleWZyYW1lcy10by1taXNzaW5nLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCww
IEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0
aW9uYWwvL0VOIgotICAgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci0K
LTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5
cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCI+Ci0gIDx0aXRsZT5LZXlmcmFt
ZXMgdGVzdCB3aXRoICd0bycga2V5ZnJhbWUgbWlzc2luZzwvdGl0bGU+Ci0gIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiI+Ci0gICAgI2JveCB7Ci0gICAgICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKLSAgICAgICAgbGVmdDogMDsKLSAgICAgICAgdG9wOiAxMDBweDsKLSAgICAg
ICAgaGVpZ2h0OiAxMDBweDsKLSAgICAgICAgd2lkdGg6IDEwMHB4OwotICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBibHVlOwotICAgICAgICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMXM7
Ci0gICAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOwotICAg
ICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1lOiAiYW5pbSI7Ci0gICAgfQotICAgIEAtd2Via2l0
LWtleWZyYW1lcyAiYW5pbSIgewotICAgICAgICBmcm9tIHsgbGVmdDogNTBweDsgfQotICAgICAg
ICAyMCUgIHsgbGVmdDogMTAwcHg7IH0KLSAgICAgICAgNDAlICB7IGxlZnQ6IDEwMHB4OyB9Ci0g
ICAgICAgIDYwJSAgeyBsZWZ0OiAyMDBweDsgfQotICAgICAgICA4MCUgIHsgbGVmdDogMjAwcHg7
IH0KLSAgICB9Ci0gICAgPC9zdHlsZT4KLSAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCIgY2hhcnNldD0idXRmLTgiPgotICAgIAotICAgIGZ1bmN0aW9uIHN0YXJ0KCkKLSAgICB7Ci0g
ICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLSAgICAgICAgCi0gICAg
ICAgIGlmIChsYXlvdXRUZXN0Q29udHJvbGxlci5wYXVzZUFuaW1hdGlvbkF0VGltZU9uRWxlbWVu
dFdpdGhJZCgiYW5pbSIsIDAuNSwgImJveCIpKQotICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICJGQUlMOiBhbmltYXRpb24gaXMgcnVubmlu
ZyI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdy
ZXN1bHQnKS5pbm5lckhUTUwgPSAiUEFTUyI7Ci0gICAgfQotICAgIAotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCds
b2FkJywgc3RhcnQsIGZhbHNlKTsKLSAgICAKLSAgPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LVRoaXMgdGVzdCBwZXJmb3JtcyBhbiBhbmltYXRpb24gb2YgdGhlIGxlZnQgcHJvcGVydHkuIFRo
ZSAndG8nIGtleWZyYW1lIGlzIG1pc3Npbmcgc28gaXQgc2hvdWxkIG5vdCBhbmltYXRlCi08ZGl2
IGlkPSJib3giPgotPC9kaXY+Ci08ZGl2IGlkPSJyZXN1bHQiPgotPC9kaXY+Ci08L2JvZHk+Ci08
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL21pc3NpbmctZnJvbS10
by1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hbmltYXRpb25zL21pc3NpbmctZnJvbS10by1l
eHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGRkZjI3ZAot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRv
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYW5pbWF0
aW9ucyBvZiB0aGUgbGVmdCBwcm9wZXJ0eSBvbiBmaXZlIGJveGVzIG92ZXIgMiBzZWNvbmRzLiBC
b3ggMSBoYXMgYWxsIGtleWZyYW1lcy4gQm94IDIgaGFzIGEgbWlzc2luZyAiZnJvbSIga2V5ZnJh
bWUuIEJveCAzIGhhcyBhIG1pc3NpbmcgInRvIiBrZXlmcmFtZS4gQm94IDQgaGFzIGJvdGggImZy
b20iIGFuZCAidG8iIGtleWZyYW1lcyBtaXNzaW5nLCBidXQgb3RoZXIga2V5ZnJhbWVzIHdoaWNo
IHNob3VsZCB0cmlnZ2VyIHRoZSBnZW5lcmF0aW9uIG9mICJmcm9tIiBhbmQgInRvIi4gQm94IDUg
aGFzIG5vIGtleWZyYW1lcywgYW5kIHNob3VsZCBub3QgYW5pbWF0ZS4gVGhlIHRlc3QgdGFrZXMg
MyBzbmFwc2hvdHMgZWFjaCBhbmQgZXhwZWN0cyBlYWNoIHJlc3VsdCB0byBiZSB3aXRoaW4gYSBz
cGVjaWZpZWQgcmFuZ2UuCitQQVNTIC0gYm94NSBhbmltYXRpb24gd2FzIG5vdCBydW5uaW5nCitQ
QVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjRzIHNhdyBzb21l
dGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxl
bWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJsZWZ0IiBwcm9w
ZXJ0eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMS42cyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAx
NQorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMC40cyBzYXcg
c29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDIi
IGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1MgLSAibGVmdCIg
cHJvcGVydHkgZm9yICJib3gyIiBlbGVtZW50IGF0IDEuNnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0
bzogMTUKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDAuNHMg
c2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1MgLSAibGVmdCIgcHJvcGVydHkgZm9yICJi
b3gzIiBlbGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxl
ZnQiIHByb3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAxLjZzIHNhdyBzb21ldGhpbmcgY2xv
c2UgdG86IDE1CitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZvciAiYm94NCIgZWxlbWVudCBhdCAw
LjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gImxlZnQiIHByb3BlcnR5IGZv
ciAiYm94NCIgZWxlbWVudCBhdCAxcyBzYXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyNQorUEFTUyAt
ICJsZWZ0IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMS42cyBzYXcgc29tZXRoaW5n
IGNsb3NlIHRvOiAxNQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hbmltYXRpb25zL21pc3Np
bmctZnJvbS10by10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FuaW1hdGlv
bnMvbWlzc2luZy1mcm9tLXRvLXRyYW5zZm9ybXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MGJjMWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9hbmltYXRpb25zL21pc3NpbmctZnJvbS10by10cmFuc2Zvcm1zLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgcGVyZm9ybXMgYW5pbWF0aW9ucyBvZiB0aGUgdHJh
bnNmb3JtIHByb3BlcnR5IG9uIGZpdmUgYm94ZXMgb3ZlciAyIHNlY29uZHMuIEJveCAxIGhhcyBh
bGwga2V5ZnJhbWVzLiBCb3ggMiBoYXMgYSBtaXNzaW5nICJmcm9tIiBrZXlmcmFtZS4gQm94IDMg
aGFzIGEgbWlzc2luZyAidG8iIGtleWZyYW1lLiBCb3ggNCBoYXMgYm90aCAiZnJvbSIgYW5kICJ0
byIga2V5ZnJhbWVzIG1pc3NpbmcsIGJ1dCBvdGhlciBrZXlmcmFtZXMgd2hpY2ggc2hvdWxkIHRy
aWdnZXIgdGhlIGdlbmVyYXRpb24gb2YgImZyb20iIGFuZCAidG8iLiBCb3ggNSBoYXMgbm8ga2V5
ZnJhbWVzLCBhbmQgc2hvdWxkIG5vdCBhbmltYXRlLiBUaGUgdGVzdCB0YWtlcyAzIHNuYXBzaG90
cyBlYWNoIGFuZCBleHBlY3RzIGVhY2ggcmVzdWx0IHRvIGJlIHdpdGhpbiBhIHNwZWNpZmllZCBy
YW5nZS4KK1BBU1MgLSBib3g1IGFuaW1hdGlvbiB3YXMgbm90IHJ1bm5pbmcKK1BBU1MgLSAid2Vi
a2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAwLjRzIHNhdyBz
b21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybS40IiBwcm9wZXJ0
eSBmb3IgImJveDEiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BB
U1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94MSIgZWxlbWVudCBhdCAx
LjZzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CitQQVNTIC0gIndlYmtpdFRyYW5zZm9ybS40
IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMC40cyBzYXcgc29tZXRoaW5nIGNsb3Nl
IHRvOiAyMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9yICJib3gyIiBl
bGVtZW50IGF0IDFzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gIndlYmtpdFRy
YW5zZm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDIiIGVsZW1lbnQgYXQgMS42cyBzYXcgc29tZXRo
aW5nIGNsb3NlIHRvOiAxNQorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0uNCIgcHJvcGVydHkgZm9y
ICJib3gzIiBlbGVtZW50IGF0IDAuNHMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzogMjAKK1BBU1Mg
LSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94MyIgZWxlbWVudCBhdCAxcyBz
YXcgc29tZXRoaW5nIGNsb3NlIHRvOiAyMAorUEFTUyAtICJ3ZWJraXRUcmFuc2Zvcm0uNCIgcHJv
cGVydHkgZm9yICJib3gzIiBlbGVtZW50IGF0IDEuNnMgc2F3IHNvbWV0aGluZyBjbG9zZSB0bzog
MTUKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94NCIgZWxlbWVu
dCBhdCAwLjRzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDIwCitQQVNTIC0gIndlYmtpdFRyYW5z
Zm9ybS40IiBwcm9wZXJ0eSBmb3IgImJveDQiIGVsZW1lbnQgYXQgMXMgc2F3IHNvbWV0aGluZyBj
bG9zZSB0bzogMjUKK1BBU1MgLSAid2Via2l0VHJhbnNmb3JtLjQiIHByb3BlcnR5IGZvciAiYm94
NCIgZWxlbWVudCBhdCAxLjZzIHNhdyBzb21ldGhpbmcgY2xvc2UgdG86IDE1CisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLXRyYW5zZm9ybXMuaHRt
bCBiL0xheW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLXRyYW5zZm9ybXMuaHRt
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTBhNWEyCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvYW5pbWF0aW9ucy9taXNzaW5nLWZyb20tdG8tdHJhbnNmb3Jt
cy5odG1sCkBAIC0wLDAgKzEsMTIzIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8v
RFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0dHA6Ly93d3cudzMub3JnL1RS
L2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4KKzxoZWFkPgorICA8bWV0YSBo
dHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYt
OCI+CisgIDx0aXRsZT5UZXN0IGFuaW1hdGlvbiB3aXRoIG1pc3NpbmcgZnJvbSBhbmQgdG8ga2V5
ZnJhbWVzPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIj4K
KyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIGxlZnQ6IDEwcHg7
CisgICAgICB0b3A6IDEwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7CisgICAgICB3aWR0aDogMjBw
eDsKKyAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwcHgpOworICAgICAgYmFj
a2dyb3VuZC1jb2xvcjogYmx1ZTsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLWR1cmF0aW9uOiAy
czsKKyAgICAgIC13ZWJraXQtYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogbGluZWFyOworICAg
IH0KKyAgCisgICAgI2JveDEgeworICAgICAgLXdlYmtpdC1hbmltYXRpb24tbmFtZTogYW5pbTE7
CisgICAgfQorICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltMSB7CisgICAgICBmcm9tIHsgLXdl
YmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTBweCk7IH0KKyAgICAgIDQwJSB7IC13ZWJraXQt
dHJhbnNmb3JtOiB0cmFuc2xhdGVYKDMwcHgpOyB9CisgICAgICA2MCUgeyAtd2Via2l0LXRyYW5z
Zm9ybTogdHJhbnNsYXRlWCgxMHB4KTsgfQorICAgICAgdG8geyAtd2Via2l0LXRyYW5zZm9ybTog
dHJhbnNsYXRlWCgyMHB4KTsgfQorICAgIH0KKworICAgICNib3gyIHsKKyAgICAgIC13ZWJraXQt
YW5pbWF0aW9uLW5hbWU6IGFuaW0yOworICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOworICAg
IH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTIgeworICAgICAgNDAlIHsgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMzBweCk7IH0KKyAgICAgIDYwJSB7IC13ZWJraXQtdHJhbnNm
b3JtOiB0cmFuc2xhdGVYKDEwcHgpOyB9CisgICAgICB0byB7IC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVYKDIwcHgpOyB9CisgICAgfQorCisgICAgI2JveDMgeworICAgICAgLXdlYmtpdC10
cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMjBweCk7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1uYW1l
OiBhbmltMzsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOworICAgIH0KKyAgICBALXdl
YmtpdC1rZXlmcmFtZXMgYW5pbTMgeworICAgICAgZnJvbSB7IC13ZWJraXQtdHJhbnNmb3JtOiB0
cmFuc2xhdGVYKDEwcHgpOyB9CisgICAgICA0MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNs
YXRlWCgzMHB4KTsgfQorICAgICAgNjAlIHsgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVgo
MTBweCk7IH0KKyAgICB9CisKKyAgICAjYm94NCB7CisgICAgICAtd2Via2l0LWFuaW1hdGlvbi1u
YW1lOiBhbmltNDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IHllbGxvdzsKKyAgICB9CisgICAg
QC13ZWJraXQta2V5ZnJhbWVzIGFuaW00IHsKKyAgICAgIDQwJSB7IC13ZWJraXQtdHJhbnNmb3Jt
OiB0cmFuc2xhdGVYKDMwcHgpOyB9CisgICAgICA2MCUgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJh
bnNsYXRlWCgyMHB4KTsgfQorICAgIH0KKworICAgICNib3g1IHsKKyAgICAgIC13ZWJraXQtYW5p
bWF0aW9uLW5hbWU6IGFuaW01OworICAgICAgYmFja2dyb3VuZC1jb2xvcjogb3JhbmdlOworICAg
IH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTUgeworICAgIH0KKyAgICAKKyAgICAjcmVz
dWx0IHsKKyAgICAgIG1hcmdpbi10b3A6IDIwcHg7CisgICAgfQorICA8L3N0eWxlPgorICA8c2Ny
aXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2Ny
aXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3RlZFZhbHVlcyA9IFsKKyAg
ICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwgcHJvcGVydHksIGV4cGVj
dGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbImFuaW0xIiwgMC40LCAiYm94MSIsICJ3ZWJr
aXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAxLjAsICJib3gxIiwgIndl
YmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAgICAgWyJhbmltMSIsIDEuNiwgImJveDEiLCAi
d2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisgICAgICBbImFuaW0yIiwgMC40LCAiYm94MiIs
ICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTIiLCAxLjAsICJib3gy
IiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAgICAgWyJhbmltMiIsIDEuNiwgImJv
eDIiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisgICAgICBbImFuaW0zIiwgMC40LCAi
Ym94MyIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTMiLCAxLjAs
ICJib3gzIiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjAsIDJdLAorICAgICAgWyJhbmltMyIsIDEu
NiwgImJveDMiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0sCisgICAgICBbImFuaW00Iiwg
MC40LCAiYm94NCIsICJ3ZWJraXRUcmFuc2Zvcm0uNCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTQi
LCAxLjAsICJib3g0IiwgIndlYmtpdFRyYW5zZm9ybS40IiwgMjUsIDJdLAorICAgICAgWyJhbmlt
NCIsIDEuNiwgImJveDQiLCAid2Via2l0VHJhbnNmb3JtLjQiLCAxNSwgMl0KKyAgICBdOworCisg
ICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3RlZFZhbHVlcywgZnVuY3Rpb24oKSB7CisgICAgICBp
ZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRy
b2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVPbkVsZW1lbnRXaXRoSWQoImFuaW01IiwgMC4xLCAi
Ym94NSIpKQorICAgICAgICAgICAgICByZXN1bHQgKz0gIkZBSUwgLSBib3g1IGFuaW1hdGlvbiB3
YXMgcnVubmluZzxicj4iOworICAgICAgICAgIGVsc2UgCisgICAgICAgICAgICAgIHJlc3VsdCAr
PSAiUEFTUyAtIGJveDUgYW5pbWF0aW9uIHdhcyBub3QgcnVubmluZzxicj4iOworICAgICAgfQor
ICAgIH0pOworICAgIAorICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHBl
cmZvcm1zIGFuaW1hdGlvbnMgb2YgdGhlIHRyYW5zZm9ybSBwcm9wZXJ0eSBvbiBmaXZlIGJveGVz
IG92ZXIgMiBzZWNvbmRzLgorQm94IDEgaGFzIGFsbCBrZXlmcmFtZXMuIEJveCAyIGhhcyBhIG1p
c3NpbmcgImZyb20iIGtleWZyYW1lLgorQm94IDMgaGFzIGEgbWlzc2luZyAidG8iIGtleWZyYW1l
LgorQm94IDQgaGFzIGJvdGggImZyb20iIGFuZCAidG8iIGtleWZyYW1lcyBtaXNzaW5nLCBidXQg
b3RoZXIga2V5ZnJhbWVzIHdoaWNoCitzaG91bGQgdHJpZ2dlciB0aGUgZ2VuZXJhdGlvbiBvZiAi
ZnJvbSIgYW5kICJ0byIuIEJveCA1IGhhcyBubyBrZXlmcmFtZXMsIGFuZAorc2hvdWxkIG5vdCBh
bmltYXRlLgorVGhlIHRlc3QgdGFrZXMgMyBzbmFwc2hvdHMgZWFjaCBhbmQgZXhwZWN0cyBlYWNo
IHJlc3VsdCB0byBiZSB3aXRoaW4gYSBzcGVjaWZpZWQgcmFuZ2UuCis8ZGl2IGNsYXNzPSJib3gi
IGlkPSJib3gxIj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94MiI+Cis8L2Rpdj4K
KzxkaXYgY2xhc3M9ImJveCIgaWQ9ImJveDMiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlk
PSJib3g0Ij4KKzwvZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94NSI+Cis8L2Rpdj4KKzxk
aXYgaWQ9InJlc3VsdCI+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FuaW1hdGlvbnMvbWlzc2luZy1mcm9tLXRvLmh0bWwgYi9MYXlvdXRUZXN0cy9h
bmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjliOTJhNDkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9hbmltYXRp
b25zL21pc3NpbmctZnJvbS10by5odG1sCkBAIC0wLDAgKzEsMTIyIEBACis8IURPQ1RZUEUgaHRt
bCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIgorICAgImh0
dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzxodG1sIGxhbmc9ImVuIj4K
KzxoZWFkPgorICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD11dGYtOCI+CisgIDx0aXRsZT5UZXN0IGFuaW1hdGlvbiB3aXRoIG1pc3Np
bmcgZnJvbSBhbmQgdG8ga2V5ZnJhbWVzPC90aXRsZT4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0ic2NyZWVuIj4KKyAgICAuYm94IHsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsK
KyAgICAgIGxlZnQ6IDEwcHg7CisgICAgICB0b3A6IDEwcHg7CisgICAgICBoZWlnaHQ6IDIwcHg7
CisgICAgICB3aWR0aDogMjBweDsKKyAgICAgIGJhY2tncm91bmQtY29sb3I6IGJsdWU7CisgICAg
ICAtd2Via2l0LWFuaW1hdGlvbi1kdXJhdGlvbjogMnM7CisgICAgICAtd2Via2l0LWFuaW1hdGlv
bi10aW1pbmctZnVuY3Rpb246IGxpbmVhcjsKKyAgICB9CisgIAorICAgICNib3gxIHsKKyAgICAg
IC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW0xOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlm
cmFtZXMgYW5pbTEgeworICAgICAgICBmcm9tIHsgbGVmdDogMTBweDsgfQorICAgICAgICA0MCUg
eyBsZWZ0OiAzMHB4OyB9CisgICAgICAgIDYwJSB7IGxlZnQ6IDEwcHg7IH0KKyAgICAgICAgdG8g
eyBsZWZ0OiAyMHB4OyB9CisgICAgfQorCisgICAgI2JveDIgeworICAgICAgLXdlYmtpdC1hbmlt
YXRpb24tbmFtZTogYW5pbTI7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CisgICAgfQor
ICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltMiB7CisgICAgICAgIDQwJSB7IGxlZnQ6IDMwcHg7
IH0KKyAgICAgICAgNjAlIHsgbGVmdDogMTBweDsgfQorICAgICAgICB0byB7IGxlZnQ6IDIwcHg7
IH0KKyAgICB9CisKKyAgICAjYm94MyB7CisgICAgICBsZWZ0OiAyMHB4OworICAgICAgLXdlYmtp
dC1hbmltYXRpb24tbmFtZTogYW5pbTM7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsK
KyAgICB9CisgICAgQC13ZWJraXQta2V5ZnJhbWVzIGFuaW0zIHsKKyAgICAgICAgZnJvbSB7IGxl
ZnQ6IDEwcHg7IH0KKyAgICAgICAgNDAlIHsgbGVmdDogMzBweDsgfQorICAgICAgICA2MCUgeyBs
ZWZ0OiAxMHB4OyB9CisgICAgfQorCisgICAgI2JveDQgeworICAgICAgLXdlYmtpdC1hbmltYXRp
b24tbmFtZTogYW5pbTQ7CisgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7CisgICAgfQor
ICAgIEAtd2Via2l0LWtleWZyYW1lcyBhbmltNCB7CisgICAgICAgIDQwJSB7IGxlZnQ6IDMwcHg7
IH0KKyAgICAgICAgNjAlIHsgbGVmdDogMjBweDsgfQorICAgIH0KKworICAgICNib3g1IHsKKyAg
ICAgIC13ZWJraXQtYW5pbWF0aW9uLW5hbWU6IGFuaW01OworICAgICAgYmFja2dyb3VuZC1jb2xv
cjogb3JhbmdlOworICAgIH0KKyAgICBALXdlYmtpdC1rZXlmcmFtZXMgYW5pbTUgeworICAgIH0K
KyAgICAKKyAgICAjcmVzdWx0IHsKKyAgICAgIG1hcmdpbi10b3A6IDIwcHg7CisgICAgfQorICA8
L3N0eWxlPgorICA8c2NyaXB0IHNyYz0iYW5pbWF0aW9uLXRlc3QtaGVscGVycy5qcyIgdHlwZT0i
dGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+PC9zY3JpcHQ+CisgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCI+CisKKyAgICBjb25zdCBleHBlY3Rl
ZFZhbHVlcyA9IFsKKyAgICAgIC8vIFthbmltYXRpb24tbmFtZSwgdGltZSwgZWxlbWVudC1pZCwg
cHJvcGVydHksIGV4cGVjdGVkLXZhbHVlLCB0b2xlcmFuY2VdCisgICAgICBbImFuaW0xIiwgMC40
LCAiYm94MSIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmltMSIsIDEuMCwgImJveDEiLCAi
bGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTEiLCAxLjYsICJib3gxIiwgImxlZnQiLCAxNSwg
Ml0sCisgICAgICBbImFuaW0yIiwgMC40LCAiYm94MiIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAg
WyJhbmltMiIsIDEuMCwgImJveDIiLCAibGVmdCIsIDIwLCAyXSwKKyAgICAgIFsiYW5pbTIiLCAx
LjYsICJib3gyIiwgImxlZnQiLCAxNSwgMl0sCisgICAgICBbImFuaW0zIiwgMC40LCAiYm94MyIs
ICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmltMyIsIDEuMCwgImJveDMiLCAibGVmdCIsIDIw
LCAyXSwKKyAgICAgIFsiYW5pbTMiLCAxLjYsICJib3gzIiwgImxlZnQiLCAxNSwgMl0sCisgICAg
ICBbImFuaW00IiwgMC40LCAiYm94NCIsICJsZWZ0IiwgMjAsIDJdLAorICAgICAgWyJhbmltNCIs
IDEuMCwgImJveDQiLCAibGVmdCIsIDI1LCAyXSwKKyAgICAgIFsiYW5pbTQiLCAxLjYsICJib3g0
IiwgImxlZnQiLCAxNSwgMl0KKyAgICBdOworCisgICAgcnVuQW5pbWF0aW9uVGVzdChleHBlY3Rl
ZFZhbHVlcywgZnVuY3Rpb24oKSB7CisgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgICBpZiAobGF5b3V0VGVzdENvbnRyb2xsZXIucGF1c2VBbmltYXRpb25BdFRpbWVP
bkVsZW1lbnRXaXRoSWQoImFuaW01IiwgMC4xLCAiYm94NSIpKQorICAgICAgICAgICAgICByZXN1
bHQgKz0gIkZBSUwgLSBib3g1IGFuaW1hdGlvbiB3YXMgcnVubmluZzxicj4iOworICAgICAgICAg
IGVsc2UgCisgICAgICAgICAgICAgIHJlc3VsdCArPSAiUEFTUyAtIGJveDUgYW5pbWF0aW9uIHdh
cyBub3QgcnVubmluZzxicj4iOworICAgICAgfQorICAgIH0pOworICAgIAorICA8L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorVGhpcyB0ZXN0IHBlcmZvcm1zIGFuaW1hdGlvbnMgb2YgdGhlIGxl
ZnQgcHJvcGVydHkgb24gZml2ZSBib3hlcyBvdmVyIDIgc2Vjb25kcy4KK0JveCAxIGhhcyBhbGwg
a2V5ZnJhbWVzLiBCb3ggMiBoYXMgYSBtaXNzaW5nICJmcm9tIiBrZXlmcmFtZS4KK0JveCAzIGhh
cyBhIG1pc3NpbmcgInRvIiBrZXlmcmFtZS4KK0JveCA0IGhhcyBib3RoICJmcm9tIiBhbmQgInRv
IiBrZXlmcmFtZXMgbWlzc2luZywgYnV0IG90aGVyIGtleWZyYW1lcyB3aGljaAorc2hvdWxkIHRy
aWdnZXIgdGhlIGdlbmVyYXRpb24gb2YgImZyb20iIGFuZCAidG8iLiBCb3ggNSBoYXMgbm8ga2V5
ZnJhbWVzLCBhbmQKK3Nob3VsZCBub3QgYW5pbWF0ZS4KK1RoZSB0ZXN0IHRha2VzIDMgc25hcHNo
b3RzIGVhY2ggYW5kIGV4cGVjdHMgZWFjaCByZXN1bHQgdG8gYmUgd2l0aGluIGEgc3BlY2lmaWVk
IHJhbmdlLgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94MSI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9
ImJveCIgaWQ9ImJveDIiPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJib3giIGlkPSJib3gzIj4KKzwv
ZGl2PgorPGRpdiBjbGFzcz0iYm94IiBpZD0iYm94NCI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImJv
eCIgaWQ9ImJveDUiPgorPC9kaXY+Cis8ZGl2IGlkPSJyZXN1bHQiPgorPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGFkMTExYTUuLjRhZTZlNjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9n
CisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTAtMDYtMjUgIERl
YW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NDExODgKKyAgICAgICAgQW5pbWF0aW9ucyBzaG91bGQgbm90IHJlcXVpcmUgMCUgYW5kIDEw
MCUga2V5ZnJhbWVzCisKKyAgICAgICAgV2hlbiB3ZSBhcmUgZ2VuZXJhdGluZyB0aGUgYW5pbWF0
aW9uIGxpc3RzIGluIENTU1N0eWxlU2VsZWN0b3IsCisgICAgICAgIHJhdGhlciB0aGFuIGJhaWwg
aWYgd2Ugbm90aWNlIHRoYXQgImZyb20iIG9yICJ0byIgYXJlIG1pc3NpbmcsIHdlCisgICAgICAg
IG5vdyBnZW5lcmF0ZSBzeW50aGV0aWMga2V5ZnJhbWVzIGZvciB0aG9zZSBjYXNlcy4KKworICAg
ICAgICBUZXN0czogYW5pbWF0aW9ucy9taXNzaW5nLWZyb20tdG8tdHJhbnNmb3Jtcy5odG1sCisg
ICAgICAgICAgICAgICBhbmltYXRpb25zL21pc3NpbmctZnJvbS10by5odG1sCisgICAgICAgICAg
ICAgICBXZWJDb3JlL21hbnVhbC10ZXN0cy9hbmltYXRpb24td2l0aC10cmFuc2l0aW9uLmh0bWwK
KworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yS2V5ZnJhbWUpOgorICAgICAgICAgICAgICAgIE1v
dmVkIGluZGl2aWR1YWwga2V5ZnJhbWUgZ2VuZXJhdGlvbiBpbnRvIGEgbmV3IGZ1bmN0aW9uLgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNGb3JBbmlt
YXRpb24pOgorICAgICAgICAgICAgICAgIENhbGwgdGhlIG5ldyBmdW5jdGlvbiBhYm92ZSBmb3Ig
cmVndWxhciBrZXlmcmFtZXMsIGFuZAorICAgICAgICAgICAgICAgIGFsc28gY2hlY2sgZm9yIG1p
c3Npbmcga2V5ZnJhbWVzIGFuZCBnZW5lcmF0ZSB0aGVtIGlmCisgICAgICAgICAgICAgICAgbmVj
ZXNzYXJ5LgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6CisKIDIwMTAtMDYtMTcg
IEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
biBCZXJuc3RlaW4uCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDRmNDAzOGMuLmE3YTdh
MTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0xMzcyLDYgKzEzNzIsNTUgQEAgUGFz
c1JlZlB0cjxSZW5kZXJTdHlsZT4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnQqIGUsIFJlbmRlclN0eWwKICAgICByZXR1cm4gbV9zdHlsZS5yZWxlYXNlKCk7CiB9CiAK
K1Bhc3NSZWZQdHI8UmVuZGVyU3R5bGU+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yS2V5ZnJh
bWUoY29uc3QgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJh
bWVSdWxlKiBrZXlmcmFtZVJ1bGUsIEtleWZyYW1lTGlzdCYgbGlzdCkKK3sKKyAgICBpZiAoa2V5
ZnJhbWVSdWxlLT5zdHlsZSgpKQorICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oa2V5ZnJh
bWVSdWxlLT5zdHlsZSgpKTsKKworICAgIEFTU0VSVCghbV9zdHlsZSk7CisKKyAgICAvLyBDcmVh
dGUgdGhlIHN0eWxlCisgICAgbV9zdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZShlbGVtZW50U3R5
bGUpOworCisgICAgbV9saW5lSGVpZ2h0VmFsdWUgPSAwOworCisgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBib3RoZXIgd2l0aCAhaW1wb3J0YW50LiBTaW5jZSB0aGVyZSBpcyBvbmx5IGV2ZXIgb25l
CisgICAgLy8gZGVjbCwgdGhlcmUncyBub3RoaW5nIHRvIG92ZXJyaWRlLiBTbyBqdXN0IGFkZCB0
aGUgZmlyc3QgcHJvcGVydGllcy4KKyAgICBpZiAoa2V5ZnJhbWVSdWxlLT5zdHlsZSgpKQorICAg
ICAgICBhcHBseURlY2xhcmF0aW9uczx0cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6
ZSgpIC0gMSk7CisKKyAgICAvLyBJZiBvdXIgZm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5k
IHVwZGF0ZSBpdCBub3cuCisgICAgaWYgKG1fZm9udERpcnR5KQorICAgICAgICB1cGRhdGVGb250
KCk7CisKKyAgICAvLyBMaW5lLWhlaWdodCBpcyBzZXQgd2hlbiB3ZSBhcmUgc3VyZSB3ZSBkZWNp
ZGVkIG9uIHRoZSBmb250LXNpemUKKyAgICBpZiAobV9saW5lSGVpZ2h0VmFsdWUpCisgICAgICAg
IGFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7
CisKKyAgICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJvcGVydGllcy4KKyAgICBpZiAoa2V5ZnJh
bWVSdWxlLT5zdHlsZSgpKQorICAgICAgICBhcHBseURlY2xhcmF0aW9uczxmYWxzZT4oZmFsc2Us
IDAsIG1fbWF0Y2hlZERlY2xzLnNpemUoKSAtIDEpOworCisgICAgLy8gSWYgb3VyIGZvbnQgZ290
IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJvcHMsCisgICAgLy8g
Z28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgorICAgIGlmIChtX2ZvbnREaXJ0
eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOworCisgICAgLy8gQWRkIGFsbCB0aGUgYW5pbWF0aW5n
IHByb3BlcnRpZXMgdG8gdGhlIGxpc3QKKyAgICBpZiAoa2V5ZnJhbWVSdWxlLT5zdHlsZSgpKSB7
CisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQg
PSBrZXlmcmFtZVJ1bGUtPnN0eWxlKCktPmVuZCgpOworICAgICAgICBmb3IgKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGtleWZyYW1lUnVsZS0+c3R5bGUo
KS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgICAgICBpbnQgcHJvcGVydHkg
PSAoKml0KS5pZCgpOworICAgICAgICAgICAgLy8gVGltaW5nLWZ1bmN0aW9uIHdpdGhpbiBrZXlm
cmFtZXMgaXMgc3BlY2lhbCwgYmVjYXVzZSBpdCBpcyBub3QgYW5pbWF0ZWQ7IGl0IGp1c3QKKyAg
ICAgICAgICAgIC8vIGRlc2NyaWJlcyB0aGUgdGltaW5nIGZ1bmN0aW9uIGJldHdlZW4gdGhpcyBr
ZXlmcmFtZSBhbmQgdGhlIG5leHQuCisgICAgICAgICAgICBpZiAocHJvcGVydHkgIT0gQ1NTUHJv
cGVydHlXZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbikKKyAgICAgICAgICAgICAgICBsaXN0
LmFkZFByb3BlcnR5KHByb3BlcnR5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBt
X3N0eWxlLnJlbGVhc2UoKTsKK30KKwogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0
eWxlc0ZvckFuaW1hdGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSogZWxlbWVudFN0
eWxlLCBLZXlmcmFtZUxpc3QmIGxpc3QpCiB7CiAgICAgbGlzdC5jbGVhcigpOwpAQCAtMTM4Niw2
ICsxNDM1LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjprZXlmcmFtZVN0eWxlc0ZvckFuaW1h
dGlvbihFbGVtZW50KiBlLCBjb25zdCBSZW5kZXJTdHlsZSoKICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICBjb25zdCBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlKiBydWxlID0gbV9rZXlmcmFt
ZXNSdWxlTWFwLmZpbmQobGlzdC5hbmltYXRpb25OYW1lKCkuaW1wbCgpKS5nZXQoKS0+c2Vjb25k
LmdldCgpOworICAgIFJlZlB0cjxSZW5kZXJTdHlsZT4ga2V5ZnJhbWVTdHlsZTsKICAgICAKICAg
ICAvLyBDb25zdHJ1Y3QgYW5kIHBvcHVsYXRlIHRoZSBzdHlsZSBmb3IgZWFjaCBrZXlmcmFtZQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBydWxlLT5sZW5ndGgoKTsgKytpKSB7CkBAIC0x
MzkzLDY1ICsxNDQzLDM3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6a2V5ZnJhbWVTdHlsZXNG
b3JBbmltYXRpb24oRWxlbWVudCogZSwgY29uc3QgUmVuZGVyU3R5bGUqCiAgICAgICAgIGluaXRF
bGVtZW50KGUpOwogICAgICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUpOwogICAgICAgICAKLSAg
ICAgICAgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiBrZiA9IHJ1bGUtPml0ZW0oaSk7Ci0g
ICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihrZi0+c3R5bGUoKSk7Ci0KLSAgICAgICAgQVNT
RVJUKCFtX3N0eWxlKTsKLQotICAgICAgICAvLyBDcmVhdGUgdGhlIHN0eWxlCi0gICAgICAgIG1f
c3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmUoZWxlbWVudFN0eWxlKTsKLSAgICAgICAgCi0gICAg
ICAgIG1fbGluZUhlaWdodFZhbHVlID0gMDsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIGRvbid0
IG5lZWQgdG8gYm90aGVyIHdpdGggIWltcG9ydGFudC4gU2luY2UgdGhlcmUgaXMgb25seSBldmVy
IG9uZQotICAgICAgICAvLyBkZWNsLCB0aGVyZSdzIG5vdGhpbmcgdG8gb3ZlcnJpZGUuIFNvIGp1
c3QgYWRkIHRoZSBmaXJzdCBwcm9wZXJ0aWVzLgotICAgICAgICBhcHBseURlY2xhcmF0aW9uczx0
cnVlPihmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbHMuc2l6ZSgpIC0gMSk7CisgICAgICAgIGNvbnN0
IFdlYktpdENTU0tleWZyYW1lUnVsZSoga2V5ZnJhbWVSdWxlID0gcnVsZS0+aXRlbShpKTsKICAg
ICAgICAgCi0gICAgICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkLCBnbyBhaGVhZCBhbmQg
dXBkYXRlIGl0IG5vdy4KLSAgICAgICAgaWYgKG1fZm9udERpcnR5KQotICAgICAgICAgICAgdXBk
YXRlRm9udCgpOworICAgICAgICBrZXlmcmFtZVN0eWxlID0gc3R5bGVGb3JLZXlmcmFtZShlbGVt
ZW50U3R5bGUsIGtleWZyYW1lUnVsZSwgbGlzdCk7CiAKLSAgICAgICAgLy8gTGluZS1oZWlnaHQg
aXMgc2V0IHdoZW4gd2UgYXJlIHN1cmUgd2UgZGVjaWRlZCBvbiB0aGUgZm9udC1zaXplCi0gICAg
ICAgIGlmIChtX2xpbmVIZWlnaHRWYWx1ZSkKLSAgICAgICAgICAgIGFwcGx5UHJvcGVydHkoQ1NT
UHJvcGVydHlMaW5lSGVpZ2h0LCBtX2xpbmVIZWlnaHRWYWx1ZSk7Ci0gICAgICAgIAotICAgICAg
ICAvLyBOb3cgZG8gcmVzdCBvZiB0aGUgcHJvcGVydGllcy4KLSAgICAgICAgYXBwbHlEZWNsYXJh
dGlvbnM8ZmFsc2U+KGZhbHNlLCAwLCBtX21hdGNoZWREZWNscy5zaXplKCkgLSAxKTsKLSAgICAg
ICAgCi0gICAgICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9u
LWVzc2VudGlhbCBmb250IHByb3BzLCAKLSAgICAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBp
dCBhIHNlY29uZCB0aW1lLgotICAgICAgICBpZiAobV9mb250RGlydHkpCi0gICAgICAgICAgICB1
cGRhdGVGb250KCk7Ci0KLSAgICAgICAgLy8gQWRkIGFsbCB0aGUgYW5pbWF0aW5nIHByb3BlcnRp
ZXMgdG8gdGhlIGxpc3QKLSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGtmLT5zdHlsZSgpLT5lbmQoKTsKLSAgICAgICAgZm9yIChDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBrZi0+c3R5bGUoKS0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBpbnQgcHJvcGVydHkgPSAoKml0
KS5pZCgpOwotICAgICAgICAgICAgLy8gVGltaW5nLWZ1bmN0aW9uIHdpdGhpbiBrZXlmcmFtZXMg
aXMgc3BlY2lhbCwgYmVjYXVzZSBpdCBpcyBub3QgYW5pbWF0ZWQ7IGl0IGp1c3QKLSAgICAgICAg
ICAgIC8vIGRlc2NyaWJlcyB0aGUgdGltaW5nIGZ1bmN0aW9uIGJldHdlZW4gdGhpcyBrZXlmcmFt
ZSBhbmQgdGhlIG5leHQuCi0gICAgICAgICAgICBpZiAocHJvcGVydHkgIT0gQ1NTUHJvcGVydHlX
ZWJraXRBbmltYXRpb25UaW1pbmdGdW5jdGlvbikKLSAgICAgICAgICAgICAgICBsaXN0LmFkZFBy
b3BlcnR5KHByb3BlcnR5KTsKLSAgICAgICAgfQotICAgICAgICAKICAgICAgICAgLy8gQWRkIHRo
aXMga2V5ZnJhbWUgc3R5bGUgdG8gYWxsIHRoZSBpbmRpY2F0ZWQga2V5IHRpbWVzCiAgICAgICAg
IFZlY3RvcjxmbG9hdD4ga2V5czsKLSAgICAgICAga2YtPmdldEtleXMoa2V5cyk7CisgICAgICAg
IGtleWZyYW1lUnVsZS0+Z2V0S2V5cyhrZXlzKTsKICAgICAgICAgZm9yIChzaXplX3Qga2V5SW5k
ZXggPSAwOyBrZXlJbmRleCA8IGtleXMuc2l6ZSgpOyArK2tleUluZGV4KSB7CiAgICAgICAgICAg
ICBmbG9hdCBrZXkgPSBrZXlzW2tleUluZGV4XTsKLSAgICAgICAgICAgIGxpc3QuaW5zZXJ0KGtl
eSwgbV9zdHlsZSk7CisgICAgICAgICAgICBsaXN0Lmluc2VydChrZXksIGtleWZyYW1lU3R5bGUu
Z2V0KCkpOwogICAgICAgICB9Ci0gICAgICAgIG1fc3R5bGUgPSAwOworICAgICAgICBrZXlmcmFt
ZVN0eWxlLnJlbGVhc2UoKTsKKyAgICAgICAgCiAgICAgfQogICAgIAotICAgIC8vIE1ha2Ugc3Vy
ZSB0aGVyZSBpcyBhIDAlIGFuZCBhIDEwMCUga2V5ZnJhbWUKLSAgICBmbG9hdCBmaXJzdCA9IC0x
OwotICAgIGZsb2F0IGxhc3QgPSAtMTsKLSAgICBpZiAobGlzdC5zaXplKCkgPj0gMikgewotICAg
ICAgICBmaXJzdCA9IGxpc3QuYmVnaW5LZXlmcmFtZXMoKS0+a2V5KCk7Ci0gICAgICAgIGxhc3Qg
PSAobGlzdC5lbmRLZXlmcmFtZXMoKS0xKS0+a2V5KCk7Ci0gICAgfQotICAgIGlmIChmaXJzdCAh
PSAwIHx8IGxhc3QgIT0gMSkKLSAgICAgICAgbGlzdC5jbGVhcigpOworICAgIC8vIElmIHRoZSAw
JSBrZXlmcmFtZSBpcyBtaXNzaW5nLCBjcmVhdGUgaXQgKGJ1dCBvbmx5IGlmIHRoZXJlIGlzIGF0
IGxlYXN0IG9uZSBvdGhlciBrZXlmcmFtZSkKKyAgICBpbnQgaW5pdGlhbExpc3RTaXplID0gbGlz
dC5zaXplKCk7CisgICAgaWYgKGluaXRpYWxMaXN0U2l6ZSA+IDAgJiYgbGlzdC5iZWdpbktleWZy
YW1lcygpLT5rZXkoKSAhPSAwKSB7CisgICAgICAgIFJlZlB0cjxXZWJLaXRDU1NLZXlmcmFtZVJ1
bGU+IGtleWZyYW1lID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlOjpjcmVhdGUoKTsKKyAgICAgICAg
a2V5ZnJhbWUtPnNldEtleVRleHQoIjAlIik7CisgICAgICAgIGtleWZyYW1lU3R5bGUgPSBzdHls
ZUZvcktleWZyYW1lKGVsZW1lbnRTdHlsZSwga2V5ZnJhbWUuZ2V0KCksIGxpc3QpOworICAgICAg
ICBsaXN0Lmluc2VydCgwLCBrZXlmcmFtZVN0eWxlLnJlbGVhc2UoKSk7CisgICAgfQorCisgICAg
Ly8gSWYgdGhlIDEwMCUga2V5ZnJhbWUgaXMgbWlzc2luZywgY3JlYXRlIGl0IChidXQgb25seSBp
ZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgb3RoZXIga2V5ZnJhbWUpCisgICAgaWYgKGluaXRpYWxM
aXN0U2l6ZSA+IDAgJiYgKGxpc3QuZW5kS2V5ZnJhbWVzKCkgLSAxKS0+a2V5KCkgIT0gMSkgewor
ICAgICAgICBSZWZQdHI8V2ViS2l0Q1NTS2V5ZnJhbWVSdWxlPiBrZXlmcmFtZSA9IFdlYktpdENT
U0tleWZyYW1lUnVsZTo6Y3JlYXRlKCk7CisgICAgICAgIGtleWZyYW1lLT5zZXRLZXlUZXh0KCIx
MDAlIik7CisgICAgICAgIGtleWZyYW1lU3R5bGUgPSBzdHlsZUZvcktleWZyYW1lKGVsZW1lbnRT
dHlsZSwga2V5ZnJhbWUuZ2V0KCksIGxpc3QpOworICAgICAgICBsaXN0Lmluc2VydCgxLCBrZXlm
cmFtZVN0eWxlLnJlbGVhc2UoKSk7CisgICAgfQogfQogCiBQYXNzUmVmUHRyPFJlbmRlclN0eWxl
PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHlsZUZvckVsZW1lbnQoUHNldWRvSWQgcHNldWRv
LCBFbGVtZW50KiBlLCBSZW5kZXJTdHlsZSogcGFyZW50U3R5bGUsIGJvb2wgbWF0Y2hWaXNpdGVk
UHNldWRvQ2xhc3MpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgg
Yi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKaW5kZXggMDVjZDEwOS4uNjc3M2MwZSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuaApAQCAtNjQsNiArNjQsNyBAQCBjbGFzcyBTdHlsZUltYWdl
OwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRMaXN0OwogY2xhc3MgU3R5bGVk
RWxlbWVudDsKK2NsYXNzIFdlYktpdENTU0tleWZyYW1lUnVsZTsKIGNsYXNzIFdlYktpdENTU0tl
eWZyYW1lc1J1bGU7CiAKIGNsYXNzIE1lZGlhUXVlcnlSZXN1bHQgOiBwdWJsaWMgTm9uY29weWFi
bGUgewpAQCAtMTExLDYgKzExMiw4IEBAIHB1YmxpYzoKIAogICAgICAgICBSZW5kZXJTdHlsZSog
c3R5bGUoKSBjb25zdCB7IHJldHVybiBtX3N0eWxlLmdldCgpOyB9CiAKKyAgICAgICAgUGFzc1Jl
ZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJTdHlsZSosIGNv
bnN0IFdlYktpdENTU0tleWZyYW1lUnVsZSosIEtleWZyYW1lTGlzdCYpOworCiAgICAgcHVibGlj
OgogICAgICAgICAvLyBUaGVzZSBtZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVs
ZXMgdGhhdCBtYXRjaGVkIGZvciBhIGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQp
LgogICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChF
bGVtZW50KiwgYm9vbCBhdXRob3JPbmx5KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFudWFsLXRl
c3RzL2FuaW1hdGlvbi13aXRoLXRyYW5zaXRpb24uaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3Rz
L2FuaW1hdGlvbi13aXRoLXRyYW5zaXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4zN2E3NTg5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9tYW51YWwtdGVz
dHMvYW5pbWF0aW9uLXdpdGgtdHJhbnNpdGlvbi5odG1sCkBAIC0wLDAgKzEsNjAgQEAKKzxodG1s
PgorPGhlYWQ+CisgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtdHlwZSIgY29udGVudD0idGV4
dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgPHRpdGxlPnNpbXBsZS1hbmltYXRpb248L3RpdGxl
PgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4iPgorICAgIGRpdiB7Cisg
ICAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgICBsZWZ0OiAxMHB4OworICAgICAgdG9wOiAx
MHB4OworICAgICAgd2lkdGg6IDIwMHB4OworICAgICAgaGVpZ2h0OiAyMDBweDsKKyAgICAgIGJh
Y2tncm91bmQtY29sb3I6ICM2OTY7CisgICAgICAtd2Via2l0LXRyYW5zaXRpb246IGxlZnQgNXMs
IHRvcCA1czsKKyAgICB9CisgICAgCisgICAgLmFuaW1hdGUgeworICAgICAgLXdlYmtpdC1hbmlt
YXRpb24tbmFtZTogc2ltcGxlOworICAgICAgLXdlYmtpdC1hbmltYXRpb24tZHVyYXRpb246IDJz
OworICAgICAgLXdlYmtpdC1hbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiBsaW5lYXI7CisgICAg
ICAtd2Via2l0LWFuaW1hdGlvbi1maWxsLW1vZGU6IGJhY2t3YXJkczsKKyAgICB9CisgICAgCisg
ICAgQC13ZWJraXQta2V5ZnJhbWVzIHNpbXBsZSB7CisgICAgICA1MCUgeworICAgICAgICBsZWZ0
OiAzMDBweDsKKyAgICAgIH0KKyAgICAgIDEwMCUgeworICAgICAgICBsZWZ0OiA4MHB4OworICAg
ICAgfQorICAgIH0KKyAgICAKKyAgICAKKyAgPC9zdHlsZT4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICAKKyAgICBmdW5jdGlvbiBkb1RyYW5z
aXRpb24oKSB7CisgICAgICB2YXIgZGl2ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiZGl2Iik7
CisgICAgICBkaXYuc3R5bGUubGVmdCA9ICIyMDBweCI7CisgICAgfQorICAgIAorICAgIGZ1bmN0
aW9uIGRvQW5pbWF0aW9uKCkgeworICAgICAgdmFyIGRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0
b3IoImRpdiIpOworICAgICAgZGl2LmNsYXNzTmFtZSA9ICJhbmltYXRlIjsKKyAgICB9CisgICAg
CisgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgIDxwPlRlc3Rpbmcgc2V0dGluZyBhbiBh
bmltYXRpb24gd2hpbGUgYSB0cmFuc2l0aW9uIGlzIHJ1bm5pbmcsIGluIHRoZQorICAgIGNhc2Ug
d2hlcmUgdGhlIGFuaW1hdGlvbiBzeW50aGVzaXplcyB0aGUgaW5pdGlhbCBrZXlmcmFtZTwvcD4K
KyAgPHA+CisgICAgU3RhcnQgdGhlIHRyYW5zaXRpb24sIHRoZW4gc3RhcnQgdGhlIGFuaW1hdGlv
bi48L3A+CisgIDxwPgorICAgIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD00MTE4OCI+aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTQxMTg4PC9hPgorICA8L3A+CisgIDxidXR0b24gb25jbGljaz0iZG9UcmFuc2l0aW9uKCk7Ij5U
cmFuc2l0aW9uPC9idXR0b24+CisgIDxidXR0b24gb25jbGljaz0iZG9BbmltYXRpb24oKTsiPlNl
dCBBbmltYXRpb248L2J1dHRvbj4KKzxkaXY+PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="46906"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>