<?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>43017</bug_id>
          
          <creation_ts>2010-07-26 16:36:08 -0700</creation_ts>
          <short_desc>removeFormat needs to be reimplemented</short_desc>
          <delta_ts>2010-11-11 10:36:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NeedsReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>47424</dependson>
    
    <dependson>47782</dependson>
    
    <dependson>47784</dependson>
    
    <dependson>47792</dependson>
          <blocked>13125</blocked>
    
    <blocked>17926</blocked>
    
    <blocked>20216</blocked>
    
    <blocked>21843</blocked>
    
    <blocked>29164</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>darin</cc>
    
    <cc>emerick</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>jparent</cc>
    
    <cc>mike</cc>
    
    <cc>mjs</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>256328</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-26 16:36:08 -0700</bug_when>
    <thetext>The current implementation of RemoveFormatCommand deletes the entire selection and put them back using insertText.  But this deletes all elements within the selection.  We must implement a new version of RemoveFormatCommand that matches the behaviors of other browsers such as MSIE and Firefox.

As discussed on webkit-dev, we need to do the following:

1. Determine what each browser do for every HTML / CSS element on removeFormat
2. Rewrite RemoveFormat to match the desired behavior</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>256350</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-26 17:30:21 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; 1. Determine what each browser do for every HTML / CSS element on removeFormat

I think it would be sufficient to test the following:
1. Every HTML element with no CSS.
2. Div with each CSS value/property (one at a time probably).
3. Span with each CSS value/property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257835</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-29 13:22:58 -0700</bug_when>
    <thetext>HTML elements supported by WebKit:

a, abbr, acronym, address, applet, area, article, aside, audio, b, base, basefont, bdo, bgsound, big, blockquote, body, br, button, canvas, caption, center, cite, code, col, colgroup, command, datagrid, datalist, dcell, dcol, dd, del, details, dfn, dir, div, dl, drow, dt, em, embed, fieldset, figcaption, figure, font, footer, form, frame, frameset, h1, h2, h3, h4, h5, h6, head, header, hgroup, hr, html, i, iframe, image, img, input, ins, isindex, kbd, keygen, label, layer, legend, li, link, listing, map, mark, marquee, menu, meta, meter, nav, nobr, noembed, noframes, nolayer, noscript, object, ol, optgroup, option, p, param, plaintext, pre, progress, q, rp, rt, ruby, s, samp, script, section, select, small, source, span, strike, strong, style, sub, summary, sup, table, tbody, td, textarea, tfoot, th, thead, title, tr, track, tt, u, ul, var, video, wbr, xmp

CSS properties supported by WebKit:

color, direction, display, font, font-family, font-size, font-style, font-variant, font-weight, text-rendering, -webkit-text-size-adjust, zoom, line-height, background, background-attachment, background-clip, background-color, background-image, background-origin, background-position, background-position-x, background-position-y, background-repeat, background-repeat-x, background-repeat-y, background-size, border, border-bottom, border-bottom-color, border-bottom-left-radius, border-bottom-right-radius, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-radius, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-left-radius, border-top-right-radius, border-top-style, border-top-width, border-width, bottom, caption-side, clear, clip, content, counter-increment, counter-reset, cursor, empty-cells, float, font-stretch, height, left, letter-spacing, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, opacity, orphans, outline, outline-color, outline-offset, outline-style, outline-width, overflow, overflow-x, overflow-y, padding, padding-bottom, padding-left, padding-right, padding-top, page, page-break-after, page-break-before, page-break-inside, pointer-events, position, quotes, resize, right, size, src, table-layout, text-align, text-decoration, text-indent, text-line-through, text-line-through-color, text-line-through-mode, text-line-through-style, text-line-through-width, text-overflow, text-overline, text-overline-color, text-overline-mode, text-overline-style, text-overline-width, text-shadow, text-transform, text-underline, text-underline-color, text-underline-mode, text-underline-style, text-underline-width, top, unicode-bidi, unicode-range, vertical-align, visibility, white-space, widows, width, word-break, word-spacing, word-wrap, z-index, -webkit-animation, -webkit-animation-delay, -webkit-animation-direction, -webkit-animation-duration, -webkit-animation-fill-mode, -webkit-animation-iteration-count, -webkit-animation-name, -webkit-animation-play-state, -webkit-animation-timing-function, -webkit-appearance, -webkit-backface-visibility, -webkit-background-clip, -webkit-background-composite, -webkit-background-origin, -webkit-background-size, -webkit-binding, -webkit-border-end, -webkit-border-end-color, -webkit-border-end-style, -webkit-border-end-width, -webkit-border-fit, -webkit-border-horizontal-spacing, -webkit-border-image, -webkit-border-radius, -webkit-border-start, -webkit-border-start-color, -webkit-border-start-style, -webkit-border-start-width, -webkit-border-vertical-spacing, -webkit-box-align, -webkit-box-direction, -webkit-box-flex, -webkit-box-flex-group, -webkit-box-lines, -webkit-box-ordinal-group, -webkit-box-orient, -webkit-box-pack, -webkit-box-reflect, -webkit-box-shadow, -webkit-box-sizing, -webkit-color-correction, -webkit-column-break-after, -webkit-column-break-before, -webkit-column-break-inside, -webkit-column-count, -webkit-column-gap, -webkit-column-rule, -webkit-column-rule-color, -webkit-column-rule-style, -webkit-column-rule-width, -webkit-column-span, -webkit-column-width, -webkit-columns, -webkit-font-size-delta, -webkit-font-smoothing, -webkit-highlight, -webkit-hyphenate-character, -webkit-hyphens, -webkit-line-break, -webkit-line-clamp, -webkit-margin-bottom-collapse, -webkit-margin-collapse, -webkit-margin-end, -webkit-margin-start, -webkit-margin-top-collapse, -webkit-marquee, -webkit-marquee-direction, -webkit-marquee-increment, -webkit-marquee-repetition, -webkit-marquee-speed, -webkit-marquee-style, -webkit-mask, -webkit-mask-attachment, -webkit-mask-box-image, -webkit-mask-clip, -webkit-mask-composite, -webkit-mask-image, -webkit-mask-origin, -webkit-mask-position, -webkit-mask-position-x, -webkit-mask-position-y, -webkit-mask-repeat, -webkit-mask-repeat-x, -webkit-mask-repeat-y, -webkit-mask-size, -webkit-match-nearest-mail-blockquote-color, -webkit-nbsp-mode, -webkit-padding-end, -webkit-padding-start, -webkit-perspective, -webkit-perspective-origin, -webkit-perspective-origin-x, -webkit-perspective-origin-y, -webkit-rtl-ordering, -webkit-text-decorations-in-effect, -webkit-text-fill-color, -webkit-text-security, -webkit-text-stroke, -webkit-text-stroke-color, -webkit-text-stroke-width, -webkit-transform, -webkit-transform-origin, -webkit-transform-origin-x, -webkit-transform-origin-y, -webkit-transform-origin-z, -webkit-transform-style, -webkit-transition, -webkit-transition-delay, -webkit-transition-duration, -webkit-transition-property, -webkit-transition-timing-function, -webkit-user-drag, -webkit-user-modify, -webkit-user-select, -webkit-variable-declaration-block,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257895</commentid>
    <comment_count>3</comment_count>
      <attachid>62994</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-29 14:41:59 -0700</bug_when>
    <thetext>Created attachment 62994
test elements</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>257896</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-07-29 14:43:04 -0700</bug_when>
    <thetext>Result on Firefox.

Removed
    abbr, acronym, applet, article, aside, b, bdo, big, button, caption, cite, code, colgroup, command, datagrid, datalist, dcell, dcol, del, details, dfn, drow, em, figcaption, figure, font, footer, frameset, header, hgroup, html, i, iframe, ins, kbd, label, layer, legend, map, mark, meter, nav, nolayer, object, optgroup, option, progress, q, rp, rt, ruby, s, samp, section, select, small, span, strike, strong, sub, summary, sup, textarea, track, tt, u, var
Preserved
    noscript, a, address, area, audio, base, basefont, bgsound, blockquote, body, br, canvas, center, col, dd, dir, div, dl, dt, embed, fieldset, form, frame, h1, h2, h3, h4, h5, h6, head, hr, image, img, input, isindex, keygen, li, link, listing, marquee, menu, meta, nobr, noembed, noframes, noscript, ol, p, param, plaintext, pre, script, source, style, table, tbody, td, tfoot, th, thead, title, tr, ul, video, wbr, xmp
Exceptions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>274220</commentid>
    <comment_count>5</comment_count>
      <attachid>66559</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-03 15:35:11 -0700</bug_when>
    <thetext>Created attachment 66559
test elements (works on Firefox and MSIE)

Firefox:
Removed
    abbr, acronym, applet, article, aside, b, bdo, big, button, cite, code, command, datagrid, datalist, dcell, dcol, del, details, dfn, drow, em, figcaption, figure, font, footer, frameset, header, hgroup, html, i, iframe, ins, kbd, label, layer, legend, map, mark, meter, nav, nolayer, object, optgroup, option, progress, q, rp, rt, ruby, s, samp, section, select, small, span, strike, strong, sub, summary, sup, textarea, track, tt, u, var
Preserved
    noscript, a, address, area, audio, base, basefont, bgsound, blockquote, body, br, canvas, center, col, dd, dir, div, dl, dt, embed, fieldset, form, frame, h1, h2, h3, h4, h5, h6, head, hr, image, img, input, isindex, keygen, li, link, listing, marquee, menu, meta, nobr, noembed, noframes, noscript, ol, p, param, plaintext, pre, script, source, style, table, tbody, td, tfoot, th, thead, title, tr, ul, video, wbr, xmp
Exceptions
    caption (&lt;table&gt;hello, world&lt;/table&gt; webkit)
    colgroup (&lt;table&gt;hello, world&lt;/table&gt; webkit)

MSIE:

Removed 
    acronym, b, bdo, big, cite, code, dfn, em, font, i, ins, kbd, nobr, q, s, samp, small, strike, strong, sub, sup, tt, u, var
Preserved 
    noscript, a, abbr, address, applet, area, article, aside, audio, base, basefont, bgsound, blockquote, body, br, button, canvas, caption, center, colgroup, command, datagrid, datalist, dcell, dcol, dd, del, details, dir, div, dl, drow, dt, embed, fieldset, figcaption, figure, footer, form, frame, h1, h2, h3, h4, h5, h6, head, header, hgroup, hr, html, iframe, image, img, input, isindex, keygen, label, layer, legend, li, link, listing, map, mark, marquee, menu, meta, meter, nav, noembed, noframes, nolayer, noscript, object, ol, optgroup, option, p, param, plaintext, pre, progress, rp, rt, ruby, script, section, select, source, span, style, summary, table, tbody, td, textarea, tfoot, th, thead, title, tr, track, ul, video, wbr, xmp
Exceptions 
    col (&lt;TABLE&gt;&lt;COL&gt;&lt;/TABLE&gt; webkit) failed to select
    frameset (&lt;FRAMESET&gt;hello, world&lt;/FRAMESET&gt; webkit) failed to select</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280965</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-17 16:19:31 -0700</bug_when>
    <thetext>Firefox does something interesting for inline styles.  It removes span regardless of inline styles so I can&apos;t really test which CSS property it removes and doesn&apos;t remove any CSS property for elements that it doesn&apos;t remove.  e.g. all properties on p will be preserved.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>280979</commentid>
    <comment_count>7</comment_count>
      <attachid>67970</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-17 16:39:05 -0700</bug_when>
    <thetext>Created attachment 67970
test CSS properties

This is my wasted effort to test removal of CSS properties in Firefox.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284715</commentid>
    <comment_count>8</comment_count>
      <attachid>68752</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-24 14:42:56 -0700</bug_when>
    <thetext>Created attachment 68752
test CSS properties (MSIE / Firefox)

It seems like MSIE does the same for CSS properties.  In fact, MSIE does not seem to delete any CSS property at all, which IMHO is wrong because user can never tell the difference between &lt;b&gt;hello&lt;/b&gt; and &lt;span style=&quot;font-weight: bold;&quot;&gt;hello&lt;/span&gt; but then MSIE does not support styleWithCSS so we might say that they&apos;re being consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284724</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-24 14:50:25 -0700</bug_when>
    <thetext>I think the most reasonable thing we can do here is to remove all elements that MSIE deletes (I feel that Firefox delete too much or maybe that my test has a bug).  We should remove corresponding CSS styles even though this will be inconsistent with MSIE because we DO support styleWithCSS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>295343</commentid>
    <comment_count>10</comment_count>
      <attachid>70999</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-17 22:33:08 -0700</bug_when>
    <thetext>Created attachment 70999
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296043</commentid>
    <comment_count>11</comment_count>
      <attachid>71140</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-19 01:01:37 -0700</bug_when>
    <thetext>Created attachment 71140
work in progress 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296456</commentid>
    <comment_count>12</comment_count>
      <attachid>71209</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-19 15:22:30 -0700</bug_when>
    <thetext>Created attachment 71209
reimplements RemoveFormat</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296459</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-19 15:24:12 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Created an attachment (id=71209) [details]
&gt; reimplements RemoveFormat

I didn&apos;t add many tests in this patch because this patch already rebaselines a lot of tests and quite large.  I intend to add some scripts tests in a follow up patch for a better test coverage (particularly undo/redo).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297513</commentid>
    <comment_count>14</comment_count>
      <attachid>71209</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-21 11:08:43 -0700</bug_when>
    <thetext>Comment on attachment 71209
reimplements RemoveFormat

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

Code looks fine, just some naming nits.

&gt; WebCore/editing/ApplyStyleCommand.h:131
&gt; +    bool (*m_isInlineElementToRemove)(const Element*);

Can we name this m_isInlineElementToRemoveFunction?  This seems to follow the naming convention in other parts of the code.  Also, can you make a typedef?  In create(), it&apos;s particularly hard to read.

&gt; LayoutTests/editing/execCommand/remove-format-elements.html:70
&gt; +        elementName = elementList[elementList.length-1]

Nit: spaces round the minus sign

&gt; LayoutTests/editing/execCommand/remove-format-elements.html:92
&gt; +    document.execCommand(&apos;removeFormat&apos;, false, null);

This tests each element one at a time.  Would it be possible to add a test that has multiple elements in it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297694</commentid>
    <comment_count>15</comment_count>
      <attachid>71505</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-21 15:46:42 -0700</bug_when>
    <thetext>Created attachment 71505
fixed per Tony&apos;s comment</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297705</commentid>
    <comment_count>16</comment_count>
      <attachid>71505</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-21 16:21:10 -0700</bug_when>
    <thetext>Comment on attachment 71505
fixed per Tony&apos;s comment

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

&gt; WebCore/editing/ApplyStyleCommand.cpp:1536
&gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; elementsToPushDown;

Nit: Maybe add a comment explaining why you need this vector.  I don&apos;t think it&apos;s obvious from the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297744</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-21 17:29:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 71505 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71505&amp;action=review
&gt; 
&gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1536
&gt; &gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; elementsToPushDown;
&gt; 
&gt; Nit: Maybe add a comment explaining why you need this vector.  I don&apos;t think it&apos;s obvious from the code.

You mean into the code?  or to the change log?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297746</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-10-21 17:36:38 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; (From update of attachment 71505 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=71505&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; WebCore/editing/ApplyStyleCommand.cpp:1536
&gt; &gt; &gt; +    Vector&lt;RefPtr&lt;Element&gt; &gt; elementsToPushDown;
&gt; &gt; 
&gt; &gt; Nit: Maybe add a comment explaining why you need this vector.  I don&apos;t think it&apos;s obvious from the code.
&gt; 
&gt; You mean into the code?  or to the change log?

The code.  The description in the ChangeLog seems sufficient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297756</commentid>
    <comment_count>19</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-21 17:47:38 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; &gt; Nit: Maybe add a comment explaining why you need this vector.  I don&apos;t think it&apos;s obvious from the code.
&gt; &gt; 
&gt; &gt; You mean into the code?  or to the change log?
&gt; 
&gt; The code.  The description in the ChangeLog seems sufficient.

    // The outer loop is traversing the tree vertically from highestAncestor to targetNode
    Node* current = highestAncestor;
    // Along the way, styled elements that contain targetNode are removed and accumulated into elementsToPushDown.
    // Each child of the removed element, exclusing ancestors of targetNode, is then wrapped by clones of elements in elementsToPushDown.
    Vector&lt;RefPtr&lt;Element&gt; &gt; elementsToPushDown;
    while (current != targetNode) {

How does this sound?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297776</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-21 18:30:19 -0700</bug_when>
    <thetext>Committed r70283: &lt;http://trac.webkit.org/changeset/70283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297785</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-21 19:04:01 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/70283 might have broken Qt Linux Release
The following tests are not passing:
editing/execCommand/remove-format-elements.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297796</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-10-21 19:38:42 -0700</bug_when>
    <thetext>Thanks for the review as always, Tony.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>62994</attachid>
            <date>2010-07-29 14:41:59 -0700</date>
            <delta_ts>2010-09-03 15:35:11 -0700</delta_ts>
            <desc>test elements</desc>
            <filename>remove-format-test.html</filename>
            <type>text/html</type>
            <size>2788</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+CjxkbD4K
PGR0PlJlbW92ZWQ8L2R0Pgo8ZGQgaWQ9InJlbW92ZWQiPjwvZGQ+CjxkdD5QcmVzZXJ2ZWQ8L2R0
Pgo8ZGQgaWQ9InByZXNlcnZlZCI+PC9kZD4KPGR0PkV4Y2VwdGlvbnM8L2R0Pgo8ZGQgaWQ9ImV4
Y2VwdGlvbnMiPjwvZGQ+CjwvZGw+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCnZh
ciBlbGVtZW50cyA9IFsgIm5vc2NyaXB0IiwgImEiLCAiYWJiciIsICJhY3JvbnltIiwgImFkZHJl
c3MiLCAiYXBwbGV0IiwgImFyZWEiLCAiYXJ0aWNsZSIsICJhc2lkZSIsICJhdWRpbyIsCiJiIiwg
ImJhc2UiLCAiYmFzZWZvbnQiLCAiYmRvIiwgImJnc291bmQiLCAiYmlnIiwgImJsb2NrcXVvdGUi
LCAiYm9keSIsICJiciIsICJidXR0b24iLAoiY2FudmFzIiwgImNhcHRpb24iLCAiY2VudGVyIiwg
ImNpdGUiLCAiY29kZSIsICJjb2wiLCAiY29sZ3JvdXAiLCAiY29tbWFuZCIsCiJkYXRhZ3JpZCIs
ICJkYXRhbGlzdCIsICJkY2VsbCIsICJkY29sIiwgImRkIiwgImRlbCIsICJkZXRhaWxzIiwgImRm
biIsICJkaXIiLCAiZGl2IiwgImRsIiwgImRyb3ciLCAiZHQiLAoiZW0iLCAiZW1iZWQiLCAiZmll
bGRzZXQiLCAiZmlnY2FwdGlvbiIsICJmaWd1cmUiLCAiZm9udCIsICJmb290ZXIiLCAiZm9ybSIs
ICJmcmFtZSIsICJmcmFtZXNldCIsCiJoMSIsICJoMiIsICJoMyIsICJoNCIsICJoNSIsICJoNiIs
ICJoZWFkIiwgImhlYWRlciIsICJoZ3JvdXAiLCAiaHIiLCAiaHRtbCIsCiJpIiwgImlmcmFtZSIs
ICJpbWFnZSIsICJpbWciLCAiaW5wdXQiLCAiaW5zIiwgImlzaW5kZXgiLCAia2JkIiwgImtleWdl
biIsICJsYWJlbCIsICJsYXllciIsICJsZWdlbmQiLCAibGkiLCAibGluayIsICJsaXN0aW5nIiwK
Im1hcCIsICJtYXJrIiwgIm1hcnF1ZWUiLCAibWVudSIsICJtZXRhIiwgIm1ldGVyIiwgIm5hdiIs
ICJub2JyIiwgIm5vZW1iZWQiLCAibm9mcmFtZXMiLCAibm9sYXllciIsICJub3NjcmlwdCIsCiJv
YmplY3QiLCAib2wiLCAib3B0Z3JvdXAiLCAib3B0aW9uIiwgInAiLCAicGFyYW0iLCAicGxhaW50
ZXh0IiwgInByZSIsICJwcm9ncmVzcyIsICJxIiwgInJwIiwgInJ0IiwgInJ1YnkiLAoicyIsICJz
YW1wIiwgInNjcmlwdCIsICJzZWN0aW9uIiwgInNlbGVjdCIsICJzbWFsbCIsICJzb3VyY2UiLCAi
c3BhbiIsICJzdHJpa2UiLCAic3Ryb25nIiwgInN0eWxlIiwgInN1YiIsICJzdW1tYXJ5IiwgInN1
cCIsCiJ0YWJsZSIsICJ0Ym9keSIsICJ0ZCIsICJ0ZXh0YXJlYSIsICJ0Zm9vdCIsICJ0aCIsICJ0
aGVhZCIsICJ0aXRsZSIsICJ0ciIsICJ0cmFjayIsICJ0dCIsICJ1IiwgInVsIiwgInZhciIsICJ2
aWRlbyIsICJ3YnIiLCAieG1wIiBdOwoKZnVuY3Rpb24gYWRkUmVzdWx0KGNvbnRhaW5lciwgbmFt
ZSwgYW5ub3RhdGlvbikKewogICAgaWYgKGNvbnRhaW5lci5pbm5lckhUTUwubGVuZ3RoICYmICFh
bm5vdGF0aW9uKQogICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gJywgJzsKICAgIGNvbnRh
aW5lci5pbm5lckhUTUwgKz0gbmFtZTsKICAgIGlmIChhbm5vdGF0aW9uKSB7CiAgICAgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCIgKCIgKyBhbm5vdGF0
aW9uICsgIikiKSk7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoJ2JyJykpOwogICAgfQp9CgovL2VsZW1lbnRzLmxlbmd0aDsKdmFyIHRlc3QgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVzdCcpOwpmb3IgKHZhciBpID0gMDsgaSA8IGVsZW1l
bnRzLmxlbmd0aDsgaSsrKSB7CiAgICB2YXIgaW5zdGFuY2UgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KGVsZW1lbnRzW2ldKTsKICAgIHZhciBkdW1teV90ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoJ2hlbGxvLCB3b3JsZCcpOwogICAgaW5zdGFuY2UuYXBwZW5kQ2hpbGQoZHVtbXlfdGV4
dCk7IC8vIHRoaXMgbWF5IGZhaWwgZm9yIG5vbi1jb250YWluZXIgZWxlbWVudHMuCiAgICB0ZXN0
LmlubmVySFRNTCA9ICIiOwogICAgdGVzdC5hcHBlbmRDaGlsZChpbnN0YW5jZSk7CiAgICB0ZXN0
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCcgd2Via2l0JykpOwogICAgd2lu
ZG93LmdldFNlbGVjdGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKHRlc3QpOwogICAgZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoJ3JlbW92ZUZvcm1hdCcsIGZhbHNlLCBudWxsKTsKCiAgICBpZiAoIXRlc3Qu
Zmlyc3RDaGlsZCB8fCB0ZXN0LmZpcnN0Q2hpbGQgaW5zdGFuY2VvZiBUZXh0KQogICAgICAgIGFk
ZFJlc3VsdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlZCcpLCBlbGVtZW50c1tpXSkK
ICAgIGVsc2UgaWYgKHRlc3QuZmlyc3RDaGlsZCAmJiB0ZXN0LmZpcnN0Q2hpbGQubG9jYWxOYW1l
ID09IGVsZW1lbnRzW2ldCiAgICAgICAgJiYgKHRlc3QuZmlyc3RDaGlsZC5pbm5lckhUTUwgPT0g
IiIgfHwgdGVzdC5maXJzdENoaWxkLmlubmVySFRNTCA9PSAiaGVsbG8sIHdvcmxkIikpCiAgICAg
ICAgYWRkUmVzdWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVzZXJ2ZWQnKSwgZWxlbWVu
dHNbaV0pOwogICAgZWxzZQogICAgICAgIGFkZFJlc3VsdChkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgnZXhjZXB0aW9ucycpLCBlbGVtZW50c1tpXSwgdGVzdC5pbm5lckhUTUwpOwp9CmRvY3VtZW50
LmJvZHkucmVtb3ZlQ2hpbGQodGVzdCk7Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>66559</attachid>
            <date>2010-09-03 15:35:11 -0700</date>
            <delta_ts>2010-09-03 15:35:11 -0700</delta_ts>
            <desc>test elements (works on Firefox and MSIE)</desc>
            <filename>remove-format-test.html</filename>
            <type>text/html</type>
            <size>4301</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+CjxkbD4K
PGR0PlJlbW92ZWQ8L2R0Pgo8ZGQgaWQ9InJlbW92ZWQiPjwvZGQ+CjxkdD5QcmVzZXJ2ZWQ8L2R0
Pgo8ZGQgaWQ9InByZXNlcnZlZCI+PC9kZD4KPGR0PkV4Y2VwdGlvbnM8L2R0Pgo8ZGQgaWQ9ImV4
Y2VwdGlvbnMiPjwvZGQ+CjwvZGw+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCnZh
ciBlbGVtZW50cyA9IFsgIm5vc2NyaXB0IiwgImEiLCAiYWJiciIsICJhY3JvbnltIiwgImFkZHJl
c3MiLCAiYXBwbGV0IiwgImFyZWEiLCAiYXJ0aWNsZSIsICJhc2lkZSIsICJhdWRpbyIsCiJiIiwg
ImJhc2UiLCAiYmFzZWZvbnQiLCAiYmRvIiwgImJnc291bmQiLCAiYmlnIiwgImJsb2NrcXVvdGUi
LCAiYm9keSIsICJiciIsICJidXR0b24iLAoiY2FudmFzIiwgWyJ0YWJsZSIsICJjYXB0aW9uIl0s
ICJjZW50ZXIiLCAiY2l0ZSIsICJjb2RlIiwgWyJ0YWJsZSIsICJjb2wiXSwgWyJ0YWJsZSIsICJj
b2xncm91cCJdLCAiY29tbWFuZCIsCiJkYXRhZ3JpZCIsICJkYXRhbGlzdCIsICJkY2VsbCIsICJk
Y29sIiwgImRkIiwgImRlbCIsICJkZXRhaWxzIiwgImRmbiIsICJkaXIiLCAiZGl2IiwgImRsIiwg
ImRyb3ciLCAiZHQiLAoiZW0iLCAiZW1iZWQiLCAiZmllbGRzZXQiLCAiZmlnY2FwdGlvbiIsICJm
aWd1cmUiLCAiZm9udCIsICJmb290ZXIiLCAiZm9ybSIsICJmcmFtZSIsICJmcmFtZXNldCIsCiJo
MSIsICJoMiIsICJoMyIsICJoNCIsICJoNSIsICJoNiIsICJoZWFkIiwgImhlYWRlciIsICJoZ3Jv
dXAiLCAiaHIiLCAiaHRtbCIsCiJpIiwgImlmcmFtZSIsICJpbWFnZSIsICJpbWciLCAiaW5wdXQi
LCAiaW5zIiwgImlzaW5kZXgiLCAia2JkIiwgImtleWdlbiIsICJsYWJlbCIsICJsYXllciIsICJs
ZWdlbmQiLCBbInVsIiwgImxpIl0sICJsaW5rIiwgImxpc3RpbmciLAoibWFwIiwgIm1hcmsiLCAi
bWFycXVlZSIsICJtZW51IiwgIm1ldGEiLCAibWV0ZXIiLCAibmF2IiwgIm5vYnIiLCAibm9lbWJl
ZCIsICJub2ZyYW1lcyIsICJub2xheWVyIiwgIm5vc2NyaXB0IiwKIm9iamVjdCIsICJvbCIsICJv
cHRncm91cCIsICJvcHRpb24iLCAicCIsICJwYXJhbSIsICJwbGFpbnRleHQiLCAicHJlIiwgInBy
b2dyZXNzIiwgInEiLCAicnAiLCAicnQiLCAicnVieSIsCiJzIiwgInNhbXAiLCAic2NyaXB0Iiwg
InNlY3Rpb24iLCAic2VsZWN0IiwgInNtYWxsIiwgInNvdXJjZSIsICJzcGFuIiwgInN0cmlrZSIs
ICJzdHJvbmciLCAic3R5bGUiLCAic3ViIiwgInN1bW1hcnkiLCAic3VwIiwKInRhYmxlIiwgWyJ0
YWJsZSIsICJ0Ym9keSJdLCBbInRhYmxlIiwgInRkIl0sICJ0ZXh0YXJlYSIsIFsidGFibGUiLCAi
dGZvb3QiXSwgWyJ0YWJsZSIsICJ0aCJdLCBbInRhYmxlIiwgInRoZWFkIl0sCiJ0aXRsZSIsIFsi
dGFibGUiLCAidHIiXSwgInRyYWNrIiwgInR0IiwgInUiLCAidWwiLCAidmFyIiwgInZpZGVvIiwg
IndiciIsICJ4bXAiIF07CgpmdW5jdGlvbiBhZGRSZXN1bHQoY29udGFpbmVyLCBuYW1lLCBhbm5v
dGF0aW9uLCBkZXNjcmlwdGlvbikKewogICAgaWYgKGNvbnRhaW5lci5pbm5lckhUTUwubGVuZ3Ro
ICYmICFhbm5vdGF0aW9uKQogICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gJywgJzsKICAg
IGNvbnRhaW5lci5pbm5lckhUTUwgKz0gbmFtZTsKICAgIGlmIChhbm5vdGF0aW9uKQogICAgICAg
IGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICgiICsgYW5u
b3RhdGlvbiArICIpIikpOwogICAgaWYgKGRlc2NyaXB0aW9uKQogICAgICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShkZXNjcmlwdGlvbikpOwogICAgaWYg
KGFubm90YXRpb24gfHwgZGVzY3JpcHRpb24pCiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwp9CgpmdW5jdGlvbiBjb250YWlucyhub2Rl
LCBkZXNjZW5kYW50KQp7CiAgICB3aGlsZSAoZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50ICE9IG5v
ZGUgJiYgZGVzY2VuZGFudC5wYXJlbnROb2RlKQogICAgICAgIGRlc2NlbmRhbnQgPSBkZXNjZW5k
YW50LnBhcmVudE5vZGU7CiAgICByZXR1cm4gZGVzY2VuZGFudCA9PSBub2RlOwp9Cgp2YXIgdGVz
dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7CmZvciAodmFyIGkgPSAwOyBpIDwg
ZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKICAgIHZhciBlbGVtZW50TmFtZTsKICAgIHZhciBpbnN0
YW5jZSA9IG51bGw7CiAgICB2YXIgY29udGFpbmVyID0gbnVsbDsKICAgIGlmICh0eXBlb2YgZWxl
bWVudHNbaV0gPT0gJ3N0cmluZycpIHsKICAgICAgICBlbGVtZW50TmFtZSA9IGVsZW1lbnRzW2ld
OwogICAgICAgIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSkK
ICAgICAgICBjb250YWluZXIgPSBpbnN0YW5jZTsKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGVs
ZW1lbnRMaXN0ID0gZWxlbWVudHNbaV07CiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBlbGVt
ZW50TGlzdC5sZW5ndGg7IGorKykgewogICAgICAgICAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoZWxlbWVudExpc3Rbal0pOwogICAgICAgICAgICBpZiAoIWNvbnRhaW5lcikK
ICAgICAgICAgICAgICAgIGNvbnRhaW5lciA9IG5vZGU7CiAgICAgICAgICAgIGlmIChpbnN0YW5j
ZSkKICAgICAgICAgICAgICAgIGluc3RhbmNlLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICAg
ICBpbnN0YW5jZSA9IG5vZGU7CiAgICAgICAgfQogICAgICAgIGVsZW1lbnROYW1lID0gZWxlbWVu
dExpc3RbZWxlbWVudExpc3QubGVuZ3RoLTFdCiAgICB9CiAgICB2YXIgZHVtbXlfdGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCdoZWxsbywgd29ybGQnKTsKICAgIGlmIChpbnN0YW5jZSA9
PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgYWRkUmVzdWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdleGNlcHRpb25zJyksIGVsZW1lbnROYW1lLCB0ZXN0LmlubmVySFRNTCk7CiAgICAgICAgY29u
dGludWU7CiAgICB9CiAgICB0ZXN0LmlubmVySFRNTCA9ICIiOwogICAgdHJ5IHsKICAgICAgICBp
bnN0YW5jZS5hcHBlbmRDaGlsZChkdW1teV90ZXh0KTsgLy8gdGhpcyBtYXkgZmFpbCBmb3Igbm9u
LWNvbnRhaW5lciBlbGVtZW50cy4KICAgIH0gY2F0Y2ggKGVycm9yKSB7IH0KICAgIHRlc3QuYXBw
ZW5kQ2hpbGQoY29udGFpbmVyKTsKICAgIHRlc3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoJyB3ZWJraXQnKSk7CiAgICB2YXIgZWMgPSAnJwogICAgaWYgKHdpbmRvdy5nZXRT
ZWxlY3Rpb24pIHsKICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0QWxsQ2hpbGRy
ZW4odGVzdCk7CiAgICB9IGVsc2UgewogICAgICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmJvZHku
Y3JlYXRlVGV4dFJhbmdlKCk7DQogICAgICAgIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KHRlc3Qu
Zmlyc3RDaGlsZCk7DQogICAgICAgIHRyeSB7IHJhbmdlLnNlbGVjdCgpOyB9CiAgICAgICAgY2F0
Y2ggKGVycm9yKSB7IGVjICs9ICcgZmFpbGVkIHRvIHNlbGVjdCc7IH0KICAgIH0KICAgIGRvY3Vt
ZW50LmV4ZWNDb21tYW5kKCdyZW1vdmVGb3JtYXQnLCBmYWxzZSwgbnVsbCk7CgogICAgaWYgKGVj
KSB7CiAgICAgICAgYWRkUmVzdWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGNlcHRpb25z
JyksIGVsZW1lbnROYW1lLCB0ZXN0LmlubmVySFRNTCwgZWMpOwogICAgICAgIGNvbnRpbnVlOwog
ICAgfQoKICAgIGlmICghdGVzdC5maXJzdENoaWxkIHx8IHRlc3QuZmlyc3RDaGlsZC5ub2RlVHlw
ZSA9PSAzIC8qVGV4dE5vZGUqLykKICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlbW92ZWQnKSwgZWxlbWVudE5hbWUpCiAgICBlbHNlIGlmIChjb250YWlucyh0ZXN0
LCBpbnN0YW5jZSkgJiYgKGluc3RhbmNlLmlubmVySFRNTCA9PSAiIiB8fCBpbnN0YW5jZS5pbm5l
ckhUTUwgPT0gImhlbGxvLCB3b3JsZCIpKQogICAgICAgIGFkZFJlc3VsdChkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgncHJlc2VydmVkJyksIGVsZW1lbnROYW1lKTsKICAgIGVsc2UKICAgICAgICBh
ZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4Y2VwdGlvbnMnKSwgZWxlbWVudE5h
bWUsIHRlc3QuaW5uZXJIVE1MKTsKfQpkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3QpOwoK
PC9zY3JpcHQ+CjwvYm9keT4KPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>67970</attachid>
            <date>2010-09-17 16:39:05 -0700</date>
            <delta_ts>2010-09-24 14:42:56 -0700</delta_ts>
            <desc>test CSS properties</desc>
            <filename>remove-format-css.html</filename>
            <type>text/html</type>
            <size>6957</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+CjxkbD4K
PGR0PlJlbW92ZWQ8L2R0Pgo8ZGQgaWQ9InJlbW92ZWQiPjwvZGQ+CjxkdD5QcmVzZXJ2ZWQ8L2R0
Pgo8ZGQgaWQ9InByZXNlcnZlZCI+PC9kZD4KPGR0PkV4Y2VwdGlvbnM8L2R0Pgo8ZGQgaWQ9ImV4
Y2VwdGlvbnMiPjwvZGQ+CjwvZGw+CjxzY3JpcHQ+CgpmdW5jdGlvbiBhZGRSZXN1bHQoY29udGFp
bmVyLCBuYW1lLCBhbm5vdGF0aW9uKQp7CiAgICBpZiAoY29udGFpbmVyLmlubmVySFRNTC5sZW5n
dGggJiYgIWFubm90YXRpb24pCiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCArPSAnLCAnOwog
ICAgY29udGFpbmVyLmlubmVySFRNTCArPSBwcm9wZXJ0eU5hbWVGcm9tRE9NTmFtZShuYW1lKTsK
ICAgIGlmIChhbm5vdGF0aW9uKSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCIgKCIgKyBhbm5vdGF0aW9uICsgIikiKSk7CiAgICAgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogICAgfQp9
CgpmdW5jdGlvbiBwcm9wZXJ0eU5hbWVGcm9tRE9NTmFtZShET01OYW1lKSB7CiAgICByZXR1cm4g
RE9NTmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICgkMSkgeyByZXR1cm4gIi0iICsg
JDEudG9Mb3dlckNhc2UoKTsgfSk7Cn0KCnRlc3RzID0gewogICAgJzxwPmhlbGxvPC9wPic6IHsK
ICAgICAgICBjb2xvcjogJ2JsdWUnLAogICAgICAgIGRpcmVjdGlvbjogJ3J0bCcsCiAgICAgICAg
ZGlzcGxheTogJ2lubGluZScsCiAgICAgICAgZm9udEZhbWlseTogJ0FyaWFsJywKICAgICAgICBm
b250U2l6ZTogJzEycHgnLAogICAgICAgIGZvbnRTdHlsZTogJ2l0YWxpYycsCiAgICAgICAgZm9u
dFZhcmlhbnQ6ICdzbWFsbC1jYXBzJywKICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsCiAgICAg
ICAgdGV4dFJlbmRlcmluZzogJ2dlb21ldHJpY1ByZWNpc2lvbicsCiAgICAgICAgem9vbTogJzIw
MCUnLAogICAgICAgIGxpbmVIZWlnaHQ6ICcyMDAlJywKCiAgICAgICAgY291bnRlckluY3JlbWVu
dDogJ2R1bW15Y291bnQgMicsCiAgICAgICAgY291bnRlclJlc2V0OiAnZHVtbXljb3VudCcsCiAg
ICAgICAgY29udGVudDogJ2NvdW50ZXIoZHVtbXljb3VudCknLAogICAgfSwKICAgICc8cD5oZWxs
byB3b3JsZDwvcD4nOiB7CiAgICAgICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6ICdmaXhlZCcsCiAg
ICAgICAgYmFja2dyb3VuZENsaXA6ICdwYWRkaW5nLWJveCcsCiAgICAgICAgYmFja2dyb3VuZENv
bG9yOiAnZ3JlZW4nLAogICAgICAgIGJhY2tncm91bmRJbWFnZTogJ3VybCgiaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaHJvbWUvc2l0ZS9pY29uLnBuZyIpJywKICAgICAgICBiYWNrZ3JvdW5kT3Jp
Z2luOiAnYm9yZGVyLWJveCcsCiAgICAgICAgYmFja2dyb3VuZFBvc2l0aW9uOiAnMTBweCAxM3B4
JywKICAgICAgICBiYWNrZ3JvdW5kUmVwZWF0OiAncmVwZWF0LXgnLAogICAgICAgIGJhY2tncm91
bmRTaXplOiAnMTVweCcsCgogICAgICAgIGJvcmRlckJvdHRvbUNvbG9yOiAncGluaycsCiAgICAg
ICAgYm9yZGVyQm90dG9tTGVmdFJhZGl1czogJzJweCcsCiAgICAgICAgYm9yZGVyQm90dG9tUmln
aHRSYWRpdXM6ICczcHgnLAogICAgICAgIGJvcmRlckJvdHRvbVN0eWxlOiAnZG90dGVkJywKICAg
ICAgICBib3JkZXJCb3R0b21XaWR0aDogJzJweCcsCiAgICAgICAgYm9yZGVyQ29sbGFwc2U6ICdj
b2xsYXBzZScsCiAgICAgICAgYm9yZGVyQ29sb3I6ICd5ZWxsb3cnLAogICAgICAgIGJvcmRlckxl
ZnRDb2xvcjogJ2dyYXknLAogICAgICAgIGJvcmRlckxlZnRTdHlsZTogJ2RvdHRlZCcsCiAgICAg
ICAgYm9yZGVyTGVmdFdpZHRoOiAnNHB4JywKICAgICAgICBib3JkZXJSYWRpdXM6ICcxN3B4JywK
ICAgICAgICBib3JkZXJSaWdodENvbG9yOiAnYnJvd24nLAogICAgICAgIGJvcmRlclJpZ2h0U3R5
bGU6ICdzb2xpZCcsCiAgICAgICAgYm9yZGVyUmlnaHRXaWR0aDogJzhlbScsCiAgICAgICAgYm9y
ZGVyU3BhY2luZzogJzlweCAxMXB4JywKICAgICAgICBib3JkZXJXaWR0aDogJzE2cHgnLAoKICAg
ICAgICBmbG9hdDogJ2xlZnQnLAogICAgICAgIGNsZWFyOiAnbGVmdCcsCgogICAgICAgIHBvc2l0
aW9uOiAnYWJzb2x1dGUnLAogICAgICAgIHJpZ2h0OiAnMC44aW4nLAogICAgICAgIGJvdHRvbTog
JzAuMTFpbicsCiAgICAgICAgekluZGV4OiAnNTAwJywKCiAgICAgICAgbWFyZ2luQm90dG9tOiAn
MC4xMmNtJywKICAgICAgICBtYXJnaW5MZWZ0OiAnMC4xM2NtJywKICAgICAgICBtYXJnaW5SaWdo
dDogJzAuMTRjbScsCiAgICAgICAgbWFyZ2luVG9wOiAnMC4xNWNtJywKICAgICAgICBtYXhIZWln
aHQ6ICcyMXB4JywKICAgICAgICBtYXhXaWR0aDogJzI2cHgnLAogICAgICAgIG1pbkhlaWdodDog
JzI5cHgnLAogICAgICAgIG1pbldpZHRoOiAnMTlweCcsCiAgICAgICAgb3BhY2l0eTogJzAuNycs
CiAgICAgICAgb3JwaGFuczogJzMnLAogICAgICAgIG91dGxpbmVDb2xvcjogJ29yYW5nZScsCiAg
ICAgICAgb3V0bGluZU9mZnNldDogJzJweCcsCiAgICAgICAgb3V0bGluZVN0eWxlOiAnc29saWQn
LAogICAgICAgIG91dGxpbmVXaWR0aDogJzAuM2NtJywKCiAgICAgICAgcGFkZGluZ0JvdHRvbTog
JzAuMTZjbScsCiAgICAgICAgcGFkZGluZ0xlZnQ6ICcwLjE2ZW0nLAogICAgICAgIHBhZGRpbmdS
aWdodDogJzAuMTZpbicsCiAgICAgICAgcGFkZGluZ1RvcDogJzAuMTZwdCcsCgogICAgICAgIHBh
Z2VCcmVha0FmdGVyOiAnbGVmdCcsCiAgICAgICAgcGFnZUJyZWFrQmVmb3JlOiAncmlnaHQnLAog
ICAgICAgIHBhZ2VCcmVha0luc2lkZTogJ2F2b2lkJywKCiAgICAgICAgcG9pbnRlckV2ZW50czog
J25vbmUnLAogICAgICAgIHJlc2l6ZTogJ2hvcml6b250YWwnLAogICAgICAgIHNpemU6ICcxMGlu
IDVpbicsCiAgICB9LAogICAgJzxwPmhlbGxvPC9wPic6IHsKICAgICAgICAvLyBGb2xsb3dpbmcg
cHJvcGVydGllcyBjb25mbGljdCB3aXRoIGJvcmRlci1sZWZ0KiwgYm9yZGVyLXJpZ2h0KiBldGMu
Li4KICAgICAgICBib3JkZXJTdHlsZTogJ2RvdHRlZCcsCiAgICAgICAgYm9yZGVyVG9wQ29sb3I6
ICdsaW1lJywKICAgICAgICBib3JkZXJUb3BMZWZ0UmFkaXVzOiAnNmV4JywKICAgICAgICBib3Jk
ZXJUb3BSaWdodFJhZGl1czogJzAuNWluJywKICAgICAgICBib3JkZXJUb3BTdHlsZTogJ2RvdHRl
ZCcsCiAgICAgICAgYm9yZGVyVG9wV2lkdGg6ICcxcHgnLAogICAgfSwKICAgICc8dGFibGU+PGNh
cHRpb24gaWQ9InN0eWxlZEVsZW1lbnQiPmhlbGxvPC9jYXB0aW9uPjwvdGFibGU+JzogewogICAg
ICAgIGNhcHRpb25TaWRlOiAnYm90dG9tJywKICAgIH0sCiAgICAnPHRhYmxlPjx0cj48dGQ+aGVs
bG88L3RkPjwvdHI+PC90YWJsZT4nOiB7CiAgICAgICAgZW1wdHlDZWxsczogJ2hpZGUnLAogICAg
ICAgIHRhYmxlTGF5b3V0OiAnZml4ZWQnLAogICAgfSwKICAgICc8aW1nIHNyYz0iaHR0cDovL3Ry
YWMud2Via2l0Lm9yZy9jaHJvbWUvc2l0ZS9pY29uLnBuZyI+JzogewogICAgICAgIHBvc2l0aW9u
OiAnYWJzb2x1dGUnLAogICAgICAgIGxlZnQ6ICcxNHB4JywKICAgICAgICB0b3A6ICcxN3B4JywK
ICAgICAgICBjbGlwOiAncmVjdCgxcHgsIDFweCAyMHB4LCAyMHB4KScsCiAgICB9LAogICAgJzxv
bD48bGk+aGVsbG88L2xpPjwvb2w+JzogewogICAgICAgIGxpc3RTdHlsZVBvc2l0aW9uOiAnaW5z
aWRlJywKICAgICAgICBsaXN0U3R5bGVUeXBlOiAnbG93ZXItZ3JlZWsnLAogICAgICAgIGxpc3RT
dHlsZUltYWdlOiAndXJsKCJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24u
cG5nIiknLAogICAgfSwKICAgICc8cD5oZWxsbyB3b3JsZCBXZWJLaXQgcm9ja3MgYmVjYXVzZSBv
ZiB5b3UuPC9wPic6IHsKICAgICAgICB3aWR0aDogJzEwcHgnLAogICAgICAgIGhlaWdodDogJzEw
cHgnLAogICAgICAgIG92ZXJmbG93OiAnc2Nyb2xsJywKICAgIH0sCiAgICAnPHA+aGVsbG8gd29y
bGQgV2ViS2l0IHJvY2tzIGJlY2F1c2Ugb2YgeW91LjwvcD4nOiB7CiAgICAgICAgd2lkdGg6ICcx
MHB4JywKICAgICAgICBoZWlnaHQ6ICcxMHB4JywKICAgICAgICBvdmVyZmxvd1g6ICdzY3JvbGwn
LAogICAgfSwKICAgICc8cD5oZWxsbyB3b3JsZCBXZWJLaXQgcm9ja3MgYmVjYXVzZSBvZiB5b3Uu
PC9wPic6IHsKICAgICAgICB3aWR0aDogJzEwcHgnLAogICAgICAgIGhlaWdodDogJzEwcHgnLAog
ICAgICAgIG92ZXJmbG93WTogJ3Njcm9sbCcsCiAgICB9LAogICAgJzxwPmhlbGxvPC9wPic6IHsK
ICAgICAgICBxdW90ZXM6ICInWycgJ10nICcoJyAnKSciLAogICAgfSwKICAgICc8cD5oZWxsbzwv
cD4nOiB7CiAgICAgICAgY3Vyc29yOiAnbW92ZScsCiAgICAgICAgZm9udFN0cmV0Y2g6ICdleHBh
bmRlZCcsCiAgICAgICAgaGVpZ2h0OiAnMTBlbScsCiAgICAgICAgbGV0dGVyU3BhY2luZzogJzJl
eCcsCiAgICB9LAogICAgJzxwPmhlbGxvPC9wPic6IHsKICAgICAgICBzcmM6ICdsb2NhbChTVElY
R2VuZXJhbCksIHVybCgvc3RpeGZvbnRzL1NUSVhHZW5lcmFsLm90ZiknLAogICAgICAgIHVuaWNv
ZGVSYW5nZTogJ1UrMDAwLTQ5RicsCiAgICB9LAogICAgJzxwPmhlbGxvPC9wPic6IHsKICAgICAg
ICB0ZXh0QWxpZ246ICdyaWdodCcsCiAgICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUn
LAogICAgICAgIHRleHRJbmRlbnQ6ICcyLjVleCcsCiAgICB9LAogICAgJzxwPmhlbGxvPC9wPic6
IHsKICAgICAgICB0ZXh0TGluZVRocm91Z2hDb2xvcjogJ25hdnknLAogICAgICAgIHRleHRMaW5l
VGhyb3VnaE5vZGU6ICdza2lwLXdoaXRlLXNwYWNlJywKICAgICAgICB0ZXh0TGluZVRocm91Z2hT
dHlsZTogJ2RvdC1kYXNoJywKICAgICAgICB0ZXh0TGluZVRocm91Z2hXaWR0aDogJ3RoaWNrJywK
ICAgICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsCiAgICAgICAgdGV4dE92ZXJsaW5lQ29s
b3I6ICd0YW4nLAogICAgICAgIHRleHRPdmVybGluZU1vZGU6ICdjb250aW51b3VzJywKICAgICAg
ICB0ZXh0T3ZlcmxpbmVTdHlsZTogJ3dhdmUnLAogICAgICAgIHRleHRPdmVybGluZVdpZHRoOiAn
dGhpbicsCiAgICAgICAgdGV4dFNoYWRvdzogJ3Zpb2xldCA1cHggLTNweCAycHgnLAogICAgICAg
IHRleHRUcmFuc2Zvcm06ICdsb3dlcmNhc2UnLAogICAgICAgIHRleHRVbmRlcmxpbmVDb2xvcjog
J2xhdmVuZGVyJywKICAgICAgICB0ZXh0VW5kZXJsaW5lTW9kZTogJ3NraXAtd2hpdGUtc3BhY2Un
LAogICAgICAgIHRleHRVbmRlcmxpbmVTdHlsZTogJ2Rhc2hlZCcsCiAgICAgICAgdGV4dFVuZGVy
bGluZVdpZHRoOiAnMnB4JywKICAgICAgICB1bmljb2RlQmlkaTogJ2VtYmVkJywKICAgIH0sCiAg
ICAnPHA+aGVsbG88L3A+JzogewogICAgICAgIHZlcnRpY2FsQWxpZ246ICd0ZXh0LWJvdHRvbScs
CiAgICAgICAgdmlzaWJpbGl0eTogJ2hpZGRlbicsCiAgICAgICAgd2hpdGVTcGFjZTogJ3ByZScs
CiAgICAgICAgd2lkb3dzOiAnNScsCiAgICAgICAgd2lkdGg6ICcyMHB4JywKICAgICAgICB3b3Jk
QnJlYWs6ICdrZWVwLWFsbCcsCiAgICAgICAgd29yZFNwYWNpbmc6ICc1ZXgnLAogICAgICAgIHdv
cmRXcmFwOiAnYnJlYWstd29yZCcsCiAgICB9Cn07Cgp2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCd0ZXN0Jyk7Cgpmb3IgKGNvbnRlbnQgaW4gdGVzdHMpIHsKICAgIHRlc3QuaW5u
ZXJIVE1MID0gY29udGVudDsKICAgIHZhciB0ZXN0Q29udGVudCA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdzdHlsZWRFbGVtZW50Jyk7CiAgICBpZiAoIXRlc3RDb250ZW50KQogICAgICAgIHRl
c3RDb250ZW50ID0gdGVzdC5maXJzdENoaWxkOwoKICAgIC8vIEFwcGx5IHN0eWxlcwogICAgZm9y
IChwcm9wZXJ0eSBpbiB0ZXN0c1tjb250ZW50XSkKICAgICAgICB0ZXN0Q29udGVudC5zdHlsZVtw
cm9wZXJ0eV0gPSB0ZXN0c1tjb250ZW50XVtwcm9wZXJ0eV07CgogICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNlbGVjdEFsbENoaWxkcmVuKHRlc3QpOwoKICAgIC8vIEFmdGVyIHdlIG1hZGUgc3Vy
ZSBVQSB1cGRhdGVkIGxheW91dCwgb2J0YWluIHRoZSBhY3R1YWwgcHJvcGVydHkgdmFsdWVzLgog
ICAgdmFyIGFjdHVhbFZhbHVlcyA9IHt9OwogICAgZm9yIChwcm9wZXJ0eSBpbiB0ZXN0c1tjb250
ZW50XSkgewogICAgICAgIGlmICh0ZXN0Q29udGVudC5zdHlsZVtwcm9wZXJ0eV0pCiAgICAgICAg
ICAgIGFjdHVhbFZhbHVlc1twcm9wZXJ0eV0gPSB0ZXN0Q29udGVudC5zdHlsZVtwcm9wZXJ0eV07
CiAgICAgICAgZWxzZQogICAgICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2V4Y2VwdGlvbnMnKSwgcHJvcGVydHksICdub3Qgc3VwcG9ydGVkJyk7CiAgICB9CgogICAg
Ly8gRXhlY3V0ZSByZW1vdmVGb3JtYXQuCiAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnUmVtb3Zl
Rm9ybWF0JywgZmFsc2UsIG51bGwpOwoKICAgIC8vIENoZWNrIG5ldyB2YWx1ZXMuCiAgICBmb3Ig
KHByb3BlcnR5IGluIGFjdHVhbFZhbHVlcykgewogICAgICAgIGlmICh0ZXN0Q29udGVudC5zdHls
ZVtwcm9wZXJ0eV0gPT0gYWN0dWFsVmFsdWVzW3Byb3BlcnR5XSkKICAgICAgICAgICAgYWRkUmVz
dWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdwcmVzZXJ2ZWQnKSwgcHJvcGVydHkpOwogICAg
ICAgIGVsc2UgaWYgKCF0ZXN0Q29udGVudC5zdHlsZVtwcm9wZXJ0eV0pCiAgICAgICAgICAgIGFk
ZFJlc3VsdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVtb3ZlZCcpLCBwcm9wZXJ0eSk7CiAg
ICAgICAgZWxzZQogICAgICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4Y2VwdGlvbnMnKSwgcHJvcGVydHkpOwogICAgfQp9Cgo8L3NjcmlwdD4KPC9ib2R5Pgo8L2h0
bWw+
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>68752</attachid>
            <date>2010-09-24 14:42:56 -0700</date>
            <delta_ts>2010-09-24 14:42:56 -0700</delta_ts>
            <desc>test CSS properties (MSIE / Firefox)</desc>
            <filename>css-test.html</filename>
            <type>text/html</type>
            <size>7202</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">PGh0bWw+Cjxib2R5Pgo8ZGl2IGlkPSJ0ZXN0IiBjb250ZW50ZWRpdGFibGU+PC9kaXY+CjxkbD4K
PGR0PlJlbW92ZWQ8L2R0Pgo8ZGQgaWQ9InJlbW92ZWQiPjwvZGQ+CjxkdD5QcmVzZXJ2ZWQ8L2R0
Pgo8ZGQgaWQ9InByZXNlcnZlZCI+PC9kZD4KPGR0PkV4Y2VwdGlvbnM8L2R0Pgo8ZGQgaWQ9ImV4
Y2VwdGlvbnMiPjwvZGQ+CjwvZGw+CjxzY3JpcHQ+CgpmdW5jdGlvbiBhZGRSZXN1bHQoY29udGFp
bmVyLCBuYW1lLCBhbm5vdGF0aW9uKQp7CiAgICBpZiAoY29udGFpbmVyLmlubmVySFRNTC5sZW5n
dGggJiYgIWFubm90YXRpb24pCiAgICAgICAgY29udGFpbmVyLmlubmVySFRNTCArPSAnLCAnOwog
ICAgY29udGFpbmVyLmlubmVySFRNTCArPSBwcm9wZXJ0eU5hbWVGcm9tRE9NTmFtZShuYW1lKTsK
ICAgIGlmIChhbm5vdGF0aW9uKSB7CiAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZVRleHROb2RlKCIgKCIgKyBhbm5vdGF0aW9uICsgIikiKSk7CiAgICAgICAgY29u
dGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JyJykpOwogICAgfQp9
CgpmdW5jdGlvbiBwcm9wZXJ0eU5hbWVGcm9tRE9NTmFtZShET01OYW1lKSB7CiAgICByZXR1cm4g
RE9NTmFtZS5yZXBsYWNlKC8oW0EtWl0pL2csIGZ1bmN0aW9uICgkMSkgeyByZXR1cm4gIi0iICsg
JDEudG9Mb3dlckNhc2UoKTsgfSk7Cn0KCnRlc3RzID0gewogICAgJzxwPmhlbGxvPC9wPic6IHsK
ICAgICAgICBjb2xvcjogJ2JsdWUnLAogICAgICAgIGRpcmVjdGlvbjogJ3J0bCcsCiAgICAgICAg
ZGlzcGxheTogJ2lubGluZScsCiAgICAgICAgZm9udEZhbWlseTogJ0FyaWFsJywKICAgICAgICBm
b250U2l6ZTogJzEycHgnLAogICAgICAgIGZvbnRTdHlsZTogJ2l0YWxpYycsCiAgICAgICAgZm9u
dFZhcmlhbnQ6ICdzbWFsbC1jYXBzJywKICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsCiAgICAg
ICAgdGV4dFJlbmRlcmluZzogJ2dlb21ldHJpY1ByZWNpc2lvbicsCiAgICAgICAgem9vbTogJzIw
MCUnLAogICAgICAgIGxpbmVIZWlnaHQ6ICcyMDAlJywKCiAgICAgICAgY291bnRlckluY3JlbWVu
dDogJ2R1bW15Y291bnQgMicsCiAgICAgICAgY291bnRlclJlc2V0OiAnZHVtbXljb3VudCcsCiAg
ICAgICAgY29udGVudDogJ2NvdW50ZXIoZHVtbXljb3VudCknCiAgICB9LAogICAgJzxwPmhlbGxv
IHdvcmxkPC9wPic6IHsKICAgICAgICBiYWNrZ3JvdW5kQXR0YWNobWVudDogJ2ZpeGVkJywKICAg
ICAgICBiYWNrZ3JvdW5kQ2xpcDogJ3BhZGRpbmctYm94JywKICAgICAgICBiYWNrZ3JvdW5kQ29s
b3I6ICdncmVlbicsCiAgICAgICAgYmFja2dyb3VuZEltYWdlOiAndXJsKCJodHRwOi8vdHJhYy53
ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nIiknLAogICAgICAgIGJhY2tncm91bmRPcmln
aW46ICdib3JkZXItYm94JywKICAgICAgICBiYWNrZ3JvdW5kUG9zaXRpb246ICcxMHB4IDEzcHgn
LAogICAgICAgIGJhY2tncm91bmRSZXBlYXQ6ICdyZXBlYXQteCcsCiAgICAgICAgYmFja2dyb3Vu
ZFNpemU6ICcxNXB4JywKCiAgICAgICAgYm9yZGVyQm90dG9tQ29sb3I6ICdwaW5rJywKICAgICAg
ICBib3JkZXJCb3R0b21MZWZ0UmFkaXVzOiAnMnB4JywKICAgICAgICBib3JkZXJCb3R0b21SaWdo
dFJhZGl1czogJzNweCcsCiAgICAgICAgYm9yZGVyQm90dG9tU3R5bGU6ICdkb3R0ZWQnLAogICAg
ICAgIGJvcmRlckJvdHRvbVdpZHRoOiAnMnB4JywKICAgICAgICBib3JkZXJDb2xsYXBzZTogJ2Nv
bGxhcHNlJywKICAgICAgICBib3JkZXJDb2xvcjogJ3llbGxvdycsCiAgICAgICAgYm9yZGVyTGVm
dENvbG9yOiAnZ3JheScsCiAgICAgICAgYm9yZGVyTGVmdFN0eWxlOiAnZG90dGVkJywKICAgICAg
ICBib3JkZXJMZWZ0V2lkdGg6ICc0cHgnLAogICAgICAgIGJvcmRlclJhZGl1czogJzE3cHgnLAog
ICAgICAgIGJvcmRlclJpZ2h0Q29sb3I6ICdicm93bicsCiAgICAgICAgYm9yZGVyUmlnaHRTdHls
ZTogJ3NvbGlkJywKICAgICAgICBib3JkZXJSaWdodFdpZHRoOiAnOGVtJywKICAgICAgICBib3Jk
ZXJTcGFjaW5nOiAnOXB4IDExcHgnLAogICAgICAgIGJvcmRlcldpZHRoOiAnMTZweCcsCgogICAg
ICAgIGZsb2F0OiAnbGVmdCcsCiAgICAgICAgY2xlYXI6ICdsZWZ0JywKCiAgICAgICAgcG9zaXRp
b246ICdhYnNvbHV0ZScsCiAgICAgICAgcmlnaHQ6ICcwLjhpbicsCiAgICAgICAgYm90dG9tOiAn
MC4xMWluJywKICAgICAgICB6SW5kZXg6ICc1MDAnLAoKICAgICAgICBtYXJnaW5Cb3R0b206ICcw
LjEyY20nLAogICAgICAgIG1hcmdpbkxlZnQ6ICcwLjEzY20nLAogICAgICAgIG1hcmdpblJpZ2h0
OiAnMC4xNGNtJywKICAgICAgICBtYXJnaW5Ub3A6ICcwLjE1Y20nLAogICAgICAgIG1heEhlaWdo
dDogJzIxcHgnLAogICAgICAgIG1heFdpZHRoOiAnMjZweCcsCiAgICAgICAgbWluSGVpZ2h0OiAn
MjlweCcsCiAgICAgICAgbWluV2lkdGg6ICcxOXB4JywKICAgICAgICBvcGFjaXR5OiAnMC43JywK
ICAgICAgICBvcnBoYW5zOiAnMycsCiAgICAgICAgb3V0bGluZUNvbG9yOiAnb3JhbmdlJywKICAg
ICAgICBvdXRsaW5lT2Zmc2V0OiAnMnB4JywKICAgICAgICBvdXRsaW5lU3R5bGU6ICdzb2xpZCcs
CiAgICAgICAgb3V0bGluZVdpZHRoOiAnMC4zY20nLAoKICAgICAgICBwYWRkaW5nQm90dG9tOiAn
MC4xNmNtJywKICAgICAgICBwYWRkaW5nTGVmdDogJzAuMTZlbScsCiAgICAgICAgcGFkZGluZ1Jp
Z2h0OiAnMC4xNmluJywKICAgICAgICBwYWRkaW5nVG9wOiAnMC4xNnB0JywKCiAgICAgICAgcGFn
ZUJyZWFrQWZ0ZXI6ICdsZWZ0JywKICAgICAgICBwYWdlQnJlYWtCZWZvcmU6ICdyaWdodCcsCiAg
ICAgICAgcGFnZUJyZWFrSW5zaWRlOiAnYXZvaWQnLAoKICAgICAgICBwb2ludGVyRXZlbnRzOiAn
bm9uZScsCiAgICAgICAgcmVzaXplOiAnaG9yaXpvbnRhbCcsCiAgICAgICAgc2l6ZTogJzEwaW4g
NWluJwogICAgfSwKICAgICc8cD5oZWxsbzwvcD4nOiB7CiAgICAgICAgLy8gRm9sbG93aW5nIHBy
b3BlcnRpZXMgY29uZmxpY3Qgd2l0aCBib3JkZXItbGVmdCosIGJvcmRlci1yaWdodCogZXRjLi4u
CiAgICAgICAgYm9yZGVyU3R5bGU6ICdkb3R0ZWQnLAogICAgICAgIGJvcmRlclRvcENvbG9yOiAn
bGltZScsCiAgICAgICAgYm9yZGVyVG9wTGVmdFJhZGl1czogJzZleCcsCiAgICAgICAgYm9yZGVy
VG9wUmlnaHRSYWRpdXM6ICcwLjVpbicsCiAgICAgICAgYm9yZGVyVG9wU3R5bGU6ICdkb3R0ZWQn
LAogICAgICAgIGJvcmRlclRvcFdpZHRoOiAnMXB4JwogICAgfSwKICAgICc8dGFibGU+PGNhcHRp
b24gaWQ9InN0eWxlZEVsZW1lbnQiPmhlbGxvPC9jYXB0aW9uPjwvdGFibGU+JzogewogICAgICAg
IGNhcHRpb25TaWRlOiAnYm90dG9tJwogICAgfSwKICAgICc8dGFibGU+PHRyPjx0ZD5oZWxsbzwv
dGQ+PC90cj48L3RhYmxlPic6IHsKICAgICAgICBlbXB0eUNlbGxzOiAnaGlkZScsCiAgICAgICAg
dGFibGVMYXlvdXQ6ICdmaXhlZCcKICAgIH0sCiAgICAnPGltZyBzcmM9Imh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hyb21lL3NpdGUvaWNvbi5wbmciPic6IHsKICAgICAgICBwb3NpdGlvbjogJ2Fi
c29sdXRlJywKICAgICAgICBsZWZ0OiAnMTRweCcsCiAgICAgICAgdG9wOiAnMTdweCcsCiAgICAg
ICAgY2xpcDogJ3JlY3QoMXB4LCAxcHggMjBweCwgMjBweCknCiAgICB9LAogICAgJzxvbD48bGk+
aGVsbG88L2xpPjwvb2w+JzogewogICAgICAgIGxpc3RTdHlsZVBvc2l0aW9uOiAnaW5zaWRlJywK
ICAgICAgICBsaXN0U3R5bGVUeXBlOiAnbG93ZXItZ3JlZWsnLAogICAgICAgIGxpc3RTdHlsZUlt
YWdlOiAndXJsKCJodHRwOi8vdHJhYy53ZWJraXQub3JnL2Nocm9tZS9zaXRlL2ljb24ucG5nIikn
CiAgICB9LAogICAgJzxwPmhlbGxvIHdvcmxkIFdlYktpdCByb2NrcyBiZWNhdXNlIG9mIHlvdS48
L3A+JzogewogICAgICAgIHdpZHRoOiAnMTBweCcsCiAgICAgICAgaGVpZ2h0OiAnMTBweCcsCiAg
ICAgICAgb3ZlcmZsb3c6ICdzY3JvbGwnCiAgICB9LAogICAgJzxwPmhlbGxvIHdvcmxkIFdlYktp
dCByb2NrcyBiZWNhdXNlIG9mIHlvdS48L3A+JzogewogICAgICAgIHdpZHRoOiAnMTBweCcsCiAg
ICAgICAgaGVpZ2h0OiAnMTBweCcsCiAgICAgICAgb3ZlcmZsb3dYOiAnc2Nyb2xsJwogICAgfSwK
ICAgICc8cD5oZWxsbyB3b3JsZCBXZWJLaXQgcm9ja3MgYmVjYXVzZSBvZiB5b3UuPC9wPic6IHsK
ICAgICAgICB3aWR0aDogJzEwcHgnLAogICAgICAgIGhlaWdodDogJzEwcHgnLAogICAgICAgIG92
ZXJmbG93WTogJ3Njcm9sbCcKICAgIH0sCiAgICAnPHA+aGVsbG88L3A+JzogewogICAgICAgIHF1
b3RlczogIidbJyAnXScgJygnICcpJyIKICAgIH0sCiAgICAnPHA+aGVsbG88L3A+JzogewogICAg
ICAgIGN1cnNvcjogJ21vdmUnLAogICAgICAgIGZvbnRTdHJldGNoOiAnZXhwYW5kZWQnLAogICAg
ICAgIGhlaWdodDogJzEwZW0nLAogICAgICAgIGxldHRlclNwYWNpbmc6ICcyZXgnCiAgICB9LAog
ICAgJzxwPmhlbGxvPC9wPic6IHsKICAgICAgICBzcmM6ICdsb2NhbChTVElYR2VuZXJhbCksIHVy
bCgvc3RpeGZvbnRzL1NUSVhHZW5lcmFsLm90ZiknLAogICAgICAgIHVuaWNvZGVSYW5nZTogJ1Ur
MDAwLTQ5RicKICAgIH0sCiAgICAnPHA+aGVsbG88L3A+JzogewogICAgICAgIHRleHRBbGlnbjog
J3JpZ2h0JywKICAgICAgICB0ZXh0RGVjb3JhdGlvbjogJ3VuZGVybGluZScsCiAgICAgICAgdGV4
dEluZGVudDogJzIuNWV4JwogICAgfSwKICAgICc8cD5oZWxsbzwvcD4nOiB7CiAgICAgICAgdGV4
dExpbmVUaHJvdWdoQ29sb3I6ICduYXZ5JywKICAgICAgICB0ZXh0TGluZVRocm91Z2hOb2RlOiAn
c2tpcC13aGl0ZS1zcGFjZScsCiAgICAgICAgdGV4dExpbmVUaHJvdWdoU3R5bGU6ICdkb3QtZGFz
aCcsCiAgICAgICAgdGV4dExpbmVUaHJvdWdoV2lkdGg6ICd0aGljaycsCiAgICAgICAgdGV4dE92
ZXJmbG93OiAnZWxsaXBzaXMnLAogICAgICAgIHRleHRPdmVybGluZUNvbG9yOiAndGFuJywKICAg
ICAgICB0ZXh0T3ZlcmxpbmVNb2RlOiAnY29udGludW91cycsCiAgICAgICAgdGV4dE92ZXJsaW5l
U3R5bGU6ICd3YXZlJywKICAgICAgICB0ZXh0T3ZlcmxpbmVXaWR0aDogJ3RoaW4nLAogICAgICAg
IHRleHRTaGFkb3c6ICd2aW9sZXQgNXB4IC0zcHggMnB4JywKICAgICAgICB0ZXh0VHJhbnNmb3Jt
OiAnbG93ZXJjYXNlJywKICAgICAgICB0ZXh0VW5kZXJsaW5lQ29sb3I6ICdsYXZlbmRlcicsCiAg
ICAgICAgdGV4dFVuZGVybGluZU1vZGU6ICdza2lwLXdoaXRlLXNwYWNlJywKICAgICAgICB0ZXh0
VW5kZXJsaW5lU3R5bGU6ICdkYXNoZWQnLAogICAgICAgIHRleHRVbmRlcmxpbmVXaWR0aDogJzJw
eCcsCiAgICAgICAgdW5pY29kZUJpZGk6ICdlbWJlZCcKICAgIH0sCiAgICAnPHA+aGVsbG88L3A+
JzogewogICAgICAgIHZlcnRpY2FsQWxpZ246ICd0ZXh0LWJvdHRvbScsCiAgICAgICAgdmlzaWJp
bGl0eTogJ2hpZGRlbicsCiAgICAgICAgd2hpdGVTcGFjZTogJ3ByZScsCiAgICAgICAgd2lkb3dz
OiAnNScsCiAgICAgICAgd2lkdGg6ICcyMHB4JywKICAgICAgICB3b3JkQnJlYWs6ICdrZWVwLWFs
bCcsCiAgICAgICAgd29yZFNwYWNpbmc6ICc1ZXgnLAogICAgICAgIHdvcmRXcmFwOiAnYnJlYWst
d29yZCcKICAgIH0KfTsKCnZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3Qn
KTsKCmZvciAoY29udGVudCBpbiB0ZXN0cykgewogICAgdGVzdC5pbm5lckhUTUwgPSBjb250ZW50
OwogICAgdmFyIHRlc3RDb250ZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZEVs
ZW1lbnQnKTsKICAgIGlmICghdGVzdENvbnRlbnQpCiAgICAgICAgdGVzdENvbnRlbnQgPSB0ZXN0
LmZpcnN0Q2hpbGQ7CgogICAgLy8gQXBwbHkgc3R5bGVzCiAgICBmb3IgKHByb3BlcnR5IGluIHRl
c3RzW2NvbnRlbnRdKQogICAgICAgIHRlc3RDb250ZW50LnN0eWxlW3Byb3BlcnR5XSA9IHRlc3Rz
W2NvbnRlbnRdW3Byb3BlcnR5XTsKCiAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbikgewogICAg
ICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbih0ZXN0KTsKICAgIH0g
ZWxzZSB7CiAgICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuYm9keS5jcmVhdGVUZXh0UmFuZ2Uo
KTsKICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dCh0ZXN0LmZpcnN0Q2hpbGQpOwogICAg
ICAgIHRyeSB7CiAgICAgICAgICAgcmFuZ2Uuc2VsZWN0KCk7CiAgICAgICAgfQogICAgICAgIGNh
dGNoIChlcnJvcikgeyBlYyArPSAnIGZhaWxlZCB0byBzZWxlY3QnOyB9CiAgICB9CgogICAgLy8g
QWZ0ZXIgd2UgbWFkZSBzdXJlIFVBIHVwZGF0ZWQgbGF5b3V0LCBvYnRhaW4gdGhlIGFjdHVhbCBw
cm9wZXJ0eSB2YWx1ZXMuCiAgICB2YXIgYWN0dWFsVmFsdWVzID0ge307CiAgICBmb3IgKHByb3Bl
cnR5IGluIHRlc3RzW2NvbnRlbnRdKSB7CiAgICAgICAgaWYgKHRlc3RDb250ZW50LnN0eWxlW3By
b3BlcnR5XSkKICAgICAgICAgICAgYWN0dWFsVmFsdWVzW3Byb3BlcnR5XSA9IHRlc3RDb250ZW50
LnN0eWxlW3Byb3BlcnR5XTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGFkZFJlc3VsdChkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhjZXB0aW9ucycpLCBwcm9wZXJ0eSwgJ25vdCBzdXBwb3J0
ZWQnKTsKICAgIH0KCiAgICAvLyBFeGVjdXRlIHJlbW92ZUZvcm1hdC4KICAgIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCdSZW1vdmVGb3JtYXQnLCBmYWxzZSwgbnVsbCk7CgogICAgLy8gQ2hlY2sgbmV3
IHZhbHVlcy4KICAgIGZvciAocHJvcGVydHkgaW4gYWN0dWFsVmFsdWVzKSB7CiAgICAgICAgaWYg
KHRlc3RDb250ZW50LnN0eWxlW3Byb3BlcnR5XSA9PSBhY3R1YWxWYWx1ZXNbcHJvcGVydHldKQog
ICAgICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3ByZXNlcnZlZCcp
LCBwcm9wZXJ0eSk7CiAgICAgICAgZWxzZSBpZiAoIXRlc3RDb250ZW50LnN0eWxlW3Byb3BlcnR5
XSkKICAgICAgICAgICAgYWRkUmVzdWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZW1vdmVk
JyksIHByb3BlcnR5KTsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGFkZFJlc3VsdChkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZXhjZXB0aW9ucycpLCBwcm9wZXJ0eSk7CiAgICB9Cn0KCjwvc2Ny
aXB0Pgo8L2JvZHk+CjwvaHRtbD4=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70999</attachid>
            <date>2010-10-17 22:33:08 -0700</date>
            <delta_ts>2010-10-19 01:01:37 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>wip43017</filename>
            <type>text/plain</type>
            <size>2998</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5kLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDY5
OTE3KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNiwxNiArMjYsMTkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJSZW1vdmVGb3JtYXRDb21tYW5kLmgiCiAKKyNpbmNsdWRlICJBcHBseVN0eWxlQ29tbWFuZC5o
IgogI2luY2x1ZGUgIkNTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5o
IgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSFRN
TEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJWaXNpYmxlU2Vs
ZWN0aW9uLmgiCiAjaW5jbHVkZSAiU2VsZWN0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlR5cGluZ0NvbW1hbmQuaCIKLSNpbmNsdWRlICJBcHBs
eVN0eWxlQ29tbWFuZC5oIgorI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtNDYsNiArNDksMTEgQEAKIHsKIH0KIAorY29uc3QgUXVhbGlmaWVkTmFt
ZSogZWxlbWVudHNUb1JlbW92ZVtdID0geworICAgICZhY3JvbnltVGFnLCAmYlRhZywgJmJkb1Rh
ZywgJmJpZ1RhZywgJmNpdGVUYWcsICZjb2RlVGFnLCAmZGZuVGFnLCAmZW1UYWcsICZmb250VGFn
LCAmaVRhZywgJmluc1RhZywKKyAgICAma2JkVGFnLCAmbm9iclRhZywgJnFUYWcsICZzVGFnLCAm
c2FtcFRhZywgJnNtYWxsVGFnLCAmc3RyaWtlVGFnLCAmc3Ryb25nVGFnLCAmc3ViVGFnLCAmc3Vw
VGFnLCAmdHRUYWcsICZ1VGFnLCAmdmFyVGFnCit9OworCiB2b2lkIFJlbW92ZUZvcm1hdENvbW1h
bmQ6OmRvQXBwbHkoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7
CkBAIC01MywzNCArNjEsMjAgQEAKICAgICBpZiAoIWZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0
aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5nZSgpKQogICAgICAgICByZXR1cm47CiAKLSAg
ICAvLyBNYWtlIGEgcGxhaW4gdGV4dCBzdHJpbmcgZnJvbSB0aGUgc2VsZWN0aW9uIHRvIHJlbW92
ZSBmb3JtYXR0aW5nIGxpa2UgdGFibGVzIGFuZCBsaXN0cy4KLSAgICBTdHJpbmcgc3RyaW5nID0g
cGxhaW5UZXh0KGZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSk7Ci0KICAgICAvLyBHZXQgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRp
dGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhhdCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNv
bnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24uCiAgICAgTm9kZSogcm9vdCA9IGZyYW1lLT5z
ZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gQXBwbHlTdHlsZUNvbW1hbmQ6OmVkaXRp
bmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24ocm9vdCwgMCkpOwogCi0gICAgLy8gRGVsZXRlIHRo
ZSBzZWxlY3RlZCBjb250ZW50LgotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBs
ZWF2ZSB0aGlzIHRvIGluc2VydFRleHQsIGJ1dCBpdHMgZGVsZXRlIG9wZXJhdGlvbgotICAgIC8v
IGRvZXNuJ3QgcHJlc2VydmUgdGhlIHN0eWxlIHdlJ3JlIGFib3V0IHRvIHNldC4KLSAgICBkZWxl
dGVTZWxlY3Rpb24oKTsKLSAgICAKLSAgICAvLyBEZWxldGUgZG9lc24ndCByZW1vdmUgZnVsbHkg
c2VsZWN0ZWQgbGlzdHMuCi0gICAgd2hpbGUgKGJyZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkpCi0g
ICAgICAgIDsKLSAgICAKLSAgICAvLyBJZiB0aGUgc2VsZWN0aW9uIHdhcyBhbGwgZm9ybWF0dGlu
ZyAobGlrZSBhbiBlbXB0eSBsaXN0KSB0aGUgZm9ybWF0LWxlc3MgdGV4dCB3aWxsIAotICAgIC8v
IGJlIGVtcHR5LiBFYXJseSByZXR1cm4gc2luY2Ugd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgb2Yg
dGhlIHdvcmsgdGhhdCBmb2xsb3dzIGFuZAotICAgIC8vIHRvIGF2b2lkIHRoZSBBU1NFUlQgdGhh
dCBmaXJlcyBpZiBpbnB1dCguLi4pIGlzIGNhbGxlZCB3aXRoIGFuIGVtcHR5IFN0cmluZy4KLSAg
ICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIElu
c2VydCB0aGUgY29udGVudCB3aXRoIHRoZSBkZWZhdWx0IHN0eWxlLgotICAgIC8vIFNlZSA8cmRh
cjovL3Byb2JsZW0vNTc5NDM4Mj4gUmVtb3ZlRm9ybWF0IGRvZXNuJ3QgYWx3YXlzIHJlc2V0IHRl
eHQgYWxpZ25tZW50Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLT5zZXRUeXBpbmdTdHlsZShkZWZh
dWx0U3R5bGUucmVsZWFzZSgpKTsKLSAgICAKLSAgICBpbnB1dFRleHQoc3RyaW5nLCB0cnVlKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemVvZihlbGVtZW50c1RvUmVtb3ZlKS9zaXpl
b2YoUXVhbGlmaWVkTmFtZSopOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPEhUTUxFbGVtZW50PiBl
bGVtZW50ID0gY3JlYXRlSFRNTEVsZW1lbnQoZG9jdW1lbnQoKSwgKmVsZW1lbnRzVG9SZW1vdmVb
aV0pOworICAgICAgICByZW1vdmVTdHlsZWRFbGVtZW50KGVsZW1lbnQpOworICAgIH0KKworICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisKKyAgICBhcHBseVN0eWxlKGRlZmF1bHRTdHlsZS5n
ZXQoKSwgZWRpdGluZ0FjdGlvbigpKTsKKwogfQogCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71140</attachid>
            <date>2010-10-19 01:01:37 -0700</date>
            <delta_ts>2010-10-19 15:22:25 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>wip43017b</filename>
            <type>text/plain</type>
            <size>18832</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAkocmV2aXNpb24g
NzAwMzIpCisrKyBXZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRpdENvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDcsMTIgKzEwNywxMiBAQAogCiB2b2lkIENvbXBvc2l0ZUVkaXRDb21t
YW5kOjphcHBseVN0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBFZGl0QWN0aW9uIGVk
aXRpbmdBY3Rpb24pCiB7Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwbHlTdHlsZUNv
bW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBzdHlsZSwgZWRpdGluZ0FjdGlvbikpOworICAgIGFw
cGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQo
KSwgc3R5bGUsIGZhbHNlLCBlZGl0aW5nQWN0aW9uKSk7CiB9CiAKIHZvaWQgQ29tcG9zaXRlRWRp
dENvbW1hbmQ6OmFwcGx5U3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIGNvbnN0IFBv
c2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0
aW9uKQogewotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKEFwcGx5U3R5bGVDb21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgc3R5bGUsIHN0YXJ0LCBlbmQsIGVkaXRpbmdBY3Rpb24pKTsKKyAg
ICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3Vt
ZW50KCksIHN0eWxlLCBzdGFydCwgZW5kLCBmYWxzZSwgZWRpdGluZ0FjdGlvbikpOwogfQogCiB2
b2lkIENvbXBvc2l0ZUVkaXRDb21tYW5kOjphcHBseVN0eWxlZEVsZW1lbnQoUGFzc1JlZlB0cjxF
bGVtZW50PiBlbGVtZW50KQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1h
bmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3JtYXRDb21tYW5k
LmNwcAkocmV2aXNpb24gNzAwMzIpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9ybWF0Q29t
bWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDE2ICsyNiwxOSBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlJlbW92ZUZvcm1hdENvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkFw
cGx5U3R5bGVDb21tYW5kLmgiCiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9u
LmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUu
aCIKKyNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2lu
Y2x1ZGUgIlZpc2libGVTZWxlY3Rpb24uaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVy
LmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5o
IgotI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcu
aCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Niw2ICs0OSwxMSBAQAogewogfQogCitj
b25zdCBRdWFsaWZpZWROYW1lKiBlbGVtZW50c1RvUmVtb3ZlW10gPSB7CisgICAgJmFjcm9ueW1U
YWcsICZiVGFnLCAmYmRvVGFnLCAmYmlnVGFnLCAmY2l0ZVRhZywgJmNvZGVUYWcsICZkZm5UYWcs
ICZlbVRhZywgJmZvbnRUYWcsICZpVGFnLCAmaW5zVGFnLAorICAgICZrYmRUYWcsICZub2JyVGFn
LCAmcVRhZywgJnNUYWcsICZzYW1wVGFnLCAmc21hbGxUYWcsICZzdHJpa2VUYWcsICZzdHJvbmdU
YWcsICZzdWJUYWcsICZzdXBUYWcsICZ0dFRhZywgJnVUYWcsICZ2YXJUYWcKK307CisKIHZvaWQg
UmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTUzLDM0ICs2MSwyMSBAQAogICAgIGlmICghZnJhbWUtPnNl
bGVjdGlvbigpLT5zZWxlY3Rpb24oKS5pc05vbk9ycGhhbmVkQ2FyZXRPclJhbmdlKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIC8vIE1ha2UgYSBwbGFpbiB0ZXh0IHN0cmluZyBmcm9tIHRoZSBz
ZWxlY3Rpb24gdG8gcmVtb3ZlIGZvcm1hdHRpbmcgbGlrZSB0YWJsZXMgYW5kIGxpc3RzLgotICAg
IFN0cmluZyBzdHJpbmcgPSBwbGFpblRleHQoZnJhbWUtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24o
KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpKTsKLQogICAgIC8vIEdldCB0aGUgZGVmYXVsdCBz
dHlsZSBmb3IgdGhpcyBlZGl0YWJsZSByb290LCBpdCdzIHRoZSBzdHlsZSB0aGF0IHdlJ2xsIGdp
dmUgdGhlCiAgICAgLy8gY29udGVudCB0aGF0IHdlJ3JlIG9wZXJhdGluZyBvbi4KICAgICBOb2Rl
KiByb290ID0gZnJhbWUtPnNlbGVjdGlvbigpLT5yb290RWRpdGFibGVFbGVtZW50KCk7CiAgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBBcHBseVN0
eWxlQ29tbWFuZDo6ZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbihyb290LCAwKSk7CiAK
LSAgICAvLyBEZWxldGUgdGhlIHNlbGVjdGVkIGNvbnRlbnQuCi0gICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBiZSBhYmxlIHRvIGxlYXZlIHRoaXMgdG8gaW5zZXJ0VGV4dCwgYnV0IGl0cyBkZWxldGUg
b3BlcmF0aW9uCi0gICAgLy8gZG9lc24ndCBwcmVzZXJ2ZSB0aGUgc3R5bGUgd2UncmUgYWJvdXQg
dG8gc2V0LgotICAgIGRlbGV0ZVNlbGVjdGlvbigpOwotICAgIAotICAgIC8vIERlbGV0ZSBkb2Vz
bid0IHJlbW92ZSBmdWxseSBzZWxlY3RlZCBsaXN0cy4KLSAgICB3aGlsZSAoYnJlYWtPdXRPZkVt
cHR5TGlzdEl0ZW0oKSkKLSAgICAgICAgOwotICAgIAotICAgIC8vIElmIHRoZSBzZWxlY3Rpb24g
d2FzIGFsbCBmb3JtYXR0aW5nIChsaWtlIGFuIGVtcHR5IGxpc3QpIHRoZSBmb3JtYXQtbGVzcyB0
ZXh0IHdpbGwgCi0gICAgLy8gYmUgZW1wdHkuIEVhcmx5IHJldHVybiBzaW5jZSB3ZSBkb24ndCBu
ZWVkIHRvIGRvIGFueSBvZiB0aGUgd29yayB0aGF0IGZvbGxvd3MgYW5kCi0gICAgLy8gdG8gYXZv
aWQgdGhlIEFTU0VSVCB0aGF0IGZpcmVzIGlmIGlucHV0KC4uLikgaXMgY2FsbGVkIHdpdGggYW4g
ZW1wdHkgU3RyaW5nLgotICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgLy8gSW5zZXJ0IHRoZSBjb250ZW50IHdpdGggdGhlIGRlZmF1bHQgc3R5bGUu
Ci0gICAgLy8gU2VlIDxyZGFyOi8vcHJvYmxlbS81Nzk0MzgyPiBSZW1vdmVGb3JtYXQgZG9lc24n
dCBhbHdheXMgcmVzZXQgdGV4dCBhbGlnbm1lbnQKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCktPnNl
dFR5cGluZ1N0eWxlKGRlZmF1bHRTdHlsZS5yZWxlYXNlKCkpOwotICAgIAotICAgIGlucHV0VGV4
dChzdHJpbmcsIHRydWUpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKGVsZW1l
bnRzVG9SZW1vdmUpL3NpemVvZihRdWFsaWZpZWROYW1lKik7IGkrKykgeworICAgICAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IGVsZW1lbnQgPSBjcmVhdGVIVE1MRWxlbWVudChkb2N1bWVudCgpLCAq
ZWxlbWVudHNUb1JlbW92ZVtpXSk7CisgICAgICAgIHJlbW92ZVN0eWxlZEVsZW1lbnQoZWxlbWVu
dCk7CisgICAgfQorCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKworICAgIGRlZmF1bHRT
dHlsZS0+cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7CisKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBv
c2l0ZShBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHlsZS5n
ZXQoKSwgdHJ1ZSwgZWRpdGluZ0FjdGlvbigpKSk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvZWRp
dGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CShyZXZpc2lvbiA3MDAzMikKKysrIFdlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC04MTAsNyArODEwLDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBWaXNp
YmxlU2VsZWN0aW9uOjpSYW5nZVNlbGVjdGlvbjoKICAgICAgICAgaWYgKHN0eWxlKQotICAgICAg
ICAgICAgYXBwbHlDb21tYW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+ZG9j
dW1lbnQoKSwgc3R5bGUsIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFu
ZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHN0eWxlLCBm
YWxzZSwgZWRpdGluZ0FjdGlvbikpOwogICAgICAgICBicmVhazsKICAgICB9CiB9CkBAIC04Mjks
NyArODI5LDcgQEAKICAgICBjYXNlIFZpc2libGVTZWxlY3Rpb246OkNhcmV0U2VsZWN0aW9uOgog
ICAgIGNhc2UgVmlzaWJsZVNlbGVjdGlvbjo6UmFuZ2VTZWxlY3Rpb246CiAgICAgICAgIGlmIChz
dHlsZSkKLSAgICAgICAgICAgIGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRl
KG1fZnJhbWUtPmRvY3VtZW50KCksIHN0eWxlLCBlZGl0aW5nQWN0aW9uLCBBcHBseVN0eWxlQ29t
bWFuZDo6Rm9yY2VCbG9ja1Byb3BlcnRpZXMpKTsKKyAgICAgICAgICAgIGFwcGx5Q29tbWFuZChB
cHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50KCksIHN0eWxlLCBmYWxz
ZSwgZWRpdGluZ0FjdGlvbiwgQXBwbHlTdHlsZUNvbW1hbmQ6OkZvcmNlQmxvY2tQcm9wZXJ0aWVz
KSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTMyODcsNyArMzI4Nyw3IEBACiAgICAg
UmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBibG9ja1N0eWxlID0gbXV0YWJsZVN0
eWxlLT5jb3B5QmxvY2tQcm9wZXJ0aWVzKCk7CiAgICAgYmxvY2tTdHlsZS0+ZGlmZihtdXRhYmxl
U3R5bGUuZ2V0KCkpOwogICAgIGlmIChibG9ja1N0eWxlLT5sZW5ndGgoKSA+IDApCi0gICAgICAg
IGFwcGx5Q29tbWFuZChBcHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKG1fZnJhbWUtPmRvY3VtZW50
KCksIGJsb2NrU3R5bGUuZ2V0KCksIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAgYXBwbHlDb21t
YW5kKEFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUobV9mcmFtZS0+ZG9jdW1lbnQoKSwgYmxvY2tT
dHlsZS5nZXQoKSwgZmFsc2UsIGVkaXRpbmdBY3Rpb24pKTsKIAogICAgIC8vIFNldCB0aGUgcmVt
YWluaW5nIHN0eWxlIGFzIHRoZSB0eXBpbmcgc3R5bGUuCiAgICAgbV9mcmFtZS0+c2VsZWN0aW9u
KCktPnNldFR5cGluZ1N0eWxlKG11dGFibGVTdHlsZS5yZWxlYXNlKCkpOwpJbmRleDogV2ViQ29y
ZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDcwMDMyKQorKysgV2ViQ29yZS9lZGl0
aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEzICs0NSwxMyBA
QAogICAgIGVudW0gSW5saW5lU3R5bGVSZW1vdmFsTW9kZSB7IFJlbW92ZUlmTmVlZGVkLCBSZW1v
dmVBbHdheXMsIFJlbW92ZU5vbmUgfTsKICAgICBlbnVtIEVBZGRTdHlsZWRFbGVtZW50IHsgQWRk
U3R5bGVkRWxlbWVudCwgRG9Ob3RBZGRTdHlsZWRFbGVtZW50IH07CiAKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBcHBseVN0eWxlQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gYWN0aW9uID0gRWRpdEFjdGlvbkNo
YW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVsID0gUHJvcGVydHlEZWZhdWx0KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgYm9vbCByZW1vdmVPbmx5ID0g
ZmFsc2UsIEVkaXRBY3Rpb24gYWN0aW9uID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIEVQ
cm9wZXJ0eUxldmVsIGxldmVsID0gUHJvcGVydHlEZWZhdWx0KQogICAgIHsKLSAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFuZChkb2N1bWVudCwgc3R5bGUsIGFjdGlv
biwgbGV2ZWwpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFu
ZChkb2N1bWVudCwgc3R5bGUsIHJlbW92ZU9ubHksIGFjdGlvbiwgbGV2ZWwpKTsKICAgICB9Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8QXBwbHlTdHlsZUNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCog
ZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYgc3Rh
cnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIEVkaXRBY3Rpb24gYWN0aW9uID0gRWRpdEFjdGlvbkNo
YW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVsID0gUHJvcGVydHlEZWZhdWx0KQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQq
IGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29uc3QgUG9zaXRpb24mIHN0
YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBib29sIHJlbW92ZU9ubHkgPSBmYWxzZSwgRWRpdEFj
dGlvbiBhY3Rpb24gPSBFZGl0QWN0aW9uQ2hhbmdlQXR0cmlidXRlcywgRVByb3BlcnR5TGV2ZWwg
bGV2ZWwgPSBQcm9wZXJ0eURlZmF1bHQpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IEFwcGx5U3R5bGVDb21tYW5kKGRvY3VtZW50LCBzdHlsZSwgc3RhcnQsIGVuZCwgYWN0aW9u
LCBsZXZlbCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFwcGx5U3R5bGVDb21tYW5k
KGRvY3VtZW50LCBzdHlsZSwgc3RhcnQsIGVuZCwgcmVtb3ZlT25seSwgYWN0aW9uLCBsZXZlbCkp
OwogICAgIH0KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBseVN0eWxlQ29tbWFuZD4gY3JlYXRl
KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgYm9vbCByZW1vdmVPbmx5ID0gZmFsc2UsIEVk
aXRBY3Rpb24gYWN0aW9uID0gRWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMpCiAgICAgewpAQCAt
NjIsOCArNjIsOCBAQAogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBlZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uIHBvcywgU2hvdWxkSW5jbHVk
ZVR5cGluZ1N0eWxlIHNob3VsZEluY2x1ZGVUeXBpbmdTdHlsZSA9IElnbm9yZVR5cGluZ1N0eWxl
KTsKIAogcHJpdmF0ZToKLSAgICBBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCosIENTU1N0eWxl
RGVjbGFyYXRpb24qLCBFZGl0QWN0aW9uLCBFUHJvcGVydHlMZXZlbCk7Ci0gICAgQXBwbHlTdHls
ZUNvbW1hbmQoRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgUG9zaXRpb24m
IHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBFZGl0QWN0aW9uLCBFUHJvcGVydHlMZXZlbCk7
CisgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwg
Ym9vbCByZW1vdmVPbmx5LCBFZGl0QWN0aW9uLCBFUHJvcGVydHlMZXZlbCk7CisgICAgQXBwbHlT
dHlsZUNvbW1hbmQoRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgUG9zaXRp
b24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBib29sIHJlbW92ZU9ubHksIEVkaXRBY3Rp
b24sIEVQcm9wZXJ0eUxldmVsKTsKICAgICBBcHBseVN0eWxlQ29tbWFuZChQYXNzUmVmUHRyPEVs
ZW1lbnQ+LCBib29sIHJlbW92ZU9ubHksIEVkaXRBY3Rpb24pOwogCiAgICAgdmlydHVhbCB2b2lk
IGRvQXBwbHkoKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkocmV2
aXNpb24gNzAwMzIpCisrKyBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC01MjgsNyArNTI4LDcgQEAKICAgICBzdHlsZS0+ZGlmZihlZGl0aW5n
U3R5bGUpOwogfQogCi1BcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1l
bnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRWRpdEFjdGlvbiBlZGl0
aW5nQWN0aW9uLCBFUHJvcGVydHlMZXZlbCBwcm9wZXJ0eUxldmVsKQorQXBwbHlTdHlsZUNvbW1h
bmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50KiBkb2N1bWVudCwgQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUsIGJvb2wgcmVtb3ZlT25seSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBF
UHJvcGVydHlMZXZlbCBwcm9wZXJ0eUxldmVsKQogICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQo
ZG9jdW1lbnQpCiAgICAgLCBtX3N0eWxlKHN0eWxlLT5tYWtlTXV0YWJsZSgpKQogICAgICwgbV9l
ZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pCkBAIC01MzcsMTEgKzUzNywxMSBAQAogICAgICwg
bV9lbmQoZW5kaW5nU2VsZWN0aW9uKCkuZW5kKCkudXBzdHJlYW0oKSkKICAgICAsIG1fdXNlRW5k
aW5nU2VsZWN0aW9uKHRydWUpCiAgICAgLCBtX3N0eWxlZElubGluZUVsZW1lbnQoMCkKLSAgICAs
IG1fcmVtb3ZlT25seShmYWxzZSkKKyAgICAsIG1fcmVtb3ZlT25seShyZW1vdmVPbmx5KQogewog
fQogCi1BcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBQb3NpdGlvbiYgZW5kLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24sIEVQcm9wZXJ0eUxl
dmVsIHByb3BlcnR5TGV2ZWwpCitBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQo
RG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgY29uc3QgUG9z
aXRpb24mIHN0YXJ0LCBjb25zdCBQb3NpdGlvbiYgZW5kLCBib29sIHJlbW92ZU9ubHksIEVkaXRB
Y3Rpb24gZWRpdGluZ0FjdGlvbiwgRVByb3BlcnR5TGV2ZWwgcHJvcGVydHlMZXZlbCkKICAgICA6
IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9zdHlsZShzdHlsZS0+bWFr
ZU11dGFibGUoKSkKICAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKQpAQCAtNTUw
LDcgKzU1MCw3IEBACiAgICAgLCBtX2VuZChlbmQpCiAgICAgLCBtX3VzZUVuZGluZ1NlbGVjdGlv
bihmYWxzZSkKICAgICAsIG1fc3R5bGVkSW5saW5lRWxlbWVudCgwKQotICAgICwgbV9yZW1vdmVP
bmx5KGZhbHNlKQorICAgICwgbV9yZW1vdmVPbmx5KHJlbW92ZU9ubHkpCiB7CiB9CiAKQEAgLTEx
MjYsNiArMTEyNiw5IEBACiAKIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5
bGVUb05vZGVSYW5nZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIE5vZGUqIG5v
ZGUsIE5vZGUqIHBhc3RFbmROb2RlKQogeworICAgIGlmIChtX3JlbW92ZU9ubHkpCisgICAgICAg
IHJldHVybjsKKwogICAgIGZvciAoTm9kZSogbmV4dDsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmRO
b2RlOyBub2RlID0gbmV4dCkgewogICAgICAgICBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9k
ZSgpOwogICAgICAgICAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDc4
NjQwNC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzQ3ODY0MDQtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDMyKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDQgKzIsNSBAQAogfCA8ZGl2PgogfCAgIGNvbnRlbnRlZGl0YWJsZT0i
dHJ1ZSIKIHwgICBpZD0iZGl2IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vIGJhciBiYXo8
I3NlbGVjdGlvbi1mb2N1cz4iCit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5mb28iCit8ICAgIiBi
YXIgYmF6PCNzZWxlY3Rpb24tZm9jdXM+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC80OTIwNzQyLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDc0Mi0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAw
MzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA3NDItMS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBUaGlzIHRlc3RzIGZvciBhIGJ1
ZyB3aGVyZSBSZW1vdmVGb3JtYXQgd291bGQgcmV2ZXJzZSB0aGUgb3JkZXIgb2YgcGFyYWdyYXBo
cy4gQnVnOiB0aGUgY2FyZXQgaXMgbm90IG9uIHRoZSBsYXN0IGxpbmUgYnV0IGl0IHNob3VsZCBi
ZS4KK3wgIjwjc2VsZWN0aW9uLWFuY2hvcj5mb28iCiB8IDxkaXY+Ci18ICAgIjwjc2VsZWN0aW9u
LWFuY2hvcj5mb28iCiB8ICAgPGJyPgotfCAgIDxicj4KK3wgPGRpdj4KIHwgICA8I3NlbGVjdGlv
bi1mb2N1cz4KIHwgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDcwMDMyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1v
dmUtZm9ybWF0dGluZy0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw0ICs5LDUg
QEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZEVuZEVkaXRpbmc6V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb24KIFRoaXMgdGVzdHMg
dGhhdCBSZW1vdmVGb3JtYXQgbm90IG9ubHkgcmVtb3ZlcyBzdHlsZSBmcm9tIHRoZSBzZWxlY3Rl
ZCBwYXJ0IG9mIHRoZSBET00sIGJ1dCB0aGF0IGl0IGFsc28gYXBwbGllcyB0aGUgZG9jdW1lbnQg
ZGVmYXVsdCBzdHlsZSB0byB0aGUgc2VsZWN0aW9uIGlmIHRoYXQncyBuZWNlc3NhcnkgaW4gb3Jk
ZXIgdG8gbGVhdmUgdGhlIHNlbGVjdGVkIHRleHQgdW5zdHlsZWQuCi18ICI8I3NlbGVjdGlvbi1h
bmNob3I+VGhpczwjc2VsZWN0aW9uLWZvY3VzPiB0ZXh0IHNob3VsZCBsb29rIHRoZSBzYW1lIGFz
IHRoZSB0ZXh0IGFib3ZlLiIKK3wgIjwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzPCNzZWxlY3Rpb24t
Zm9jdXM+IgorfCAiIHRleHQgc2hvdWxkIGxvb2sgdGhlIHNhbWUgYXMgdGhlIHRleHQgYWJvdmUu
IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTEtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDc4
NjQwNC0xLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwMzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTMsNCArMyw2IEBACiB8ICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJkaXYiCiB8
ICAgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7IGNvbG9yOiBibGFjazsiCi18ICAgIjwjc2Vs
ZWN0aW9uLWFuY2hvcj5mb28gYmFyIGJhejwjc2VsZWN0aW9uLWZvY3VzPiIKK3wgICAiPCNzZWxl
Y3Rpb24tYW5jaG9yPmZvbyAiCit8ICAgImJhciIKK3wgICAiIGJhejwjc2VsZWN0aW9uLWZvY3Vz
PiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRp
bmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0Nv
bW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDAzMikKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IEIgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVs
bCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwp
IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCkBAIC0xMiwxMSArMTIsMzIgQEAKIFRoaXMgaXMgYSB0ZXN0IGZvciBleGVjQ29tbWFuZCgi
UmVtb3ZlRm9ybWF0IikuIEl0IGRlbW9uc3RyYXRlcyBhIGJ1ZzogZXZlcnl0aGluZyBpbiB0aGUg
ZWRpdGFibGUgcmVnaW9uIGJlbG93IHNob3VsZCBiZSBzZWxlY3RlZCwgYXMgZXZlcnl0aGluZyB3
YXMgc2VsZWN0ZWQgYmVmb3JlIFJlbW92ZSBGb3JtYXQgd2FzIHBlcmZvcm1lZC4KIAogbWFya3Vw
OgotfCAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvb2JhcmJheiIKK3wgIgorIgorfCAiPCNzZWxlY3Rp
b24tYW5jaG9yPmZvbyIKK3wgPGE+Cit8ICAgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyIK
K3wgICAiYmFyIgorfCAiYmF6IgogfCA8YnI+Ci18ICJmb28JYmFyCWJheiIKK3wgIgorIgorfCA8
dGFibGU+Cit8ICAgYm9yZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAgIDx0cj4KK3wgICAgICAg
PHRkPgorfCAgICAgICAgICJmb28iCit8ICAgICAgIDx0ZD4KK3wgICAgICAgICAiYmFyIgorfCAg
ICAgICA8dGQ+Cit8ICAgICAgICAgImJheiIKK3wgIgorIgorfCAiZm9vIgorfCAiYmFyIgorfCAi
YmF6PCNzZWxlY3Rpb24tZm9jdXM+IgogfCA8YnI+Ci18ICJmb29iYXJiYXo8I3NlbGVjdGlvbi1m
b2N1cz4iCiB8ICIKICIKIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81
MDQ5NjcxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzUwNDk2NzEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDAzMikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMiArMSwxMSBAQAotVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgUmVtb3Zl
IEZvcm1hdCB3b3VsZCBmYWlsIHRvIHJlbW92ZSBsaW5rcyB0aGF0IHdlcmUgZnVsbHkgc2VsZWN0
ZWQuICBZb3Ugc2hvdWxkIHNlZSBwbGFpbiB0ZXh0IG9ubHkgaW4gdGhlIGVkaXRhYmxlIHJlZ2lv
biBiZWxvdy4KLXwgIjwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzIHNob3VsZG4ndCBiZSBhIGxpbmsg
b3IgdW5kZXJsaW5lZC48I3NlbGVjdGlvbi1mb2N1cz4iCitUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3
aGVyZSBSZW1vdmUgRm9ybWF0IHdvdWxkIGZhaWwgdG8gcmVtb3ZlIGxpbmtzIHRoYXQgd2VyZSBm
dWxseSBzZWxlY3RlZC4gT24gdGhlIGNvbnRyYXJ5LCB0aGUgYnVnIDQzMDE3IHJlcXVpcmVzIFdl
YktpdCBkb2VzIG5vdCByZW1vdmUgYW5jaG9yIGVsZW1lbnRzLiBZb3Ugc2hvdWxkIHNlZSB0aGUg
aWRlbnRpY2FsIG91dHB1dCBiZWZvcmUgYW5kIGFmdGVyIFJlbW92ZUZvcm1hdC4KKworQmVmb3Jl
IFJlbW92ZUZvcm1hdDoKK3wgPGE+Cit8ICAgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyIK
K3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPlRoaXMgc2hvdWxkbid0IGJlIGEgbGluayBvciB1bmRl
cmxpbmVkLjwjc2VsZWN0aW9uLWZvY3VzPiIKKworQWZ0ZXIgUmVtb3ZlRm9ybWF0OgorfCA8YT4K
K3wgICBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIgorfCAgICI8I3NlbGVjdGlvbi1hbmNo
b3I+VGhpcyBzaG91bGRuJ3QgYmUgYSBsaW5rIG9yIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tZm9j
dXM+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81MDQ5NjcxLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81MDQ5NjcxLmh0
bWwJKHJldmlzaW9uIDcwMDMyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81
MDQ5NjcxLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUsMTMgKzUsMTggQEAKIDxkaXYgaWQ9ImRp
diIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20v
Ij5UaGlzIHNob3VsZG4ndCBiZSBhIGxpbmsgb3IgdW5kZXJsaW5lZC48L2E+PC9kaXY+CiA8c2Ny
aXB0PgogCitNYXJrdXAuZGVzY3JpcHRpb24oJ1RoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIFJl
bW92ZSBGb3JtYXQgd291bGQgZmFpbCB0byByZW1vdmUgbGlua3MgdGhhdCB3ZXJlIGZ1bGx5IHNl
bGVjdGVkLicKKyArICcgT24gdGhlIGNvbnRyYXJ5LCB0aGUgYnVnIDQzMDE3IHJlcXVpcmVzIFdl
YktpdCBkb2VzIG5vdCByZW1vdmUgYW5jaG9yIGVsZW1lbnRzLiBZb3Ugc2hvdWxkIHNlZSB0aGUg
aWRlbnRpY2FsIG91dHB1dCBiZWZvcmUgYW5kIGFmdGVyIFJlbW92ZUZvcm1hdC4nKTsKKwogdmFy
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKIGRpdi5mb2N1cygpOwogZG9j
dW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOworCitNYXJrdXAuZHVtcChkaXYsICdCZWZv
cmUgUmVtb3ZlRm9ybWF0Jyk7CisKIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJSZW1vdmVGb3JtYXQi
KTsKIAotTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSBSZW1v
dmUgRm9ybWF0IHdvdWxkIGZhaWwgdG8gcmVtb3ZlIGxpbmtzIHRoYXQgd2VyZSBmdWxseSBzZWxl
Y3RlZC4gIFlvdSBzaG91bGQgc2VlIHBsYWluIHRleHQgb25seSBpbiB0aGUgZWRpdGFibGUgcmVn
aW9uIGJlbG93LicpOwotTWFya3VwLmR1bXAoZGl2KTsKK01hcmt1cC5kdW1wKGRpdiwgJ0FmdGVy
IFJlbW92ZUZvcm1hdCcpOwogCiA8L3NjcmlwdD4KIDwvYm9keT4KSW5kZXg6IExheW91dFRlc3Rz
L2VkaXRpbmcvZXhlY0NvbW1hbmQvNTU3Mzg3OS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NTczODc5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gNzAwMzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU1NzM4Nzkt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAotVGhpcyB0ZXN0cyB0
byBtYWtlIHN1cmUgdGhhdCBSZW1vdmVGb3JtYXQgZGVzdHJveXMgbGlzdHMgaWYgdGhleSBhcmUg
ZnVsbHkgc2VsZWN0ZWQuICBZb3Ugc2hvdWxkIHNlZSBmb288YnI+YmFyIGJlbG93LgotfCA8ZGl2
PgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vIgotfCAgIDxicj4KLXwgICAiYmFyPCNzZWxl
Y3Rpb24tZm9jdXM+IgorVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBSZW1vdmVGb3JtYXQg
ZGVzdHJveXMgbGlzdHMgaWYgdGhleSBhcmUgZnVsbHkgc2VsZWN0ZWQuIEhvd2V2ZXIsIGJlY2F1
c2UgdGhlIGJ1ZyA0MzAxNyByZXF1aXJlcyBXZWJLaXQgZG9lcyBub3QgZGVzdHJveSBsaXN0cywg
ImZvbyIgYW5kICJiYXIiIHNob3VsZCBiZSBpbiBhIHNlcGFyYXRlIGxpc3QgaXRlbS4KK3wgPHVs
PgorfCAgIDxsaT4KK3wgICAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vIgorfCAgIDxsaT4KK3wg
ICAgICJiYXI8I3NlbGVjdGlvbi1mb2N1cz4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzU1NzM4NzkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzU1NzM4NzkuaHRtbAkocmV2aXNpb24gNzAwMzIpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzU1NzM4NzkuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMTEs
NyArMTEsOCBAQAogZG9jdW1lbnQuZXhlY0NvbW1hbmQoIlNlbGVjdEFsbCIpOwogZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoIlJlbW92ZUZvcm1hdCIpOwogCi1NYXJrdXAuZGVzY3JpcHRpb24oJ1RoaXMg
dGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgUmVtb3ZlRm9ybWF0IGRlc3Ryb3lzIGxpc3RzIGlmIHRo
ZXkgYXJlIGZ1bGx5IHNlbGVjdGVkLiAgWW91IHNob3VsZCBzZWUgZm9vPGJyPmJhciBiZWxvdy4n
KTsKK01hcmt1cC5kZXNjcmlwdGlvbignVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBSZW1v
dmVGb3JtYXQgZGVzdHJveXMgbGlzdHMgaWYgdGhleSBhcmUgZnVsbHkgc2VsZWN0ZWQuJworICsg
JyBIb3dldmVyLCBiZWNhdXNlIHRoZSBidWcgNDMwMTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90
IGRlc3Ryb3kgbGlzdHMsICJmb28iIGFuZCAiYmFyIiBzaG91bGQgYmUgaW4gYSBzZXBhcmF0ZSBs
aXN0IGl0ZW0uJyk7CiBNYXJrdXAuZHVtcChkaXYpOwogCiA8L3NjcmlwdD4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvMTk0MDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvMTk0MDMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA3MDAzMikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvMTk0MDMt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogVGhpcyB0ZXN0cyBm
b3IgYW4gQVNTRVJUIGR1cmluZyBhIFJlbW92ZUZvcm1hdCBjYWxsIHdoZW4gaXQncyBjYWxsZWQg
b24gYSBzZWxlY3Rpb24gY29udGFpbmluZyBvbmx5IGEgaG9yaXpvbnRhbCBydWxlLiBJdCBzaG91
bGQgbm90IEFTU0VSVC4gQnVnOiBJdCBzaG91bGQgYWxzbyBub3QgcmVtb3ZlIHRoZSBob3Jpem9u
dGFsIHJ1bGUuCi08YnI+Cis8aHI+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71209</attachid>
            <date>2010-10-19 15:22:30 -0700</date>
            <delta_ts>2010-10-21 15:46:38 -0700</delta_ts>
            <desc>reimplements RemoveFormat</desc>
            <filename>bug-43017-20101019152229.patch</filename>
            <type>text/plain</type>
            <size>38740</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDA4NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTAtMTAtMTkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmVt
b3ZlRm9ybWF0IG5lZWRzIHRvIGJlIHJlaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDE3CisKKyAgICAgICAgUmVpbXBsZW1lbnRl
ZCBleGVjQ29tbWFuZCgnUmVtb3ZlRm9ybWF0JywgZmFsc2UsIG51bGwpLiAgTmV3IGJlaGF2aW9y
IG1hdGNoZXMgdGhhdCBvZiBJbnRlcm5ldCBFeHBsb3JlcgorICAgICAgICBpbiB0ZXJtcyBvZiBl
bGVtZW50cyBiZWluZyByZW1vdmVkLiBXaGlsZSBJbnRlcm5ldCBFeHBsb3JlciBkb2VzIG5vdCBy
ZW1vdmUgYW55IENTUyBzdHlsZXMsCisgICAgICAgIFdlYktpdCBhbHNvIHJlc2V0IGFueSBlZGl0
aW5nIHN0eWxlcyB0byBtYXRjaCB0aGF0IG9mIHRoZSByb290IGVkaXRhYmxlIGVsZW1lbnQgYmVj
YXVzZSBXZWJLaXQgc3VwcG9ydHMuCisKKyAgICAgICAgTmV3IGltcGxlbWVudGF0aW9uIHVzZXMg
QXBwbHlTdHlsZUNvbW1hbmQgdG8gcmVtb3ZlIGFwcHJvcHJpYXRlIGVsZW1lbnRzIGFuZCByZXNl
dCB0aGUgc3R5bGUuCisgICAgICAgIEFkZGVkIG5ldyBjb25zdHJ1Y3RvciBhbmQgbWVtYmVyIHZh
cmlhYmxlIHRvIEFwcGx5U3R5bGVDb21tYW5kIHRvIHN1cHBvcnQgbWFzcy1yZW1vdmFsIG9mIGVs
ZW1lbnRzCisgICAgICAgIHNpbmNlIGl0J3MgaW5lZmZpY2llbnQgdG8gY2FsbCBBcHBseVN0eWxl
Q29tbWFuZCBvbiBlYWNoIGVsZW1lbnQgd2UncmUgcmVtb3ZpbmcuCisKKyAgICAgICAgVGVzdDog
ZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRzLmh0bWwKKworICAgICAg
ICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBw
bHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKTogQWRkZWQ7IHRoaXMgdmVyc2lvbiB0
YWtlcyBzdHlsZSBhbmQgYSBmdW5jdGlvbiBwb2ludGVyCisgICAgICAgIHRvIGEgYm9vbGVhbiBm
dW5jdGlvbiB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCBzaG91bGQgYmUg
cmVtb3ZlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5KTog
QWRkZWQgc3VwcG9ydCBmb3IgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZS4KKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUpOiBEaXR0by4KKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFu
Z2UpOiBFeGl0cyBlYXJseSBpZiBtX3JlbW92ZU9ubHkgaXMgdHJ1ZS4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGx5U3R5bGVDb21tYW5kOjppc1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92ZVN0eWxlRnJv
bVJ1bkJlZm9yZUFwcGx5aW5nU3R5bGUpOiBDYWxscyBpc1N0eWxlZElubGluZUVsZW1lbnRUb1Jl
bW92ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVT
dHlsZUZyb21FbGVtZW50KTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29t
bWFuZDo6cHVzaERvd25JbmxpbmVTdHlsZUFyb3VuZE5vZGUpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZSk6IERpdHRvLgorICAg
ICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFw
cGx5U3R5bGVDb21tYW5kOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50Rm9yUmVtb3Zl
Rm9ybWF0Q29tbWFuZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVtb3ZlRm9ybWF0Q29t
bWFuZDo6ZG9BcHBseSk6IFJld3JpdHRlbi4KKwogMjAxMC0xMC0wNiAgSmVyIE5vYmxlICA8amVy
Lm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIENhcmxzb24uCklu
ZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9uIDcwMDg2KQor
KysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTM4LDYgKzUzOCw3IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChE
b2MKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRydWUpCiAgICAgLCBtX3N0eWxlZElubGlu
ZUVsZW1lbnQoMCkKICAgICAsIG1fcmVtb3ZlT25seShmYWxzZSkKKyAgICAsIG1faXNJbmxpbmVF
bGVtZW50VG9SZW1vdmUoMCkKIHsKIH0KIApAQCAtNTUxLDYgKzU1Miw3IEBAIEFwcGx5U3R5bGVD
b21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2MKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9u
KGZhbHNlKQogICAgICwgbV9zdHlsZWRJbmxpbmVFbGVtZW50KDApCiAgICAgLCBtX3JlbW92ZU9u
bHkoZmFsc2UpCisgICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlKDApCiB7CiB9CiAKQEAg
LTU2NCw2ICs1NjYsMjEgQEAgQXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKFBh
cwogICAgICwgbV91c2VFbmRpbmdTZWxlY3Rpb24odHJ1ZSkKICAgICAsIG1fc3R5bGVkSW5saW5l
RWxlbWVudChlbGVtZW50KQogICAgICwgbV9yZW1vdmVPbmx5KHJlbW92ZU9ubHkpCisgICAgLCBt
X2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlKDApCit7Cit9CisKK0FwcGx5U3R5bGVDb21tYW5kOjpB
cHBseVN0eWxlQ29tbWFuZChEb2N1bWVudCogZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24q
IHN0eWxlLCBib29sICgqaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKSwg
RWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQorICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9j
dW1lbnQpCisgICAgLCBtX3N0eWxlKHN0eWxlLT5tYWtlTXV0YWJsZSgpKQorICAgICwgbV9lZGl0
aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pCisgICAgLCBtX3Byb3BlcnR5TGV2ZWwoUHJvcGVydHlE
ZWZhdWx0KQorICAgICwgbV9zdGFydChlbmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmRvd25zdHJl
YW0oKSkKKyAgICAsIG1fZW5kKGVuZGluZ1NlbGVjdGlvbigpLmVuZCgpLnVwc3RyZWFtKCkpCisg
ICAgLCBtX3VzZUVuZGluZ1NlbGVjdGlvbih0cnVlKQorICAgICwgbV9zdHlsZWRJbmxpbmVFbGVt
ZW50KDApCisgICAgLCBtX3JlbW92ZU9ubHkodHJ1ZSkKKyAgICAsIG1faXNJbmxpbmVFbGVtZW50
VG9SZW1vdmUoaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpCiB7CiB9CiAKQEAgLTYwNSw3ICs2MjIs
NyBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgICAgICAgICBh
cHBseUJsb2NrU3R5bGUoYmxvY2tTdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICAvLyBhcHBseSBh
bnkgcmVtYWluaW5nIHN0eWxlcyB0byB0aGUgaW5saW5lIGVsZW1lbnRzCiAgICAgICAgICAgICAv
LyBOT1RFOiBob3BlZnVsbHksIHRoaXMgc3RyaW5nIGNvbXBhcmlzb24gaXMgdGhlIHNhbWUgYXMg
Y2hlY2tpbmcgZm9yIGEgbm9uLW51bGwgZGlmZgotICAgICAgICAgICAgaWYgKGJsb2NrU3R5bGUt
Pmxlbmd0aCgpIDwgbV9zdHlsZS0+bGVuZ3RoKCkgfHwgbV9zdHlsZWRJbmxpbmVFbGVtZW50KSB7
CisgICAgICAgICAgICBpZiAoYmxvY2tTdHlsZS0+bGVuZ3RoKCkgPCBtX3N0eWxlLT5sZW5ndGgo
KSB8fCBtX3N0eWxlZElubGluZUVsZW1lbnQgfHwgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZSkg
ewogICAgICAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gaW5s
aW5lU3R5bGUgPSBtX3N0eWxlLT5jb3B5KCk7CiAgICAgICAgICAgICAgICAgYXBwbHlSZWxhdGl2
ZUZvbnRTdHlsZUNoYW5nZShpbmxpbmVTdHlsZS5nZXQoKSk7CiAgICAgICAgICAgICAgICAgYmxv
Y2tTdHlsZS0+ZGlmZihpbmxpbmVTdHlsZS5nZXQoKSk7CkBAIC02NjQsOSArNjgxLDExIEBAIHZv
aWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSgKICAgICAgICAgU3R5bGVDaGFu
Z2Ugc3R5bGVDaGFuZ2Uoc3R5bGUsIHBhcmFncmFwaFN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpOwog
ICAgICAgICBpZiAoc3R5bGVDaGFuZ2UuY3NzU3R5bGUoKS5sZW5ndGgoKSB8fCBtX3JlbW92ZU9u
bHkpIHsKICAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBibG9jayA9IGVuY2xvc2luZ0Jsb2NrKHBh
cmFncmFwaFN0YXJ0LmRlZXBFcXVpdmFsZW50KCkubm9kZSgpKTsKLSAgICAgICAgICAgIFJlZlB0
cjxOb2RlPiBuZXdCbG9jayA9IG1vdmVQYXJhZ3JhcGhDb250ZW50c1RvTmV3QmxvY2tJZk5lY2Vz
c2FyeShwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpKTsKLSAgICAgICAgICAgIGlmIChu
ZXdCbG9jaykKLSAgICAgICAgICAgICAgICBibG9jayA9IG5ld0Jsb2NrOworICAgICAgICAgICAg
aWYgKCFtX3JlbW92ZU9ubHkpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Qmxv
Y2sgPSBtb3ZlUGFyYWdyYXBoQ29udGVudHNUb05ld0Jsb2NrSWZOZWNlc3NhcnkocGFyYWdyYXBo
U3RhcnQuZGVlcEVxdWl2YWxlbnQoKSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld0Jsb2NrKQor
ICAgICAgICAgICAgICAgICAgICBibG9jayA9IG5ld0Jsb2NrOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgQVNTRVJUKGJsb2NrLT5pc0hUTUxFbGVtZW50KCkpOwogICAgICAgICAgICAgaWYg
KGJsb2NrLT5pc0hUTUxFbGVtZW50KCkpIHsKICAgICAgICAgICAgICAgICByZW1vdmVDU1NTdHls
ZShzdHlsZSwgc3RhdGljX2Nhc3Q8SFRNTEVsZW1lbnQqPihibG9jay5nZXQoKSkpOwpAQCAtMTEy
Niw2ICsxMTQ1LDkgQEAgc3RhdGljIGJvb2wgY29udGFpbnNOb25FZGl0YWJsZVJlZ2lvbihObwog
CiB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUlubGluZVN0eWxlVG9Ob2RlUmFuZ2UoQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBOb2RlKiBub2RlLCBOb2RlKiBwYXN0RW5k
Tm9kZSkKIHsKKyAgICBpZiAobV9yZW1vdmVPbmx5KQorICAgICAgICByZXR1cm47CisKICAgICBm
b3IgKE5vZGUqIG5leHQ7IG5vZGUgJiYgbm9kZSAhPSBwYXN0RW5kTm9kZTsgbm9kZSA9IG5leHQp
IHsKICAgICAgICAgbmV4dCA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKTsKICAgICAgICAgCkBA
IC0xMTcxLDEwICsxMTkzLDE2IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5l
U3R5bGUKIAogICAgICAgICBpZiAoIXJlbW92ZVN0eWxlRnJvbVJ1bkJlZm9yZUFwcGx5aW5nU3R5
bGUoc3R5bGUsIG5vZGUsIHJ1bkVuZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
YWRkSW5saW5lU3R5bGVJZk5lZWRlZChzdHlsZSwgbm9kZSwgcnVuRW5kLCBtX3JlbW92ZU9ubHkg
PyBEb05vdEFkZFN0eWxlZEVsZW1lbnQgOiBBZGRTdHlsZWRFbGVtZW50KTsKKyAgICAgICAgYWRk
SW5saW5lU3R5bGVJZk5lZWRlZChzdHlsZSwgbm9kZSwgcnVuRW5kLCBBZGRTdHlsZWRFbGVtZW50
KTsKICAgICB9CiB9CiAKK2Jvb2wgQXBwbHlTdHlsZUNvbW1hbmQ6OmlzU3R5bGVkSW5saW5lRWxl
bWVudFRvUmVtb3ZlKEVsZW1lbnQqIGVsZW1lbnQpIGNvbnN0Cit7CisgICAgcmV0dXJuIChtX3N0
eWxlZElubGluZUVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShtX3N0eWxlZElubGluZUVs
ZW1lbnQtPnRhZ1FOYW1lKCkpKQorICAgICAgICB8fCAobV9pc0lubGluZUVsZW1lbnRUb1JlbW92
ZSAmJiBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlKGVsZW1lbnQpKTsKK30KKwogYm9vbCBBcHBs
eVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZShDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIE5vZGUqJiBydW5TdGFydCwgTm9kZSomIHJ1
bkVuZCkKIHsKICAgICBBU1NFUlQocnVuU3RhcnQgJiYgcnVuRW5kICYmIHJ1blN0YXJ0LT5wYXJl
bnROb2RlKCkgPT0gcnVuRW5kLT5wYXJlbnROb2RlKCkpOwpAQCAtMTE4Myw2ICsxMjExLDcgQEAg
Ym9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlU3R5bGVGcm9tUgogICAgIGZvciAoTm9kZSog
bm9kZSA9IHJ1blN0YXJ0OyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBub2Rl
LT50cmF2ZXJzZU5leHROb2RlKCkpIHsKICAgICAgICAgaWYgKG5vZGUtPmNoaWxkTm9kZUNvdW50
KCkpCiAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gV2UgZG9uJ3QgY29uc2lkZXIg
bV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZSBoZXJlIGJlY2F1c2Ugd2UgbmV2ZXIgYXBwbHkgc3R5
bGUgd2hlbiBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlIGlzIHNwZWNpZmllZAogICAgICAgICBp
ZiAoZ2V0UHJvcGVydGllc05vdEluKHN0eWxlLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdldCgpKS0+
bGVuZ3RoKCkKICAgICAgICAgICAgIHx8IChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgIWVuY2xv
c2luZ05vZGVXaXRoVGFnKHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKSwgbV9zdHlsZWRJbmxpbmVF
bGVtZW50LT50YWdRTmFtZSgpKSkpIHsKICAgICAgICAgICAgIG5lZWRUb0FwcGx5U3R5bGUgPSB0
cnVlOwpAQCAtMTIyMiw3ICsxMjUxLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3Zl
SW5saW5lU3R5bAogICAgIGlmICghZWxlbWVudC0+cGFyZW50Tm9kZSgpIHx8ICFlbGVtZW50LT5w
YXJlbnROb2RlKCktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZSht
X3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKSB7CisgICAgaWYgKGlzU3R5bGVkSW5s
aW5lRWxlbWVudFRvUmVtb3ZlKGVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChtb2RlID09IFJlbW92
ZU5vbmUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgQVNTRVJUKGV4dHJhY3Rl
ZFN0eWxlKTsKQEAgLTE1MTEsNyArMTU0MCw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1
c2hEb3duSW5saW5lU3QKICAgICAgICAgTm9kZSogY2hpbGQgPSBjdXJyZW50LT5maXJzdENoaWxk
KCk7CiAgICAgICAgIE5vZGUqIGxhc3RDaGlsZCA9IGN1cnJlbnQtPmxhc3RDaGlsZCgpOwogICAg
ICAgICBSZWZQdHI8U3R5bGVkRWxlbWVudD4gc3R5bGVkRWxlbWVudDsKLSAgICAgICAgaWYgKGN1
cnJlbnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIG1fc3R5bGVkSW5saW5lRWxlbWVudCAmJiBjdXJy
ZW50LT5oYXNUYWdOYW1lKG1fc3R5bGVkSW5saW5lRWxlbWVudC0+dGFnUU5hbWUoKSkpCisgICAg
ICAgIGlmIChjdXJyZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBpc1N0eWxlZElubGluZUVsZW1l
bnRUb1JlbW92ZShzdGF0aWNfY2FzdDxFbGVtZW50Kj4oY3VycmVudCkpKQogICAgICAgICAgICAg
c3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihjdXJyZW50KTsKICAg
ICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZVRvUHVzaERvd24g
PSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgIHJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oY3Vy
cmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkpOwpAQCAtMTU5NCw3
ICsxNjIzLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5bAogICAg
ICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBlbGVtLT50cmF2ZXJzZU5leHROb2RlKCk7CiAg
ICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlVG9QdXNo
RG93bjsKICAgICAgICAgICAgIFBhc3NSZWZQdHI8Tm9kZT4gY2hpbGROb2RlID0gMDsKLSAgICAg
ICAgICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgZWxlbS0+aGFzVGFnTmFtZShtX3N0
eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKSB7CisgICAgICAgICAgICBpZiAoaXNTdHls
ZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoZWxlbS5nZXQoKSkpIHsKICAgICAgICAgICAgICAgICBz
dHlsZVRvUHVzaERvd24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICAgICAgY2hpbGROb2RlID0gZWxlbS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICAg
ICAgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHJldmlzaW9uIDcwMDg2
KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgJKHdvcmtpbmcgY29weSkK
QEAgLTU3LDYgKzU3LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQXBwbHlTdHlsZUNvbW1hbmQoZWxlbWVudCwgcmVtb3ZlT25seSwgYWN0aW9uKSk7CiAg
ICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVDb21tYW5kPiBjcmVhdGUoRG9j
dW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgYm9vbCAoKmlzSW5s
aW5lRWxlbWVudFRvUmVtb3ZlKShjb25zdCBFbGVtZW50KiksIEVkaXRBY3Rpb24gYWN0aW9uID0g
RWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFwcGx5U3R5bGVDb21tYW5kKGRvY3VtZW50LCBzdHlsZSwgaXNJbmxpbmVFbGVtZW50
VG9SZW1vdmUsIGFjdGlvbikpOworICAgIH0KIAogICAgIHN0YXRpYyBSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlKTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gZWRpdGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbiBwb3MsIFNob3VsZElu
Y2x1ZGVUeXBpbmdTdHlsZSBzaG91bGRJbmNsdWRlVHlwaW5nU3R5bGUgPSBJZ25vcmVUeXBpbmdT
dHlsZSk7CkBAIC02NSw2ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQo
RG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRWRpdEFjdGlvbiwgRVByb3BlcnR5TGV2
ZWwpOwogICAgIEFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50KiwgQ1NTU3R5bGVEZWNsYXJhdGlv
biosIGNvbnN0IFBvc2l0aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgRWRpdEFjdGlv
biwgRVByb3BlcnR5TGV2ZWwpOwogICAgIEFwcGx5U3R5bGVDb21tYW5kKFBhc3NSZWZQdHI8RWxl
bWVudD4sIGJvb2wgcmVtb3ZlT25seSwgRWRpdEFjdGlvbik7CisgICAgQXBwbHlTdHlsZUNvbW1h
bmQoRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCAoKmlzSW5saW5lRWxlbWVu
dFRvUmVtb3ZlKShjb25zdCBFbGVtZW50KiksIEVkaXRBY3Rpb24pOwogCiAgICAgdmlydHVhbCB2
b2lkIGRvQXBwbHkoKTsKICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNv
bnN0OwpAQCAtNzIsNiArNzcsNyBAQCBwcml2YXRlOgogICAgIENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KIAogICAgIC8v
IHN0eWxlLXJlbW92YWwgaGVscGVycworICAgIGJvb2wgaXNTdHlsZWRJbmxpbmVFbGVtZW50VG9S
ZW1vdmUoRWxlbWVudCopIGNvbnN0OwogICAgIGJvb2wgcmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3Jl
QXBwbHlpbmdTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIE5vZGUqJiBy
dW5TdGFydCwgTm9kZSomIHJ1bkVuZCk7CiAgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZUZyb21F
bGVtZW50KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVT
dHlsZVJlbW92YWxNb2RlID0gUmVtb3ZlSWZOZWVkZWQsIENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uKiBleHRyYWN0ZWRTdHlsZSA9IDApOwogICAgIGlubGluZSBib29sIHNob3VsZFJlbW92ZUlu
bGluZVN0eWxlRnJvbUVsZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBI
VE1MRWxlbWVudCogZWxlbWVudCkge3JldHVybiByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50
KHN0eWxlLCBlbGVtZW50LCBSZW1vdmVOb25lKTt9CkBAIC0xMjIsNiArMTI4LDcgQEAgcHJpdmF0
ZToKICAgICBib29sIG1fdXNlRW5kaW5nU2VsZWN0aW9uOwogICAgIFJlZlB0cjxFbGVtZW50PiBt
X3N0eWxlZElubGluZUVsZW1lbnQ7CiAgICAgYm9vbCBtX3JlbW92ZU9ubHk7CisgICAgYm9vbCAo
Km1faXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKTsKIH07CiAKIGJvb2wg
aXNTdHlsZVNwYW4oY29uc3QgTm9kZSopOwpJbmRleDogV2ViQ29yZS9lZGl0aW5nL1JlbW92ZUZv
cm1hdENvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9SZW1vdmVGb3Jt
YXRDb21tYW5kLmNwcAkocmV2aXNpb24gNzAwODYpCisrKyBXZWJDb3JlL2VkaXRpbmcvUmVtb3Zl
Rm9ybWF0Q29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTEwLDMyICsxMSwzNSBAQAog
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisg
KiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVtb3Zl
Rm9ybWF0Q29tbWFuZC5oIgogCisjaW5jbHVkZSAiQXBwbHlTdHlsZUNvbW1hbmQuaCIKICNpbmNs
dWRlICJDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCIKICNpbmNsdWRlICJDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKICNpbmNs
dWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkhUTUxFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5o
IgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJUZXh0SXRlcmF0
b3IuaCIKICNpbmNsdWRlICJUeXBpbmdDb21tYW5kLmgiCi0jaW5jbHVkZSAiQXBwbHlTdHlsZUNv
bW1hbmQuaCIKKyNpbmNsdWRlICJodG1sZWRpdGluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTQ2LDYgKzUwLDM4IEBAIFJlbW92ZUZvcm1hdENvbW1hbmQ6OlJlbW92ZUZvcm1hdENv
bW1hbmQKIHsKIH0KIAorc3RhdGljIGJvb2wgaXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFu
ZChjb25zdCBFbGVtZW50KiBlbGVtZW50KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFz
aFNldDxRdWFsaWZpZWROYW1lPiwgZWxlbWVudHMsICgpKTsKKyAgICBpZiAoZWxlbWVudHMuaXNF
bXB0eSgpKSB7CisgICAgICAgIGVsZW1lbnRzLmFkZChhY3JvbnltVGFnKTsKKyAgICAgICAgZWxl
bWVudHMuYWRkKGJUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoYmRvVGFnKTsKKyAgICAgICAg
ZWxlbWVudHMuYWRkKGJpZ1RhZyk7CisgICAgICAgIGVsZW1lbnRzLmFkZChjaXRlVGFnKTsKKyAg
ICAgICAgZWxlbWVudHMuYWRkKGNvZGVUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoZGZuVGFn
KTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGVtVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGZv
bnRUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoaVRhZyk7CisgICAgICAgIGVsZW1lbnRzLmFk
ZChpbnNUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoa2JkVGFnKTsKKyAgICAgICAgZWxlbWVu
dHMuYWRkKG5vYnJUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQocVRhZyk7CisgICAgICAgIGVs
ZW1lbnRzLmFkZChzVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHNhbXBUYWcpOworICAgICAg
ICBlbGVtZW50cy5hZGQoc21hbGxUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoc3RyaWtlVGFn
KTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHN0cm9uZ1RhZyk7CisgICAgICAgIGVsZW1lbnRzLmFk
ZChzdWJUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoc3VwVGFnKTsKKyAgICAgICAgZWxlbWVu
dHMuYWRkKHR0VGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHVUYWcpOworICAgICAgICBlbGVt
ZW50cy5hZGQodmFyVGFnKTsKKyAgICB9CisgICAgcmV0dXJuIGVsZW1lbnRzLmNvbnRhaW5zKGVs
ZW1lbnQtPnRhZ1FOYW1lKCkpOworfQorCiB2b2lkIFJlbW92ZUZvcm1hdENvbW1hbmQ6OmRvQXBw
bHkoKQogewogICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50KCktPmZyYW1lKCk7CkBAIC01Mywz
NCArODksMTIgQEAgdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0FwcGx5KCkKICAgICBpZiAo
IWZyYW1lLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuaXNOb25PcnBoYW5lZENhcmV0T3JSYW5n
ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBNYWtlIGEgcGxhaW4gdGV4dCBzdHJpbmcg
ZnJvbSB0aGUgc2VsZWN0aW9uIHRvIHJlbW92ZSBmb3JtYXR0aW5nIGxpa2UgdGFibGVzIGFuZCBs
aXN0cy4KLSAgICBTdHJpbmcgc3RyaW5nID0gcGxhaW5UZXh0KGZyYW1lLT5zZWxlY3Rpb24oKS0+
c2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSk7Ci0KICAgICAvLyBHZXQgdGhl
IGRlZmF1bHQgc3R5bGUgZm9yIHRoaXMgZWRpdGFibGUgcm9vdCwgaXQncyB0aGUgc3R5bGUgdGhh
dCB3ZSdsbCBnaXZlIHRoZQogICAgIC8vIGNvbnRlbnQgdGhhdCB3ZSdyZSBvcGVyYXRpbmcgb24u
CiAgICAgTm9kZSogcm9vdCA9IGZyYW1lLT5zZWxlY3Rpb24oKS0+cm9vdEVkaXRhYmxlRWxlbWVu
dCgpOwogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxl
ID0gQXBwbHlTdHlsZUNvbW1hbmQ6OmVkaXRpbmdTdHlsZUF0UG9zaXRpb24oUG9zaXRpb24ocm9v
dCwgMCkpOwogCi0gICAgLy8gRGVsZXRlIHRoZSBzZWxlY3RlZCBjb250ZW50LgotICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGQgYmUgYWJsZSB0byBsZWF2ZSB0aGlzIHRvIGluc2VydFRleHQsIGJ1dCBp
dHMgZGVsZXRlIG9wZXJhdGlvbgotICAgIC8vIGRvZXNuJ3QgcHJlc2VydmUgdGhlIHN0eWxlIHdl
J3JlIGFib3V0IHRvIHNldC4KLSAgICBkZWxldGVTZWxlY3Rpb24oKTsKLSAgICAKLSAgICAvLyBE
ZWxldGUgZG9lc24ndCByZW1vdmUgZnVsbHkgc2VsZWN0ZWQgbGlzdHMuCi0gICAgd2hpbGUgKGJy
ZWFrT3V0T2ZFbXB0eUxpc3RJdGVtKCkpCi0gICAgICAgIDsKLSAgICAKLSAgICAvLyBJZiB0aGUg
c2VsZWN0aW9uIHdhcyBhbGwgZm9ybWF0dGluZyAobGlrZSBhbiBlbXB0eSBsaXN0KSB0aGUgZm9y
bWF0LWxlc3MgdGV4dCB3aWxsIAotICAgIC8vIGJlIGVtcHR5LiBFYXJseSByZXR1cm4gc2luY2Ug
d2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgb2YgdGhlIHdvcmsgdGhhdCBmb2xsb3dzIGFuZAotICAg
IC8vIHRvIGF2b2lkIHRoZSBBU1NFUlQgdGhhdCBmaXJlcyBpZiBpbnB1dCguLi4pIGlzIGNhbGxl
ZCB3aXRoIGFuIGVtcHR5IFN0cmluZy4KLSAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIAotICAgIC8vIEluc2VydCB0aGUgY29udGVudCB3aXRoIHRoZSBkZWZh
dWx0IHN0eWxlLgotICAgIC8vIFNlZSA8cmRhcjovL3Byb2JsZW0vNTc5NDM4Mj4gUmVtb3ZlRm9y
bWF0IGRvZXNuJ3QgYWx3YXlzIHJlc2V0IHRleHQgYWxpZ25tZW50Ci0gICAgZnJhbWUtPnNlbGVj
dGlvbigpLT5zZXRUeXBpbmdTdHlsZShkZWZhdWx0U3R5bGUucmVsZWFzZSgpKTsKLSAgICAKLSAg
ICBpbnB1dFRleHQoc3RyaW5nLCB0cnVlKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShB
cHBseVN0eWxlQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGRlZmF1bHRTdHlsZS5nZXQoKSwg
aXNFbGVtZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCwgZWRpdGluZ0FjdGlvbigpKSk7CiB9CiAK
IH0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTAtMTAtMTkgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgcmVtb3ZlRm9ybWF0IG5lZWRzIHRvIGJlIHJlaW1wbGVtZW50ZWQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDE3CisKKyAgICAg
ICAgQWRkZWQgYSB0ZXN0IHRvIGVuc3VyZSBleGVjQ29tbWFuZCgnUmVtb3ZlRm9ybWF0JywgZmFs
c2UsIG51bGwpIHJlbW92ZXMgdGhlIHNhbWUgc2V0IG9mIGVsZW1lbnRzCisgICAgICAgIHJlbW92
ZWQgYnkgSW50ZXJuZXQgRXhwbG9yZXIuCisKKyAgICAgICAgQWxzbyB1cGRhdGVkIG1hbnkgdGVz
dHMgdG8gcmVmbGVjdCB0aGUgZmFjdCBXZWJLaXQgbm8gbG9uZ2VyIHJlbW92ZXMgYW5jaG9yLCB0
YWJsZSwgYW5kIGxpc3QgZWxlbWVudHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5k
LzE5NDAzLWV4cGVjdGVkLnR4dDogUHJlc2VydmVzIGhyIGVsZW1lbnQuCisgICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTEtZXhwZWN0ZWQudHh0OiBDaGFuZ2UgaW4gdGV4dCBu
b2RlcyBidXQgaWRlbnRpY2FsIHJlbmRlcmluZy4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21t
YW5kLzQ3ODY0MDQtMi1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvZXhl
Y0NvbW1hbmQvNDkyMDQ4OC1leHBlY3RlZC50eHQ6IFByZXNlcnZlcyBhbmNob3IgZWxlbWVudCBv
biBSZW1vdmVGb3JtYXQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNDg4Lmh0
bWw6IFVwZGF0ZWQgdGhlIHRlc3QgZGVzY3JpcHRpb24uCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC80OTIwNzQyLTEtZXhwZWN0ZWQudHh0OiBQcmVzZXJ2ZXMgZGl2IGVsZW1lbnRzLgor
ICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS5odG1sOiBVcGRhdGVkIHRoZSB0
ZXN0IHRvIGR1bXAgdHdpY2UgYmVmb3JlIGFuZCBhZnRlciBSZW1vdmVGb3JtYXQuCisgICAgICAg
IFRoaXMgd2FzIGEgdGVzdCB0byBlbnN1cmUgV2ViS2l0IHJlbW92ZXMgYW5jaG9yIGVsZW1lbnRz
IGJ1dCB3ZSBubyBsb25nZXIgcmVtb3ZlcyBhbmNob3IgZWxlbWVudHMuCisgICAgICAgICogZWRp
dGluZy9leGVjQ29tbWFuZC81MDQ5NjcxLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBlZGl0aW5n
L2V4ZWNDb21tYW5kLzU1NzM4NzkuaHRtbDogVXBkYXRlZCB0aGUgdGVzdCBkZXNjcmlwdGlvbiBi
ZWNhdXNlIFdlYktpdCBubyBsb25nZXIgcmVtb3ZlcworICAgICAgICBsaXN0cyBvbiBSZW1vdmVG
b3JtYXQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC81NTczODc5LWV4cGVjdGVkLnR4
dDoKKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kLzU3NzA4MzQtMS1leHBlY3RlZC50eHQ6
IFJlbW92ZWQgcmVkdW5kYW50IHRleHQtYWxpZ24gcHJvcGVydHkgdmFsdWUuCisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1l
bnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZv
cm1hdHRpbmctMi1leHBlY3RlZC50eHQ6IENoYW5nZSBpbiB0ZXh0IG5vZGVzIGJ1dCBpZGVudGlj
YWwgcmVuZGVyaW5nLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1h
dHRpbmctZXhwZWN0ZWQudHh0OiBXZWJLaXQgbm8gbG9uZ2VyIHJlbW92ZXMgYW5jaG9yLCB0YWJs
ZSwKKyAgICAgICAgdGJvZHksIHRyLCBhbmQgdGQgZWxlbWVudHMuCisgICAgICAgICogZWRpdGlu
Zy9pbnNlcnRpbmcvc3BhY2UtYWZ0ZXItcmVtb3ZlZm9ybWF0LWV4cGVjdGVkLnR4dDogRWRpdGlu
ZyBkZWxlZ2F0ZSBjaGFuZ2UuCisKIDIwMTAtMTAtMTkgIEFudG9uaW8gR29tZXMgIDxhZ29tZXNA
cmltLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIGNvbXBsZW1lbnRhcnkgZml4IHRvIHI3MDA1
OCAoUGFydCBJSUkpLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTQw
My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC8xOTQwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC8xOTQwMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsMiArMSwyIEBACi1UaGlzIHRlc3RzIGZvciBhbiBBU1NFUlQgZHVyaW5nIGEgUmVtb3ZlRm9y
bWF0IGNhbGwgd2hlbiBpdCdzIGNhbGxlZCBvbiBhIHNlbGVjdGlvbiBjb250YWluaW5nIG9ubHkg
YSBob3Jpem9udGFsIHJ1bGUuIEl0IHNob3VsZCBub3QgQVNTRVJULiBCdWc6IEl0IHNob3VsZCBh
bHNvIG5vdCByZW1vdmUgdGhlIGhvcml6b250YWwgcnVsZS4KLTxicj4KK1RoaXMgdGVzdHMgZm9y
IGFuIEFTU0VSVCBkdXJpbmcgYSBSZW1vdmVGb3JtYXQgY2FsbCB3aGVuIGl0J3MgY2FsbGVkIG9u
IGEgc2VsZWN0aW9uIGNvbnRhaW5pbmcgb25seSBhIGhvcml6b250YWwgcnVsZS4gSXQgc2hvdWxk
IG5vdCBBU1NFUlQuCis8aHI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
LzE5NDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC8xOTQwMy5odG1sCShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvMTk0MDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLTxkaXYg
aWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIGZvciBhbiBBU1NFUlQgZHVyaW5nIGEgUmVtb3Zl
Rm9ybWF0IGNhbGwgd2hlbiBpdCdzIGNhbGxlZCBvbiBhIHNlbGVjdGlvbiBjb250YWluaW5nIG9u
bHkgYSBob3Jpem9udGFsIHJ1bGUuICBJdCBzaG91bGQgbm90IEFTU0VSVC4gIEJ1ZzogSXQgc2hv
dWxkIGFsc28gbm90IHJlbW92ZSB0aGUgaG9yaXpvbnRhbCBydWxlLjwvZGl2PgorPGRpdiBpZD0i
ZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgZm9yIGFuIEFTU0VSVCBkdXJpbmcgYSBSZW1vdmVGb3Jt
YXQgY2FsbCB3aGVuIGl0J3MgY2FsbGVkIG9uIGEgc2VsZWN0aW9uIGNvbnRhaW5pbmcgb25seSBh
IGhvcml6b250YWwgcnVsZS4gIEl0IHNob3VsZCBub3QgQVNTRVJULjwvZGl2PgogPGRpdiBpZD0i
ZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48aHI+PC9kaXY+CiAKIDxzY3JpcHQ+CkluZGV4
OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvNDc4NjQwNC0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMyw0ICsz
LDYgQEAgVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgcGVyZm9ybWluZyB0aAogfCAgIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSIKIHwgICBpZD0iZGl2IgogfCAgIHN0eWxlPSJmb250LXdlaWdodDog
bm9ybWFsOyBjb2xvcjogYmxhY2s7IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vIGJhciBi
YXo8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5mb28gIgorfCAg
ICJiYXIiCit8ICAgIiBiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDc4NjQw
NC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0ICsyLDUgQEAgVGhpcyB0ZXN0
cyBmb3IgYSBidWcgd2hlcmUgcGVyZm9ybWluZyB0aAogfCA8ZGl2PgogfCAgIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSIKIHwgICBpZD0iZGl2IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vIGJh
ciBiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5mb28iCit8
ICAgIiBiYXIgYmF6PCNzZWxlY3Rpb24tZm9jdXM+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC80OTIwNDg4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3
MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDQ4OC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSwxMiBAQAotVGhpcyB0ZXN0cyBmb3IgYSBi
dWcgaW4gR01haWwncyBFZGl0b3IsIHRoZXkgdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9m
IGEgcmFuZ2UgdGhhdCBoYXMgaGFkIGl0J3MgY29udGVudHMgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1
bWVudCBieSBhbiBlZGl0aW5nIGNvbW1hbmQuICBZb3Ugc2hvdWxkIHNlZSAnZG9nZm9vZCcgdW5z
dHlsZWQgYmVsb3cuCitUaGlzIHRlc3RzIGZvciBhIGJ1ZyBpbiBHTWFpbCdzIEVkaXRvciwgdGhl
eSB0cnkgdG8gZXh0cmFjdCB0aGUgY29udGVudHMgb2YgYSByYW5nZSB0aGF0IGhhcyBoYWQgaXQn
cyBjb250ZW50cyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJ5IGFuIGVkaXRpbmcgY29tbWFu
ZC4gIFNpbmNlIHRoZSBidWcgNDMwMTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBh
bmNob3IgZWxlbWVudHMsIGRpdiBzaG91bGQgYmUgZW1wdHkgYWZ0ZXIgdGhlIGV4dHJhY3Rpb24u
IFdlIGN1cnJlbnRseSBsZWF2ZSBhbmNob3IgZWxlbWVudCBpbiB0aGUgZGl2IGR1ZSB0byB0aGUg
QnVnIDQ3OTE2LgogCiBBZnRlciByZW1vdmVGb3JtYXQ6Ci18ICI8I3NlbGVjdGlvbi1hbmNob3I+
ZG9nZm9vZDwjc2VsZWN0aW9uLWZvY3VzPiIKK3wgIjwjc2VsZWN0aW9uLWFuY2hvcj5kb2ciCit8
IDxhPgorfCAgIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iCit8ICAgImZvb2Q8I3NlbGVj
dGlvbi1mb2N1cz4iCiAKIEFmdGVyIGV4dHJhY3RDb250ZW50cygpOgotfCAiPCNzZWxlY3Rpb24t
YW5jaG9yPmRvZ2Zvb2Q8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIiCit8IDxhPgorfCAgIGhyZWY9
Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kLzQ5MjA0ODguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1
LDcgQEAKIDxkaXYgaWQ9ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5kb2c8YSBocmVmPSJo
dHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5mb29kPC9hPjwvZGl2PgogPHNjcmlwdD4KIAotTWFya3Vw
LmRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGZvciBhIGJ1ZyBpbiBHTWFpbCdzIEVkaXRvciwgdGhl
eSB0cnkgdG8gZXh0cmFjdCB0aGUgY29udGVudHMgb2YgYSByYW5nZSB0aGF0IGhhcyBoYWQgaXQn
cyBjb250ZW50cyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJ5IGFuIGVkaXRpbmcgY29tbWFu
ZC4gIFlvdSBzaG91bGQgc2VlICdkb2dmb29kJyB1bnN0eWxlZCBiZWxvdy4iKTsKK01hcmt1cC5k
ZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBmb3IgYSBidWcgaW4gR01haWwncyBFZGl0b3IsIHRoZXkg
dHJ5IHRvIGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgdGhhdCBoYXMgaGFkIGl0J3Mg
Y29udGVudHMgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBieSBhbiBlZGl0aW5nIGNvbW1hbmQu
ICBTaW5jZSB0aGUgYnVnIDQzMDE3IHJlcXVpcmVzIFdlYktpdCBkb2VzIG5vdCByZW1vdmUgYW5j
aG9yIGVsZW1lbnRzLCBkaXYgc2hvdWxkIGJlIGVtcHR5IGFmdGVyIHRoZSBleHRyYWN0aW9uLiBX
ZSBjdXJyZW50bHkgbGVhdmUgYW5jaG9yIGVsZW1lbnQgaW4gdGhlIGRpdiBkdWUgdG8gdGhlIEJ1
ZyA0NzkxNi4iKTsKIAogdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsK
IHZhciB0ZXh0ID0gZGl2LmZpcnN0Q2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kLzQ5MjA3NDItMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQyLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3
MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDc0Mi0xLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIFRoaXMgdGVzdHMgZm9yIGEg
YnVnIHdoZXJlIFJlbW92ZUZvcm1hdCB3b3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiBwYXJhZ3Jh
cGhzLiBCdWc6IHRoZSBjYXJldCBpcyBub3Qgb24gdGhlIGxhc3QgbGluZSBidXQgaXQgc2hvdWxk
IGJlLgorfCAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKIHwgPGRpdj4KLXwgICAiPCNzZWxlY3Rp
b24tYW5jaG9yPmZvbyIKLXwgICA8YnI+CiB8ICAgPGJyPgorfCA8ZGl2PgogfCAgIDwjc2VsZWN0
aW9uLWZvY3VzPgogfCAgIDxicj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvNTA0OTY3MS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC81MDQ5NjcxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwODYpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUwNDk2NzEtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDIgKzEsMTEgQEAKLVRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIFJl
bW92ZSBGb3JtYXQgd291bGQgZmFpbCB0byByZW1vdmUgbGlua3MgdGhhdCB3ZXJlIGZ1bGx5IHNl
bGVjdGVkLiAgWW91IHNob3VsZCBzZWUgcGxhaW4gdGV4dCBvbmx5IGluIHRoZSBlZGl0YWJsZSBy
ZWdpb24gYmVsb3cuCi18ICI8I3NlbGVjdGlvbi1hbmNob3I+VGhpcyBzaG91bGRuJ3QgYmUgYSBs
aW5rIG9yIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tZm9jdXM+IgorVGhpcyB0ZXN0cyB3YXMgYWRk
ZWQgZm9yIGEgYnVnIHdoZXJlIFJlbW92ZSBGb3JtYXQgd291bGQgZmFpbCB0byByZW1vdmUgbGlu
a3MgdGhhdCB3ZXJlIGZ1bGx5IHNlbGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIHRoZSBidWcgNDMw
MTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhbmNob3IgZWxlbWVudHMsIFJlbW92
ZUZvcm1hdCBzaG91bGQgTk9UIHJlbW92ZSBhbmNob3IgZWxlbWVudHMuCisKK0JlZm9yZSBSZW1v
dmVGb3JtYXQ6Cit8IDxhPgorfCAgIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iCit8ICAg
Ijwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzIHNob3VsZG4ndCBiZSBhIGxpbmsgb3IgdW5kZXJsaW5l
ZC48I3NlbGVjdGlvbi1mb2N1cz4iCisKK0FmdGVyIFJlbW92ZUZvcm1hdDoKK3wgPGE+Cit8ICAg
aHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyIKK3wgICAiPCNzZWxlY3Rpb24tYW5jaG9yPlRo
aXMgc2hvdWxkbid0IGJlIGEgbGluayBvciB1bmRlcmxpbmVkLjwjc2VsZWN0aW9uLWZvY3VzPiIK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS5odG1sCShy
ZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3
MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDE4IEBACiA8ZGl2IGlkPSJkaXYiIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyI+VGhp
cyBzaG91bGRuJ3QgYmUgYSBsaW5rIG9yIHVuZGVybGluZWQuPC9hPjwvZGl2PgogPHNjcmlwdD4K
IAorTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHdhcyBhZGRlZCBmb3IgYSBidWcgd2hl
cmUgUmVtb3ZlIEZvcm1hdCB3b3VsZCBmYWlsIHRvIHJlbW92ZSBsaW5rcyB0aGF0IHdlcmUgZnVs
bHkgc2VsZWN0ZWQuJworICsgJyBIb3dldmVyLCBiZWNhdXNlIHRoZSBidWcgNDMwMTcgcmVxdWly
ZXMgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhbmNob3IgZWxlbWVudHMsIFJlbW92ZUZvcm1hdCBz
aG91bGQgTk9UIHJlbW92ZSBhbmNob3IgZWxlbWVudHMuJyk7CisKIHZhciBkaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CiBkaXYuZm9jdXMoKTsKIGRvY3VtZW50LmV4ZWNDb21t
YW5kKCJTZWxlY3RBbGwiKTsKKworTWFya3VwLmR1bXAoZGl2LCAnQmVmb3JlIFJlbW92ZUZvcm1h
dCcpOworCiBkb2N1bWVudC5leGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0Iik7CiAKLU1hcmt1cC5k
ZXNjcmlwdGlvbignVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgUmVtb3ZlIEZvcm1hdCB3b3Vs
ZCBmYWlsIHRvIHJlbW92ZSBsaW5rcyB0aGF0IHdlcmUgZnVsbHkgc2VsZWN0ZWQuICBZb3Ugc2hv
dWxkIHNlZSBwbGFpbiB0ZXh0IG9ubHkgaW4gdGhlIGVkaXRhYmxlIHJlZ2lvbiBiZWxvdy4nKTsK
LU1hcmt1cC5kdW1wKGRpdik7CitNYXJrdXAuZHVtcChkaXYsICdBZnRlciBSZW1vdmVGb3JtYXQn
KTsKIAogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kLzU1NzM4NzktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvNTU3Mzg3OS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDg2KQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NTczODc5LWV4cGVjdGVkLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKLVRoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRo
YXQgUmVtb3ZlRm9ybWF0IGRlc3Ryb3lzIGxpc3RzIGlmIHRoZXkgYXJlIGZ1bGx5IHNlbGVjdGVk
LiAgWW91IHNob3VsZCBzZWUgZm9vPGJyPmJhciBiZWxvdy4KLXwgPGRpdj4KLXwgICAiPCNzZWxl
Y3Rpb24tYW5jaG9yPmZvbyIKLXwgICA8YnI+Ci18ICAgImJhcjwjc2VsZWN0aW9uLWZvY3VzPiIK
K1RoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgUmVtb3ZlRm9ybWF0IGRlc3Ryb3lzIGxpc3Rz
IGlmIHRoZXkgYXJlIGZ1bGx5IHNlbGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIHRoZSBidWcgNDMw
MTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IGRlc3Ryb3kgbGlzdHMsICJmb28iIGFuZCAiYmFy
IiBzaG91bGQgYmUgaW4gYSBzZXBhcmF0ZSBsaXN0IGl0ZW0uCit8IDx1bD4KK3wgICA8bGk+Cit8
ICAgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKK3wgICA8bGk+Cit8ICAgICAiYmFyPCNzZWxl
Y3Rpb24tZm9jdXM+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NTcz
ODc5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81
NTczODc5Lmh0bWwJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC81NTczODc5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDggQEAgZGl2
LmZvY3VzKCk7CiBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CiBkb2N1bWVudC5l
eGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0Iik7CiAKLU1hcmt1cC5kZXNjcmlwdGlvbignVGhpcyB0
ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBSZW1vdmVGb3JtYXQgZGVzdHJveXMgbGlzdHMgaWYgdGhl
eSBhcmUgZnVsbHkgc2VsZWN0ZWQuICBZb3Ugc2hvdWxkIHNlZSBmb288YnI+YmFyIGJlbG93Licp
OworTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IFJlbW92
ZUZvcm1hdCBkZXN0cm95cyBsaXN0cyBpZiB0aGV5IGFyZSBmdWxseSBzZWxlY3RlZC4nCisgKyAn
IEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGJ1ZyA0MzAxNyByZXF1aXJlcyBXZWJLaXQgZG9lcyBub3Qg
ZGVzdHJveSBsaXN0cywgImZvbyIgYW5kICJiYXIiIHNob3VsZCBiZSBpbiBhIHNlcGFyYXRlIGxp
c3QgaXRlbS4nKTsKIE1hcmt1cC5kdW1wKGRpdik7CiAKIDwvc2NyaXB0PgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NzcwODM0LTEtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTc3MDgzNC0xLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
LzU3NzA4MzQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw2IEBAIFRo
aXMgdGVzdHMgZm9yIGEgY3Jhc2ggd2hlbiByZW1vdmluZyBmb3IKIAogCiA8ZGl2IHN0eWxlPSJ0
ZXh0LWFsaWduOiByaWdodDsiPgotPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogLXdlYmtpdC1hdXRv
OyI+Zm9vPGJyPmJhcjwvZGl2PgorPGRpdj5mb288YnI+YmFyPC9kaXY+CiA8L2Rpdj4KIApJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21t
YW5kL3JlbW92ZS1mb3JtYXQtZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRzLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitSZW1vdmVkCithY3Jvbnlt
LCBiLCBiZG8sIGJpZywgY2l0ZSwgY29kZSwgZGZuLCBlbSwgZm9udCwgaSwgaW5zLCBrYmQsIG5v
YnIsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB1LCB2
YXIKK1ByZXNlcnZlZAorbm9zY3JpcHQsIGEsIGFiYnIsIGFkZHJlc3MsIGFwcGxldCwgYXJlYSwg
YXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBiYXNlLCBiYXNlZm9udCwgYmdzb3VuZCwgYmxvY2txdW90
ZSwgYm9keSwgYnIsIGJ1dHRvbiwgY2FudmFzLCBjYXB0aW9uLCBjZW50ZXIsIGNvbCwgY29sZ3Jv
dXAsIGNvbW1hbmQsIGRhdGFncmlkLCBkYXRhbGlzdCwgZGNlbGwsIGRjb2wsIGRkLCBkZWwsIGRl
dGFpbHMsIGRpciwgZGl2LCBkbCwgZHJvdywgZHQsIGVtYmVkLCBmaWVsZHNldCwgZmlnY2FwdGlv
biwgZmlndXJlLCBmb290ZXIsIGZvcm0sIGZyYW1lLCBmcmFtZXNldCwgaDEsIGgyLCBoMywgaDQs
IGg1LCBoNiwgaGVhZCwgaGVhZGVyLCBoZ3JvdXAsIGhyLCBodG1sLCBpZnJhbWUsIGltYWdlLCBp
bWcsIGlucHV0LCBpc2luZGV4LCBsYWJlbCwgbGF5ZXIsIGxlZ2VuZCwgbGksIGxpbmssIGxpc3Rp
bmcsIG1hcCwgbWFyaywgbWFycXVlZSwgbWVudSwgbWV0YSwgbWV0ZXIsIG5hdiwgbm9lbWJlZCwg
bm9mcmFtZXMsIG5vbGF5ZXIsIG5vc2NyaXB0LCBvYmplY3QsIG9sLCBvcHRncm91cCwgb3B0aW9u
LCBwLCBwYXJhbSwgcGxhaW50ZXh0LCBwcmUsIHByb2dyZXNzLCBycCwgcnQsIHJ1YnksIHNjcmlw
dCwgc2VjdGlvbiwgc2VsZWN0LCBzb3VyY2UsIHNwYW4sIHN0eWxlLCBzdW1tYXJ5LCB0YWJsZSwg
dGJvZHksIHRkLCB0ZXh0YXJlYSwgdGZvb3QsIHRoLCB0aGVhZCwgdGl0bGUsIHRyLCB0cmFjaywg
dWwsIHZpZGVvLCB3YnIsIHhtcAorRXhjZXB0aW9ucwora2V5Z2VuICg8a2V5Z2VuPjxvcHRpb24+
MjA0OCAoSGlnaCBHcmFkZSk8L29wdGlvbj48b3B0aW9uPjEwMjQgKE1lZGl1bSBHcmFkZSk8L29w
dGlvbj48b3B0aW9uPjUxMiAoTG93IEdyYWRlKTwvb3B0aW9uPmhlbGxvPTE7PC9rZXlnZW4+IHdl
YmtpdD0yOykKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUt
Zm9ybWF0LWVsZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtZWxlbWVudHMuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxkbD4KKzxk
dD5SZW1vdmVkPC9kdD4KKzxkZCBpZD0icmVtb3ZlZCI+PC9kZD4KKzxkdD5QcmVzZXJ2ZWQ8L2R0
PgorPGRkIGlkPSJwcmVzZXJ2ZWQiPjwvZGQ+Cis8ZHQ+RXhjZXB0aW9uczwvZHQ+Cis8ZGQgaWQ9
ImV4Y2VwdGlvbnMiPjwvZGQ+Cis8L2RsPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
PgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRlc3RDb250
cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGVsZW1lbnRzID0gWyAibm9zY3JpcHQiLCAiYSIs
ICJhYmJyIiwgImFjcm9ueW0iLCAiYWRkcmVzcyIsICJhcHBsZXQiLCAiYXJlYSIsICJhcnRpY2xl
IiwgImFzaWRlIiwgImF1ZGlvIiwKKyJiIiwgImJhc2UiLCAiYmFzZWZvbnQiLCAiYmRvIiwgImJn
c291bmQiLCAiYmlnIiwgImJsb2NrcXVvdGUiLCAiYm9keSIsICJiciIsICJidXR0b24iLAorImNh
bnZhcyIsIFsidGFibGUiLCAiY2FwdGlvbiJdLCAiY2VudGVyIiwgImNpdGUiLCAiY29kZSIsIFsi
dGFibGUiLCAiY29sIl0sIFsidGFibGUiLCAiY29sZ3JvdXAiXSwgImNvbW1hbmQiLAorImRhdGFn
cmlkIiwgImRhdGFsaXN0IiwgImRjZWxsIiwgImRjb2wiLCAiZGQiLCAiZGVsIiwgImRldGFpbHMi
LCAiZGZuIiwgImRpciIsICJkaXYiLCAiZGwiLCAiZHJvdyIsICJkdCIsCisiZW0iLCAiZW1iZWQi
LCAiZmllbGRzZXQiLCAiZmlnY2FwdGlvbiIsICJmaWd1cmUiLCAiZm9udCIsICJmb290ZXIiLCAi
Zm9ybSIsICJmcmFtZSIsICJmcmFtZXNldCIsCisiaDEiLCAiaDIiLCAiaDMiLCAiaDQiLCAiaDUi
LCAiaDYiLCAiaGVhZCIsICJoZWFkZXIiLCAiaGdyb3VwIiwgImhyIiwgImh0bWwiLAorImkiLCAi
aWZyYW1lIiwgImltYWdlIiwgImltZyIsICJpbnB1dCIsICJpbnMiLCAiaXNpbmRleCIsICJrYmQi
LCAia2V5Z2VuIiwgImxhYmVsIiwgImxheWVyIiwgImxlZ2VuZCIsIFsidWwiLCAibGkiXSwgImxp
bmsiLCAibGlzdGluZyIsCisibWFwIiwgIm1hcmsiLCAibWFycXVlZSIsICJtZW51IiwgIm1ldGEi
LCAibWV0ZXIiLCAibmF2IiwgIm5vYnIiLCAibm9lbWJlZCIsICJub2ZyYW1lcyIsICJub2xheWVy
IiwgIm5vc2NyaXB0IiwKKyJvYmplY3QiLCAib2wiLCAib3B0Z3JvdXAiLCAib3B0aW9uIiwgInAi
LCAicGFyYW0iLCAicGxhaW50ZXh0IiwgInByZSIsICJwcm9ncmVzcyIsICJxIiwgInJwIiwgInJ0
IiwgInJ1YnkiLAorInMiLCAic2FtcCIsICJzY3JpcHQiLCAic2VjdGlvbiIsICJzZWxlY3QiLCAi
c21hbGwiLCAic291cmNlIiwgInNwYW4iLCAic3RyaWtlIiwgInN0cm9uZyIsICJzdHlsZSIsICJz
dWIiLCAic3VtbWFyeSIsICJzdXAiLAorInRhYmxlIiwgWyJ0YWJsZSIsICJ0Ym9keSJdLCBbInRh
YmxlIiwgInRkIl0sICJ0ZXh0YXJlYSIsIFsidGFibGUiLCAidGZvb3QiXSwgWyJ0YWJsZSIsICJ0
aCJdLCBbInRhYmxlIiwgInRoZWFkIl0sCisidGl0bGUiLCBbInRhYmxlIiwgInRyIl0sICJ0cmFj
ayIsICJ0dCIsICJ1IiwgInVsIiwgInZhciIsICJ2aWRlbyIsICJ3YnIiLCAieG1wIiBdOworCitm
dW5jdGlvbiBhZGRSZXN1bHQoY29udGFpbmVyLCBuYW1lLCBhbm5vdGF0aW9uLCBkZXNjcmlwdGlv
bikKK3sKKyAgICBpZiAoY29udGFpbmVyLmlubmVySFRNTC5sZW5ndGggJiYgIWFubm90YXRpb24p
CisgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gJywgJzsKKyAgICBjb250YWluZXIuaW5u
ZXJIVE1MICs9IG5hbWU7CisgICAgaWYgKGFubm90YXRpb24pCisgICAgICAgIGNvbnRhaW5lci5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICgiICsgYW5ub3RhdGlvbiArICIp
IikpOworICAgIGlmIChkZXNjcmlwdGlvbikKKyAgICAgICAgY29udGFpbmVyLmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRlc2NyaXB0aW9uKSk7CisgICAgaWYgKGFubm90YXRp
b24gfHwgZGVzY3JpcHRpb24pCisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMobm9kZSwgZGVz
Y2VuZGFudCkKK3sKKyAgICB3aGlsZSAoZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50ICE9IG5vZGUg
JiYgZGVzY2VuZGFudC5wYXJlbnROb2RlKQorICAgICAgICBkZXNjZW5kYW50ID0gZGVzY2VuZGFu
dC5wYXJlbnROb2RlOworICAgIHJldHVybiBkZXNjZW5kYW50ID09IG5vZGU7Cit9CisKK3ZhciB0
ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK2ZvciAodmFyIGkgPSAwOyBp
IDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgZWxlbWVudE5hbWU7CisgICAgdmFy
IGluc3RhbmNlID0gbnVsbDsKKyAgICB2YXIgY29udGFpbmVyID0gbnVsbDsKKyAgICBpZiAodHlw
ZW9mIGVsZW1lbnRzW2ldID09ICdzdHJpbmcnKSB7CisgICAgICAgIGVsZW1lbnROYW1lID0gZWxl
bWVudHNbaV07CisgICAgICAgIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVt
ZW50TmFtZSkKKyAgICAgICAgY29udGFpbmVyID0gaW5zdGFuY2U7CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgdmFyIGVsZW1lbnRMaXN0ID0gZWxlbWVudHNbaV07CisgICAgICAgIGZvciAodmFyIGog
PSAwOyBqIDwgZWxlbWVudExpc3QubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIHZhciBub2Rl
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TGlzdFtqXSk7CisgICAgICAgICAgICBp
ZiAoIWNvbnRhaW5lcikKKyAgICAgICAgICAgICAgICBjb250YWluZXIgPSBub2RlOworICAgICAg
ICAgICAgaWYgKGluc3RhbmNlKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLmFwcGVuZENoaWxk
KG5vZGUpOworICAgICAgICAgICAgaW5zdGFuY2UgPSBub2RlOworICAgICAgICB9CisgICAgICAg
IGVsZW1lbnROYW1lID0gZWxlbWVudExpc3RbZWxlbWVudExpc3QubGVuZ3RoLTFdCisgICAgfQor
ICAgIHZhciBkdW1teV90ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hlbGxvPTE7Jyk7
CisgICAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgYWRkUmVzdWx0KGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGNlcHRpb25zJyksIGVsZW1lbnROYW1lLCB0ZXN0Lmlu
bmVySFRNTCk7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB0ZXN0LmlubmVySFRNTCA9
ICIiOworICAgIHRyeSB7CisgICAgICAgIGluc3RhbmNlLmFwcGVuZENoaWxkKGR1bW15X3RleHQp
OyAvLyB0aGlzIG1heSBmYWlsIGZvciBub24tY29udGFpbmVyIGVsZW1lbnRzLgorICAgIH0gY2F0
Y2ggKGVycm9yKSB7IH0KKyAgICB0ZXN0LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7CisgICAgdGVz
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnIHdlYmtpdD0yOycpKTsKKyAg
ICB2YXIgZWMgPSAnJworICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7CisgICAgICAgIHdp
bmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbih0ZXN0KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOwor
ICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dCh0ZXN0LmZpcnN0Q2hpbGQpOworICAgICAg
ICB0cnkgeyByYW5nZS5zZWxlY3QoKTsgfQorICAgICAgICBjYXRjaCAoZXJyb3IpIHsgZWMgKz0g
JyBmYWlsZWQgdG8gc2VsZWN0JzsgfQorICAgIH0KKyAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgn
cmVtb3ZlRm9ybWF0JywgZmFsc2UsIG51bGwpOworCisgICAgaWYgKGVjKSB7CisgICAgICAgIGFk
ZFJlc3VsdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhjZXB0aW9ucycpLCBlbGVtZW50TmFt
ZSwgdGVzdC5pbm5lckhUTUwsIGVjKTsKKyAgICAgICAgY29udGludWU7CisgICAgfQorCisgICAg
aWYgKCF0ZXN0LmZpcnN0Q2hpbGQgfHwgdGVzdC5maXJzdENoaWxkLm5vZGVUeXBlID09IDMgLypU
ZXh0Tm9kZSovKQorICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
bW92ZWQnKSwgZWxlbWVudE5hbWUpCisgICAgZWxzZSBpZiAoY29udGFpbnModGVzdCwgaW5zdGFu
Y2UpICYmIChpbnN0YW5jZS5pbm5lckhUTUwgPT0gIiIgfHwgaW5zdGFuY2UuaW5uZXJIVE1MID09
ICJoZWxsbz0xOyIpKQorICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3ByZXNlcnZlZCcpLCBlbGVtZW50TmFtZSk7CisgICAgZWxzZQorICAgICAgICBhZGRSZXN1bHQo
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4Y2VwdGlvbnMnKSwgZWxlbWVudE5hbWUsIHRlc3Qu
aW5uZXJIVE1MKTsKK30KK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdCk7CisKKzwvc2Ny
aXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9yZW1vdmUtZm9ybWF0dGluZy0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
cmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksNCAr
OSw1IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmkKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6
V2ViVmlld0RpZEVuZEVkaXRpbmdOb3RpZmljYXRpb24KIFRoaXMgdGVzdHMgdGhhdCBSZW1vdmVG
b3JtYXQgbm90IG9ubHkgcmVtb3ZlcyBzdHlsZSBmcm9tIHRoZSBzZWxlY3RlZCBwYXJ0IG9mIHRo
ZSBET00sIGJ1dCB0aGF0IGl0IGFsc28gYXBwbGllcyB0aGUgZG9jdW1lbnQgZGVmYXVsdCBzdHls
ZSB0byB0aGUgc2VsZWN0aW9uIGlmIHRoYXQncyBuZWNlc3NhcnkgaW4gb3JkZXIgdG8gbGVhdmUg
dGhlIHNlbGVjdGVkIHRleHQgdW5zdHlsZWQuCi18ICI8I3NlbGVjdGlvbi1hbmNob3I+VGhpczwj
c2VsZWN0aW9uLWZvY3VzPiB0ZXh0IHNob3VsZCBsb29rIHRoZSBzYW1lIGFzIHRoZSB0ZXh0IGFi
b3ZlLiIKK3wgIjwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzPCNzZWxlY3Rpb24tZm9jdXM+IgorfCAi
IHRleHQgc2hvdWxkIGxvb2sgdGhlIHNhbWUgYXMgdGhlIHRleHQgYWJvdmUuIgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUt
Zm9ybWF0dGluZy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGluZy1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3QKIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3Rl
eHQgPiBCID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9m
ICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93
bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMTIsMTEgKzEyLDMyIEBAIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOlcKIFRoaXMgaXMgYSB0ZXN0IGZvciBl
eGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0IikuIEl0IGRlbW9uc3RyYXRlcyBhIGJ1ZzogZXZlcnl0
aGluZyBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGJlbG93IHNob3VsZCBiZSBzZWxlY3RlZCwgYXMg
ZXZlcnl0aGluZyB3YXMgc2VsZWN0ZWQgYmVmb3JlIFJlbW92ZSBGb3JtYXQgd2FzIHBlcmZvcm1l
ZC4KIAogbWFya3VwOgotfCAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvb2JhcmJheiIKK3wgIgorIgor
fCAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKK3wgPGE+Cit8ICAgaHJlZj0iaHR0cDovL3d3dy5n
b29nbGUuY29tLyIKK3wgICAiYmFyIgorfCAiYmF6IgogfCA8YnI+Ci18ICJmb28JYmFyCWJheiIK
K3wgIgorIgorfCA8dGFibGU+Cit8ICAgYm9yZGVyPSIxIgorfCAgIDx0Ym9keT4KK3wgICAgIDx0
cj4KK3wgICAgICAgPHRkPgorfCAgICAgICAgICJmb28iCit8ICAgICAgIDx0ZD4KK3wgICAgICAg
ICAiYmFyIgorfCAgICAgICA8dGQ+Cit8ICAgICAgICAgImJheiIKK3wgIgorIgorfCAiZm9vIgor
fCAiYmFyIgorfCAiYmF6PCNzZWxlY3Rpb24tZm9jdXM+IgogfCA8YnI+Ci18ICJmb29iYXJiYXo8
I3NlbGVjdGlvbi1mb2N1cz4iCiB8ICIKICIKIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9p
bnNlcnRpbmcvc3BhY2UtYWZ0ZXItcmVtb3ZlZm9ybWF0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9zcGFjZS1hZnRlci1yZW1vdmVmb3Jt
YXQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
aW5zZXJ0aW5nL3NwYWNlLWFmdGVyLXJlbW92ZWZvcm1hdC1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTEsOSArMSw1IEBACiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxs
U2VsZWN0aW5nOkZBTFNFCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRP
TVJhbmdlOnJhbmdlIGZyb20gMCBvZiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mIEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50Ci1FRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5F
ZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlk
Q2hhbmdlTm90aWZpY2F0aW9uCiBUaGlzIGlzIGEgdGVzdCBmb3IgZXhlY0NvbW1hbmQoIlJlbW92
ZUZvcm1hdCIpLiBZb3Ugc2hvdWxkIHNlZSBTb21lJTIwdGV4dCBiZWZvcmUgYW5kIGFmdGVyIFJl
bW92ZUZvcm1hdCBpcyBleGVjdXRlZC4gVGhpcyB0ZXN0IGNhc2UgaXMgZHVlIHRvIHRoZSBXZWJL
aXQgYnVnIDE0MDYyLCByZWdyZXNzaW9uIChyMjEyMTIpLgogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71505</attachid>
            <date>2010-10-21 15:46:42 -0700</date>
            <delta_ts>2010-10-21 16:21:10 -0700</delta_ts>
            <desc>fixed per Tony&apos;s comment</desc>
            <filename>bug-43017-20101021154641.patch</filename>
            <type>text/plain</type>
            <size>63267</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDI3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDMgQEAKKzIwMTAtMTAtMjEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcmVt
b3ZlRm9ybWF0IG5lZWRzIHRvIGJlIHJlaW1wbGVtZW50ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzMDE3CisKKyAgICAgICAgUmVpbXBsZW1lbnRl
ZCBleGVjQ29tbWFuZCgnUmVtb3ZlRm9ybWF0JywgZmFsc2UsIG51bGwpLiBOZXcgaW1wbGVtZW50
YXRpb24gcmVtb3ZlcworICAgICAgICB0aGUgc2FtZSBlbGVtZW50cyByZW1vdmVkIGJ5IEludGVy
bmV0IEV4cGxvcmVyLiBCZWNhdXNlIFdlYktpdCBzdXBwb3J0cyBTdHlsZVdpdGhDU1MKKyAgICAg
ICAgd2UgYWxzbyByZXNldCBhbnkgZWRpdGluZyBzdHlsZXMgdG8gbWF0Y2ggdGhhdCBvZiB0aGUg
cm9vdCBlZGl0YWJsZSBlbGVtZW50CisgICAgICAgIHdoaWxlIEludGVybmV0IEV4cGxvcmVyIGRv
ZXMgbm90IHJlbW92ZSBhbnkgQ1NTIHN0eWxlcy4KKworICAgICAgICBOZXcgaW1wbGVtZW50YXRp
b24gdXNlcyBBcHBseVN0eWxlQ29tbWFuZCB0byByZW1vdmUgYXBwcm9wcmlhdGUgZWxlbWVudHMg
YW5kIHJlc2V0IHRoZSBzdHlsZS4KKyAgICAgICAgQWRkZWQgbmV3IGNvbnN0cnVjdG9yIGFuZCBt
ZW1iZXIgdmFyaWFibGUgdG8gQXBwbHlTdHlsZUNvbW1hbmQgdG8gc3VwcG9ydCBtYXNzLXJlbW92
YWwgb2YgZWxlbWVudHMKKyAgICAgICAgc2luY2UgaXQncyBpbmVmZmljaWVudCB0byBjYWxsIEFw
cGx5U3R5bGVDb21tYW5kIG9uIGVhY2ggZWxlbWVudCB3ZSdyZSByZW1vdmluZy4KKworICAgICAg
ICBUbyBhdm9pZCBhbiBpbmZpbml0ZSBsb29wIGluIHB1c2hEb3duSW5saW5lU3R5bGVBcm91bmRO
b2RlIHdoZW4gbWFzcy1yZW1vdmluZywgV2ViS2l0IG5vIGxvbmdlcgorICAgICAgICBwdXNoIGRv
d24gZWxlbWVudCBvbmUgbGV2ZWwgYXQgYSB0aW1lLiBJbnN0ZWFkLCB3ZSBrZWVwIGEgc3RhY2sg
b2Ygc3R5bGVkIGVsZW1lbnRzIHRvIGJlIGFwcGxpZWQsCisgICAgICAgIGFuZCBhcHBseSB3cmFw
IHNpYmxpbmdzIG9mIHRhcmdldE5vZGUncyBhbmNlc3RvcnMgYnkgYWxsIG9mIHRoZW0gYXQgb25j
ZS4KKworICAgICAgICBUZXN0czogZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVs
ZW1lbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZv
cm1hdC1tdWx0aXBsZS1lbGVtZW50cy5odG1sCisKKyAgICAgICAgKiBlZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpBcHBs
eVN0eWxlQ29tbWFuZCk6IEFkZGVkOyB0aGlzIHZlcnNpb24gdGFrZXMgc3R5bGUgYW5kIGEgZnVu
Y3Rpb24gcG9pbnRlcgorICAgICAgICB0byBhIGJvb2xlYW4gZnVuY3Rpb24gdGhhdCBkZXRlcm1p
bmVzIHdoaWNoIGVsZW1lbnQgbmVlZHMgdG8gcmVtb3ZlZCwgYW5kIHNldCBtX3JlbW92ZU9ubHkg
dG8gdHJ1ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpkb0FwcGx5KTog
QWRkZWQgc3VwcG9ydCBmb3IgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5QmxvY2tTdHlsZSk6IERpdHRv
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmFwcGx5SW5saW5lU3R5bGVU
b05vZGVSYW5nZSk6IEV4aXRzIGVhcmx5IGlmIG1fcmVtb3ZlT25seSBpcyB0cnVlLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OmlzU3R5bGVkSW5saW5lRWxlbWVudFRvUmVt
b3ZlKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3Zl
U3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZSk6IENhbGxzIGlzU3R5bGVkSW5saW5lRWxl
bWVudFRvUmVtb3ZlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnJlbW92
ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGx5
U3R5bGVDb21tYW5kOjpyZW1vdmVJbmxpbmVTdHlsZSk6IERpdHRvLgorICAgICAgICAoV2ViQ29y
ZTo6QXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5saW5lU3R5bGVBcm91bmROb2RlKTogU2Vl
IGFib3ZlLgorICAgICAgICAqIGVkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5U3R5bGVDb21tYW5kOjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAgKiBl
ZGl0aW5nL1JlbW92ZUZvcm1hdENvbW1hbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVt
ZW50Rm9yUmVtb3ZlRm9ybWF0Q29tbWFuZCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVt
b3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSk6IFJld3JpdHRlbi4KKwogMjAxMC0xMC0yMSAgWGlh
b21laSBKaSAgPHhqaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQg
TGV2aW4uCkluZGV4OiBXZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5jcHAJKHJldmlzaW9u
IDcwMDg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNTM4LDYgKzUzOCw3IEBAIEFwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxl
Q29tbWFuZChEb2MKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRydWUpCiAgICAgLCBtX3N0
eWxlZElubGluZUVsZW1lbnQoMCkKICAgICAsIG1fcmVtb3ZlT25seShmYWxzZSkKKyAgICAsIG1f
aXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbigwKQogewogfQogCkBAIC01NTEsNiArNTUy
LDcgQEAgQXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvYwogICAgICwgbV91
c2VFbmRpbmdTZWxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX3N0eWxlZElubGluZUVsZW1lbnQoMCkK
ICAgICAsIG1fcmVtb3ZlT25seShmYWxzZSkKKyAgICAsIG1faXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbigwKQogewogfQogCkBAIC01NjQsNiArNTY2LDIxIEBAIEFwcGx5U3R5bGVDb21t
YW5kOjpBcHBseVN0eWxlQ29tbWFuZChQYXMKICAgICAsIG1fdXNlRW5kaW5nU2VsZWN0aW9uKHRy
dWUpCiAgICAgLCBtX3N0eWxlZElubGluZUVsZW1lbnQoZWxlbWVudCkKICAgICAsIG1fcmVtb3Zl
T25seShyZW1vdmVPbmx5KQorICAgICwgbV9pc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9u
KDApCit7Cit9CisKK0FwcGx5U3R5bGVDb21tYW5kOjpBcHBseVN0eWxlQ29tbWFuZChEb2N1bWVu
dCogZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBJc0lubGluZUVsZW1lbnRU
b1JlbW92ZUZ1bmN0aW9uIGlzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24sIEVkaXRBY3Rp
b24gZWRpdGluZ0FjdGlvbikKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQor
ICAgICwgbV9zdHlsZShzdHlsZS0+bWFrZU11dGFibGUoKSkKKyAgICAsIG1fZWRpdGluZ0FjdGlv
bihlZGl0aW5nQWN0aW9uKQorICAgICwgbV9wcm9wZXJ0eUxldmVsKFByb3BlcnR5RGVmYXVsdCkK
KyAgICAsIG1fc3RhcnQoZW5kaW5nU2VsZWN0aW9uKCkuc3RhcnQoKS5kb3duc3RyZWFtKCkpCisg
ICAgLCBtX2VuZChlbmRpbmdTZWxlY3Rpb24oKS5lbmQoKS51cHN0cmVhbSgpKQorICAgICwgbV91
c2VFbmRpbmdTZWxlY3Rpb24odHJ1ZSkKKyAgICAsIG1fc3R5bGVkSW5saW5lRWxlbWVudCgwKQor
ICAgICwgbV9yZW1vdmVPbmx5KHRydWUpCisgICAgLCBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3Zl
RnVuY3Rpb24oaXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbikKIHsKIH0KIApAQCAtNjA1
LDcgKzYyMiw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgICAgICAg
ICAgICAgIGFwcGx5QmxvY2tTdHlsZShibG9ja1N0eWxlLmdldCgpKTsKICAgICAgICAgICAgIC8v
IGFwcGx5IGFueSByZW1haW5pbmcgc3R5bGVzIHRvIHRoZSBpbmxpbmUgZWxlbWVudHMKICAgICAg
ICAgICAgIC8vIE5PVEU6IGhvcGVmdWxseSwgdGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyB0aGUg
c2FtZSBhcyBjaGVja2luZyBmb3IgYSBub24tbnVsbCBkaWZmCi0gICAgICAgICAgICBpZiAoYmxv
Y2tTdHlsZS0+bGVuZ3RoKCkgPCBtX3N0eWxlLT5sZW5ndGgoKSB8fCBtX3N0eWxlZElubGluZUVs
ZW1lbnQpIHsKKyAgICAgICAgICAgIGlmIChibG9ja1N0eWxlLT5sZW5ndGgoKSA8IG1fc3R5bGUt
Pmxlbmd0aCgpIHx8IG1fc3R5bGVkSW5saW5lRWxlbWVudCB8fCBtX2lzSW5saW5lRWxlbWVudFRv
UmVtb3ZlRnVuY3Rpb24pIHsKICAgICAgICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IGlubGluZVN0eWxlID0gbV9zdHlsZS0+Y29weSgpOwogICAgICAgICAgICAg
ICAgIGFwcGx5UmVsYXRpdmVGb250U3R5bGVDaGFuZ2UoaW5saW5lU3R5bGUuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgIGJsb2NrU3R5bGUtPmRpZmYoaW5saW5lU3R5bGUuZ2V0KCkpOwpAQCAtNjY0
LDkgKzY4MSwxMSBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseUJsb2NrU3R5bGUoCiAg
ICAgICAgIFN0eWxlQ2hhbmdlIHN0eWxlQ2hhbmdlKHN0eWxlLCBwYXJhZ3JhcGhTdGFydC5kZWVw
RXF1aXZhbGVudCgpKTsKICAgICAgICAgaWYgKHN0eWxlQ2hhbmdlLmNzc1N0eWxlKCkubGVuZ3Ro
KCkgfHwgbV9yZW1vdmVPbmx5KSB7CiAgICAgICAgICAgICBSZWZQdHI8Tm9kZT4gYmxvY2sgPSBl
bmNsb3NpbmdCbG9jayhwYXJhZ3JhcGhTdGFydC5kZWVwRXF1aXZhbGVudCgpLm5vZGUoKSk7Ci0g
ICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3QmxvY2sgPSBtb3ZlUGFyYWdyYXBoQ29udGVudHNU
b05ld0Jsb2NrSWZOZWNlc3NhcnkocGFyYWdyYXBoU3RhcnQuZGVlcEVxdWl2YWxlbnQoKSk7Ci0g
ICAgICAgICAgICBpZiAobmV3QmxvY2spCi0gICAgICAgICAgICAgICAgYmxvY2sgPSBuZXdCbG9j
azsKKyAgICAgICAgICAgIGlmICghbV9yZW1vdmVPbmx5KSB7CisgICAgICAgICAgICAgICAgUmVm
UHRyPE5vZGU+IG5ld0Jsb2NrID0gbW92ZVBhcmFncmFwaENvbnRlbnRzVG9OZXdCbG9ja0lmTmVj
ZXNzYXJ5KHBhcmFncmFwaFN0YXJ0LmRlZXBFcXVpdmFsZW50KCkpOworICAgICAgICAgICAgICAg
IGlmIChuZXdCbG9jaykKKyAgICAgICAgICAgICAgICAgICAgYmxvY2sgPSBuZXdCbG9jazsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIEFTU0VSVChibG9jay0+aXNIVE1MRWxlbWVudCgpKTsK
ICAgICAgICAgICAgIGlmIChibG9jay0+aXNIVE1MRWxlbWVudCgpKSB7CiAgICAgICAgICAgICAg
ICAgcmVtb3ZlQ1NTU3R5bGUoc3R5bGUsIHN0YXRpY19jYXN0PEhUTUxFbGVtZW50Kj4oYmxvY2su
Z2V0KCkpKTsKQEAgLTExMjYsNiArMTE0NSw5IEBAIHN0YXRpYyBib29sIGNvbnRhaW5zTm9uRWRp
dGFibGVSZWdpb24oTm8KIAogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlJbmxpbmVTdHls
ZVRvTm9kZVJhbmdlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgTm9kZSogbm9k
ZSwgTm9kZSogcGFzdEVuZE5vZGUpCiB7CisgICAgaWYgKG1fcmVtb3ZlT25seSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgZm9yIChOb2RlKiBuZXh0OyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5v
ZGU7IG5vZGUgPSBuZXh0KSB7CiAgICAgICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHROb2Rl
KCk7CiAgICAgICAgIApAQCAtMTE3MSwxMCArMTE5MywxNiBAQCB2b2lkIEFwcGx5U3R5bGVDb21t
YW5kOjphcHBseUlubGluZVN0eWxlCiAKICAgICAgICAgaWYgKCFyZW1vdmVTdHlsZUZyb21SdW5C
ZWZvcmVBcHBseWluZ1N0eWxlKHN0eWxlLCBub2RlLCBydW5FbmQpKQogICAgICAgICAgICAgY29u
dGludWU7Ci0gICAgICAgIGFkZElubGluZVN0eWxlSWZOZWVkZWQoc3R5bGUsIG5vZGUsIHJ1bkVu
ZCwgbV9yZW1vdmVPbmx5ID8gRG9Ob3RBZGRTdHlsZWRFbGVtZW50IDogQWRkU3R5bGVkRWxlbWVu
dCk7CisgICAgICAgIGFkZElubGluZVN0eWxlSWZOZWVkZWQoc3R5bGUsIG5vZGUsIHJ1bkVuZCwg
QWRkU3R5bGVkRWxlbWVudCk7CiAgICAgfQogfQogCitib29sIEFwcGx5U3R5bGVDb21tYW5kOjpp
c1N0eWxlZElubGluZUVsZW1lbnRUb1JlbW92ZShFbGVtZW50KiBlbGVtZW50KSBjb25zdAorewor
ICAgIHJldHVybiAobV9zdHlsZWRJbmxpbmVFbGVtZW50ICYmIGVsZW1lbnQtPmhhc1RhZ05hbWUo
bV9zdHlsZWRJbmxpbmVFbGVtZW50LT50YWdRTmFtZSgpKSkKKyAgICAgICAgfHwgKG1faXNJbmxp
bmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbiAmJiBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVu
Y3Rpb24oZWxlbWVudCkpOworfQorCiBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpyZW1vdmVTdHls
ZUZyb21SdW5CZWZvcmVBcHBseWluZ1N0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgTm9kZSomIHJ1blN0YXJ0LCBOb2RlKiYgcnVuRW5kKQogewogICAgIEFTU0VSVChydW5T
dGFydCAmJiBydW5FbmQgJiYgcnVuU3RhcnQtPnBhcmVudE5vZGUoKSA9PSBydW5FbmQtPnBhcmVu
dE5vZGUoKSk7CkBAIC0xMTgzLDYgKzEyMTEsNyBAQCBib29sIEFwcGx5U3R5bGVDb21tYW5kOjpy
ZW1vdmVTdHlsZUZyb21SCiAgICAgZm9yIChOb2RlKiBub2RlID0gcnVuU3RhcnQ7IG5vZGUgJiYg
bm9kZSAhPSBwYXN0RW5kTm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewog
ICAgICAgICBpZiAobm9kZS0+Y2hpbGROb2RlQ291bnQoKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAvLyBXZSBkb24ndCBjb25zaWRlciBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3Zl
RnVuY3Rpb24gaGVyZSBiZWNhdXNlIHdlIG5ldmVyIGFwcGx5IHN0eWxlIHdoZW4gbV9pc0lubGlu
ZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uIGlzIHNwZWNpZmllZAogICAgICAgICBpZiAoZ2V0UHJv
cGVydGllc05vdEluKHN0eWxlLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdldCgpKS0+bGVuZ3RoKCkK
ICAgICAgICAgICAgIHx8IChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgIWVuY2xvc2luZ05vZGVX
aXRoVGFnKHBvc2l0aW9uQmVmb3JlTm9kZShub2RlKSwgbV9zdHlsZWRJbmxpbmVFbGVtZW50LT50
YWdRTmFtZSgpKSkpIHsKICAgICAgICAgICAgIG5lZWRUb0FwcGx5U3R5bGUgPSB0cnVlOwpAQCAt
MTIyMiw3ICsxMjUxLDcgQEAgYm9vbCBBcHBseVN0eWxlQ29tbWFuZDo6cmVtb3ZlSW5saW5lU3R5
bAogICAgIGlmICghZWxlbWVudC0+cGFyZW50Tm9kZSgpIHx8ICFlbGVtZW50LT5wYXJlbnROb2Rl
KCktPmlzQ29udGVudEVkaXRhYmxlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShtX3N0eWxlZElu
bGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKSB7CisgICAgaWYgKGlzU3R5bGVkSW5saW5lRWxlbWVu
dFRvUmVtb3ZlKGVsZW1lbnQpKSB7CiAgICAgICAgIGlmIChtb2RlID09IFJlbW92ZU5vbmUpCiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgQVNTRVJUKGV4dHJhY3RlZFN0eWxlKTsK
QEAgLTE1MDQsNiArMTUzMyw3IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hEb3duSW5s
aW5lU3QKIAogICAgIC8vIFRoZSBvdXRlciBsb29wIGlzIHRyYXZlcnNpbmcgdGhlIHRyZWUgdmVy
dGljYWxseSBmcm9tIGhpZ2hlc3RBbmNlc3RvciB0byB0YXJnZXROb2RlCiAgICAgTm9kZSogY3Vy
cmVudCA9IGhpZ2hlc3RBbmNlc3RvcjsKKyAgICBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4gZWxl
bWVudHNUb1B1c2hEb3duOwogICAgIHdoaWxlIChjdXJyZW50ICE9IHRhcmdldE5vZGUpIHsKICAg
ICAgICAgQVNTRVJUKGN1cnJlbnQpOwogICAgICAgICBBU1NFUlQoY3VycmVudC0+aXNIVE1MRWxl
bWVudCgpKTsKQEAgLTE1MTEsOCArMTU0MSwxMCBAQCB2b2lkIEFwcGx5U3R5bGVDb21tYW5kOjpw
dXNoRG93bklubGluZVN0CiAgICAgICAgIE5vZGUqIGNoaWxkID0gY3VycmVudC0+Zmlyc3RDaGls
ZCgpOwogICAgICAgICBOb2RlKiBsYXN0Q2hpbGQgPSBjdXJyZW50LT5sYXN0Q2hpbGQoKTsKICAg
ICAgICAgUmVmUHRyPFN0eWxlZEVsZW1lbnQ+IHN0eWxlZEVsZW1lbnQ7Ci0gICAgICAgIGlmIChj
dXJyZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBtX3N0eWxlZElubGluZUVsZW1lbnQgJiYgY3Vy
cmVudC0+aGFzVGFnTmFtZShtX3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKQorICAg
ICAgICBpZiAoY3VycmVudC0+aXNTdHlsZWRFbGVtZW50KCkgJiYgaXNTdHlsZWRJbmxpbmVFbGVt
ZW50VG9SZW1vdmUoc3RhdGljX2Nhc3Q8RWxlbWVudCo+KGN1cnJlbnQpKSkgewogICAgICAgICAg
ICAgc3R5bGVkRWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihjdXJyZW50KTsK
KyAgICAgICAgICAgIGVsZW1lbnRzVG9QdXNoRG93bi5hcHBlbmQoc3R5bGVkRWxlbWVudCk7Cisg
ICAgICAgIH0KICAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZVRvUHVzaERvd24gPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAg
ICAgIHJlbW92ZUlubGluZVN0eWxlRnJvbUVsZW1lbnQoc3R5bGUsIHN0YXRpY19jYXN0PEhUTUxF
bGVtZW50Kj4oY3VycmVudCksIFJlbW92ZUlmTmVlZGVkLCBzdHlsZVRvUHVzaERvd24uZ2V0KCkp
OwogCkBAIC0xNTIxLDE3ICsxNTUzLDE0IEBAIHZvaWQgQXBwbHlTdHlsZUNvbW1hbmQ6OnB1c2hE
b3duSW5saW5lU3QKICAgICAgICAgd2hpbGUgKGNoaWxkKSB7CiAgICAgICAgICAgICBOb2RlKiBu
ZXh0Q2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKIAotICAgICAgICAgICAgaWYgKGNoaWxk
ICE9IHRhcmdldE5vZGUgJiYgc3R5bGVkRWxlbWVudCkgewotICAgICAgICAgICAgICAgIC8vIElm
IGNoaWxkIGhhcyBjaGlsZHJlbiwgd3JhcCBjaGlsZHJlbiBvZiBjaGlsZCBieSBhIGNsb25lIG9m
IHRoZSBzdHlsZWQgZWxlbWVudCB0byBhdm9pZCBpbmZpbml0ZSBsb29wLgotICAgICAgICAgICAg
ICAgIC8vIE90aGVyd2lzZSwgd3JhcCB0aGUgY2hpbGQgYnkgdGhlIHN0eWxlZCBlbGVtZW50LCBh
bmQgd2Ugd29uJ3QgZmFsbCBpbnRvIGFuIGluZmluaXRlIGxvb3AuCi0gICAgICAgICAgICAgICAg
UmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIgPSBzdHlsZWRFbGVtZW50LT5jbG9uZUVsZW1lbnRXaXRo
b3V0Q2hpbGRyZW4oKTsKLSAgICAgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICAgICAgICAgICAgICB3cmFwcGVyLT5yZW1vdmVBdHRyaWJ1dGUoc3R5bGVBdHRyLCBlYyk7Ci0g
ICAgICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkLT5m
aXJzdENoaWxkKCkpCi0gICAgICAgICAgICAgICAgICAgIHN1cnJvdW5kTm9kZVJhbmdlV2l0aEVs
ZW1lbnQoY2hpbGQtPmZpcnN0Q2hpbGQoKSwgY2hpbGQtPmxhc3RDaGlsZCgpLCB3cmFwcGVyKTsK
LSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiAoIWNoaWxkLT5jb250YWlucyh0
YXJnZXROb2RlKSAmJiBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpKSB7CisgICAgICAgICAgICAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlbGVtZW50c1RvUHVzaERvd24uc2l6ZSgpOyBpKysp
IHsKKyAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHdyYXBwZXIgPSBlbGVtZW50
c1RvUHVzaERvd25baV0tPmNsb25lRWxlbWVudFdpdGhvdXRDaGlsZHJlbigpOworICAgICAgICAg
ICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICAgICAgICAgICAgICAgICAgd3Jh
cHBlci0+cmVtb3ZlQXR0cmlidXRlKHN0eWxlQXR0ciwgZWMpOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoIWVjKTsKICAgICAgICAgICAgICAgICAgICAgc3Vycm91bmROb2RlUmFuZ2VXaXRo
RWxlbWVudChjaGlsZCwgY2hpbGQsIHdyYXBwZXIpOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgLy8gQXBwbHkgdGV4dCBkZWNvcmF0aW9uIHRvIGFsbCBu
b2RlcyBjb250YWluaW5nIHRhcmdldE5vZGUgYW5kIHRoZWlyIHNpYmxpbmdzIGJ1dCBOT1QgdG8g
dGFyZ2V0Tm9kZQpAQCAtMTU5NCw3ICsxNjIzLDcgQEAgdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6
cmVtb3ZlSW5saW5lU3R5bAogICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBlbGVtLT50
cmF2ZXJzZU5leHROb2RlKCk7CiAgICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IHN0eWxlVG9QdXNoRG93bjsKICAgICAgICAgICAgIFBhc3NSZWZQdHI8Tm9kZT4g
Y2hpbGROb2RlID0gMDsKLSAgICAgICAgICAgIGlmIChtX3N0eWxlZElubGluZUVsZW1lbnQgJiYg
ZWxlbS0+aGFzVGFnTmFtZShtX3N0eWxlZElubGluZUVsZW1lbnQtPnRhZ1FOYW1lKCkpKSB7Cisg
ICAgICAgICAgICBpZiAoaXNTdHlsZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoZWxlbS5nZXQoKSkp
IHsKICAgICAgICAgICAgICAgICBzdHlsZVRvUHVzaERvd24gPSBDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbjo6Y3JlYXRlKCk7CiAgICAgICAgICAgICAgICAgY2hpbGROb2RlID0gZWxlbS0+Zmly
c3RDaGlsZCgpOwogICAgICAgICAgICAgfQpJbmRleDogV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5
bGVDb21tYW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmgJKHJldmlzaW9uIDcwMDg2KQorKysgV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21t
YW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgogICAgIGVudW0g
RVByb3BlcnR5TGV2ZWwgeyBQcm9wZXJ0eURlZmF1bHQsIEZvcmNlQmxvY2tQcm9wZXJ0aWVzIH07
CiAgICAgZW51bSBJbmxpbmVTdHlsZVJlbW92YWxNb2RlIHsgUmVtb3ZlSWZOZWVkZWQsIFJlbW92
ZUFsd2F5cywgUmVtb3ZlTm9uZSB9OwogICAgIGVudW0gRUFkZFN0eWxlZEVsZW1lbnQgeyBBZGRT
dHlsZWRFbGVtZW50LCBEb05vdEFkZFN0eWxlZEVsZW1lbnQgfTsKKyAgICB0eXBlZGVmIGJvb2wg
KCpJc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uKShjb25zdCBFbGVtZW50Kik7CiAKICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxBcHBseVN0eWxlQ29tbWFuZD4gY3JlYXRlKERvY3VtZW50KiBk
b2N1bWVudCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIEVkaXRBY3Rpb24gYWN0aW9uID0g
RWRpdEFjdGlvbkNoYW5nZUF0dHJpYnV0ZXMsIEVQcm9wZXJ0eUxldmVsIGxldmVsID0gUHJvcGVy
dHlEZWZhdWx0KQogICAgIHsKQEAgLTU3LDYgKzU4LDEwIEBAIHB1YmxpYzoKICAgICB7CiAgICAg
ICAgIHJldHVybiBhZG9wdFJlZihuZXcgQXBwbHlTdHlsZUNvbW1hbmQoZWxlbWVudCwgcmVtb3Zl
T25seSwgYWN0aW9uKSk7CiAgICAgfQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFwcGx5U3R5bGVD
b21tYW5kPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgSXNJbmxpbmVFbGVtZW50VG9SZW1vdmVGdW5jdGlvbiBpc0lubGluZUVsZW1lbnRUb1Jl
bW92ZUZ1bmN0aW9uLCBFZGl0QWN0aW9uIGFjdGlvbiA9IEVkaXRBY3Rpb25DaGFuZ2VBdHRyaWJ1
dGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBcHBseVN0eWxlQ29tbWFu
ZChkb2N1bWVudCwgc3R5bGUsIGlzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb24sIGFjdGlv
bikpOworICAgIH0KIAogICAgIHN0YXRpYyBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHJlbW92ZU5vbkVkaXRpbmdQcm9wZXJ0aWVzKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
KTsKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZWRp
dGluZ1N0eWxlQXRQb3NpdGlvbihQb3NpdGlvbiBwb3MsIFNob3VsZEluY2x1ZGVUeXBpbmdTdHls
ZSBzaG91bGRJbmNsdWRlVHlwaW5nU3R5bGUgPSBJZ25vcmVUeXBpbmdTdHlsZSk7CkBAIC02NSw2
ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQqLCBDU1NT
dHlsZURlY2xhcmF0aW9uKiwgRWRpdEFjdGlvbiwgRVByb3BlcnR5TGV2ZWwpOwogICAgIEFwcGx5
U3R5bGVDb21tYW5kKERvY3VtZW50KiwgQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFBvc2l0
aW9uJiBzdGFydCwgY29uc3QgUG9zaXRpb24mIGVuZCwgRWRpdEFjdGlvbiwgRVByb3BlcnR5TGV2
ZWwpOwogICAgIEFwcGx5U3R5bGVDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4sIGJvb2wgcmVt
b3ZlT25seSwgRWRpdEFjdGlvbik7CisgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQqLCBD
U1NTdHlsZURlY2xhcmF0aW9uKiwgYm9vbCAoKmlzSW5saW5lRWxlbWVudFRvUmVtb3ZlKShjb25z
dCBFbGVtZW50KiksIEVkaXRBY3Rpb24pOwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKTsK
ICAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbigpIGNvbnN0OwpAQCAtNzIsNiAr
NzgsNyBAQCBwcml2YXRlOgogICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc3R5bGUuZ2V0KCk7IH0KIAogICAgIC8vIHN0eWxlLXJlbW92YWwg
aGVscGVycworICAgIGJvb2wgaXNTdHlsZWRJbmxpbmVFbGVtZW50VG9SZW1vdmUoRWxlbWVudCop
IGNvbnN0OwogICAgIGJvb2wgcmVtb3ZlU3R5bGVGcm9tUnVuQmVmb3JlQXBwbHlpbmdTdHlsZShD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIE5vZGUqJiBydW5TdGFydCwgTm9kZSom
IHJ1bkVuZCk7CiAgICAgYm9vbCByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKiwgSFRNTEVsZW1lbnQqLCBJbmxpbmVTdHlsZVJlbW92YWxNb2Rl
ID0gUmVtb3ZlSWZOZWVkZWQsIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBleHRyYWN0ZWRT
dHlsZSA9IDApOwogICAgIGlubGluZSBib29sIHNob3VsZFJlbW92ZUlubGluZVN0eWxlRnJvbUVs
ZW1lbnQoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBIVE1MRWxlbWVudCogZWxl
bWVudCkge3JldHVybiByZW1vdmVJbmxpbmVTdHlsZUZyb21FbGVtZW50KHN0eWxlLCBlbGVtZW50
LCBSZW1vdmVOb25lKTt9CkBAIC0xMjIsNiArMTI5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
dXNlRW5kaW5nU2VsZWN0aW9uOwogICAgIFJlZlB0cjxFbGVtZW50PiBtX3N0eWxlZElubGluZUVs
ZW1lbnQ7CiAgICAgYm9vbCBtX3JlbW92ZU9ubHk7CisgICAgSXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbiBtX2lzSW5saW5lRWxlbWVudFRvUmVtb3ZlRnVuY3Rpb247CiB9OwogCiBib29s
IGlzU3R5bGVTcGFuKGNvbnN0IE5vZGUqKTsKSW5kZXg6IFdlYkNvcmUvZWRpdGluZy9SZW1vdmVG
b3JtYXRDb21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2VkaXRpbmcvUmVtb3ZlRm9y
bWF0Q29tbWFuZC5jcHAJKHJldmlzaW9uIDcwMDg2KQorKysgV2ViQ29yZS9lZGl0aW5nL1JlbW92
ZUZvcm1hdENvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xMCwzMiArMTEsMzUgQEAK
ICAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQot
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
LSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAor
ICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAogICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlJlbW92
ZUZvcm1hdENvbW1hbmQuaCIKIAorI2luY2x1ZGUgIkFwcGx5U3R5bGVDb21tYW5kLmgiCiAjaW5j
bHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAjaW5jbHVkZSAiQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24uaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAjaW5j
bHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJIVE1MRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIlZpc2libGVTZWxlY3Rpb24u
aCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVGV4dEl0ZXJh
dG9yLmgiCiAjaW5jbHVkZSAiVHlwaW5nQ29tbWFuZC5oIgotI2luY2x1ZGUgIkFwcGx5U3R5bGVD
b21tYW5kLmgiCisjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC00Niw2ICs1MCwzOCBAQCBSZW1vdmVGb3JtYXRDb21tYW5kOjpSZW1vdmVGb3JtYXRD
b21tYW5kCiB7CiB9CiAKK3N0YXRpYyBib29sIGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1h
bmQoY29uc3QgRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhh
c2hTZXQ8UXVhbGlmaWVkTmFtZT4sIGVsZW1lbnRzLCAoKSk7CisgICAgaWYgKGVsZW1lbnRzLmlz
RW1wdHkoKSkgeworICAgICAgICBlbGVtZW50cy5hZGQoYWNyb255bVRhZyk7CisgICAgICAgIGVs
ZW1lbnRzLmFkZChiVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGJkb1RhZyk7CisgICAgICAg
IGVsZW1lbnRzLmFkZChiaWdUYWcpOworICAgICAgICBlbGVtZW50cy5hZGQoY2l0ZVRhZyk7Cisg
ICAgICAgIGVsZW1lbnRzLmFkZChjb2RlVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGRmblRh
Zyk7CisgICAgICAgIGVsZW1lbnRzLmFkZChlbVRhZyk7CisgICAgICAgIGVsZW1lbnRzLmFkZChm
b250VGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGlUYWcpOworICAgICAgICBlbGVtZW50cy5h
ZGQoaW5zVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKGtiZFRhZyk7CisgICAgICAgIGVsZW1l
bnRzLmFkZChub2JyVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHFUYWcpOworICAgICAgICBl
bGVtZW50cy5hZGQoc1RhZyk7CisgICAgICAgIGVsZW1lbnRzLmFkZChzYW1wVGFnKTsKKyAgICAg
ICAgZWxlbWVudHMuYWRkKHNtYWxsVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHN0cmlrZVRh
Zyk7CisgICAgICAgIGVsZW1lbnRzLmFkZChzdHJvbmdUYWcpOworICAgICAgICBlbGVtZW50cy5h
ZGQoc3ViVGFnKTsKKyAgICAgICAgZWxlbWVudHMuYWRkKHN1cFRhZyk7CisgICAgICAgIGVsZW1l
bnRzLmFkZCh0dFRhZyk7CisgICAgICAgIGVsZW1lbnRzLmFkZCh1VGFnKTsKKyAgICAgICAgZWxl
bWVudHMuYWRkKHZhclRhZyk7CisgICAgfQorICAgIHJldHVybiBlbGVtZW50cy5jb250YWlucyhl
bGVtZW50LT50YWdRTmFtZSgpKTsKK30KKwogdm9pZCBSZW1vdmVGb3JtYXRDb21tYW5kOjpkb0Fw
cGx5KCkKIHsKICAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudCgpLT5mcmFtZSgpOwpAQCAtNTMs
MzQgKzg5LDEyIEBAIHZvaWQgUmVtb3ZlRm9ybWF0Q29tbWFuZDo6ZG9BcHBseSgpCiAgICAgaWYg
KCFmcmFtZS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmlzTm9uT3JwaGFuZWRDYXJldE9yUmFu
Z2UoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gTWFrZSBhIHBsYWluIHRleHQgc3RyaW5n
IGZyb20gdGhlIHNlbGVjdGlvbiB0byByZW1vdmUgZm9ybWF0dGluZyBsaWtlIHRhYmxlcyBhbmQg
bGlzdHMuCi0gICAgU3RyaW5nIHN0cmluZyA9IHBsYWluVGV4dChmcmFtZS0+c2VsZWN0aW9uKCkt
PnNlbGVjdGlvbigpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCkpOwotCiAgICAgLy8gR2V0IHRo
ZSBkZWZhdWx0IHN0eWxlIGZvciB0aGlzIGVkaXRhYmxlIHJvb3QsIGl0J3MgdGhlIHN0eWxlIHRo
YXQgd2UnbGwgZ2l2ZSB0aGUKICAgICAvLyBjb250ZW50IHRoYXQgd2UncmUgb3BlcmF0aW5nIG9u
LgogICAgIE5vZGUqIHJvb3QgPSBmcmFtZS0+c2VsZWN0aW9uKCktPnJvb3RFZGl0YWJsZUVsZW1l
bnQoKTsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHls
ZSA9IEFwcGx5U3R5bGVDb21tYW5kOjplZGl0aW5nU3R5bGVBdFBvc2l0aW9uKFBvc2l0aW9uKHJv
b3QsIDApKTsKIAotICAgIC8vIERlbGV0ZSB0aGUgc2VsZWN0ZWQgY29udGVudC4KLSAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGJlIGFibGUgdG8gbGVhdmUgdGhpcyB0byBpbnNlcnRUZXh0LCBidXQg
aXRzIGRlbGV0ZSBvcGVyYXRpb24KLSAgICAvLyBkb2Vzbid0IHByZXNlcnZlIHRoZSBzdHlsZSB3
ZSdyZSBhYm91dCB0byBzZXQuCi0gICAgZGVsZXRlU2VsZWN0aW9uKCk7Ci0gICAgCi0gICAgLy8g
RGVsZXRlIGRvZXNuJ3QgcmVtb3ZlIGZ1bGx5IHNlbGVjdGVkIGxpc3RzLgotICAgIHdoaWxlIChi
cmVha091dE9mRW1wdHlMaXN0SXRlbSgpKQotICAgICAgICA7Ci0gICAgCi0gICAgLy8gSWYgdGhl
IHNlbGVjdGlvbiB3YXMgYWxsIGZvcm1hdHRpbmcgKGxpa2UgYW4gZW1wdHkgbGlzdCkgdGhlIGZv
cm1hdC1sZXNzIHRleHQgd2lsbCAKLSAgICAvLyBiZSBlbXB0eS4gRWFybHkgcmV0dXJuIHNpbmNl
IHdlIGRvbid0IG5lZWQgdG8gZG8gYW55IG9mIHRoZSB3b3JrIHRoYXQgZm9sbG93cyBhbmQKLSAg
ICAvLyB0byBhdm9pZCB0aGUgQVNTRVJUIHRoYXQgZmlyZXMgaWYgaW5wdXQoLi4uKSBpcyBjYWxs
ZWQgd2l0aCBhbiBlbXB0eSBTdHJpbmcuCi0gICAgaWYgKHN0cmluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBJbnNlcnQgdGhlIGNvbnRlbnQgd2l0aCB0aGUgZGVm
YXVsdCBzdHlsZS4KLSAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzU3OTQzODI+IFJlbW92ZUZv
cm1hdCBkb2Vzbid0IGFsd2F5cyByZXNldCB0ZXh0IGFsaWdubWVudAotICAgIGZyYW1lLT5zZWxl
Y3Rpb24oKS0+c2V0VHlwaW5nU3R5bGUoZGVmYXVsdFN0eWxlLnJlbGVhc2UoKSk7Ci0gICAgCi0g
ICAgaW5wdXRUZXh0KHN0cmluZywgdHJ1ZSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUo
QXBwbHlTdHlsZUNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBkZWZhdWx0U3R5bGUuZ2V0KCks
IGlzRWxlbWVudEZvclJlbW92ZUZvcm1hdENvbW1hbmQsIGVkaXRpbmdBY3Rpb24oKSkpOwogfQog
CiB9CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA3MDI3MSkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEwLTEwLTIxICBSeW9zdWtlIE5pd2Eg
IDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIHJlbW92ZUZvcm1hdCBuZWVkcyB0byBiZSByZWltcGxlbWVudGVkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MzAxNworCisgICAg
ICAgICogZWRpdGluZy9leGVjQ29tbWFuZC8xOTQwMy1leHBlY3RlZC50eHQ6IGhyIGVsZW1lbnQg
aXMgbm8gbG9uZ2VyIHJlbW92ZWQgZXJyb25lb3VzbHkuCisgICAgICAgICogZWRpdGluZy9leGVj
Q29tbWFuZC8xOTQwMy5odG1sOiBVcGRhdGVkIHRoZSB0ZXN0IGRlc2NyaXB0aW9uLgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvNDc4NjQwNC0xLWV4cGVjdGVkLnR4dDogQ2hhbmdlIGlu
IHRleHQgbm9kZXMgYnV0IGlkZW50aWNhbCByZW5kZXJpbmcuCisgICAgICAgICogZWRpdGluZy9l
eGVjQ29tbWFuZC80Nzg2NDA0LTItZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0
aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODgtZXhwZWN0ZWQudHh0OiBQcmVzZXJ2ZXMgYW5jaG9yIGVs
ZW1lbnQgb24gUmVtb3ZlRm9ybWF0LgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvNDky
MDQ4OC5odG1sOiBVcGRhdGVkIHRoZSB0ZXN0IGRlc2NyaXB0aW9uLgorICAgICAgICAqIGVkaXRp
bmcvZXhlY0NvbW1hbmQvNDkyMDc0Mi0xLWV4cGVjdGVkLnR4dDogUHJlc2VydmVzIGRpdiBlbGVt
ZW50cy4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kLzUwNDk2NzEuaHRtbDogVXBkYXRl
ZCB0aGUgdGVzdCB0byBkdW1wIHR3aWNlIGJlZm9yZSBhbmQgYWZ0ZXIgUmVtb3ZlRm9ybWF0Lgor
ICAgICAgICBUaGlzIHdhcyBhIHRlc3QgdG8gZW5zdXJlIFdlYktpdCByZW1vdmVzIGFuY2hvciBl
bGVtZW50cyBidXQgd2Ugbm8gbG9uZ2VyIHJlbW92ZXMgYW5jaG9yIGVsZW1lbnRzLgorICAgICAg
ICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZWRpdGluZy9leGVjQ29tbWFuZC81NTczODc5Lmh0bWw6IFVwZGF0ZWQgdGhlIHRlc3QgZGVzY3Jp
cHRpb24gYmVjYXVzZSBXZWJLaXQgbm8gbG9uZ2VyIHJlbW92ZXMKKyAgICAgICAgbGlzdHMgb24g
UmVtb3ZlRm9ybWF0LgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvNTU3Mzg3OS1leHBl
Y3RlZC50eHQ6CisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC81NzcwODM0LTEtZXhwZWN0
ZWQudHh0OiBSZW1vdmVkIHJlZHVuZGFudCB0ZXh0LWFsaWduIHByb3BlcnR5IHZhbHVlLgorICAg
ICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1lbGVtZW50cy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1h
dC1lbGVtZW50cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3Jl
bW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMu
aHRtbDogQWRkZWQuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0
dGluZy0yLWV4cGVjdGVkLnR4dDogQ2hhbmdlIGluIHRleHQgbm9kZXMgYnV0IGlkZW50aWNhbCBy
ZW5kZXJpbmcuCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0dGlu
Zy1leHBlY3RlZC50eHQ6IFdlYktpdCBubyBsb25nZXIgcmVtb3ZlcyBhbmNob3IsIHRhYmxlLAor
ICAgICAgICB0Ym9keSwgdHIsIGFuZCB0ZCBlbGVtZW50cy4KKyAgICAgICAgKiBlZGl0aW5nL2V4
ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLmpz
OiBBZGRlZC4KKyAgICAgICAgKHRlc3RSZW1vdmVGb3JtYXQpOgorICAgICAgICAoc2VsZWN0QWxs
KToKKyAgICAgICAgKHNlbGVjdFNlY29uZFdvcmQpOgorICAgICAgICAoc2VsZWN0Rmlyc3RUd29X
b3Jkcyk6CisgICAgICAgIChzZWxlY3RMYXN0VHdvV29yZHMpOgorICAgICAgICAoc2VsZWN0TGFz
dFdvcmQpOgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3RvZ2ds
ZS1saW5rLmpzOiBBbmNob3Igd3JhcHMgZGl2IGluc3RlYWQgb2YgZGl2IHdyYXBwaW5nIGFuY2hv
ci4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3NjcmlwdC10ZXN0cy90b2dnbGUtdW5s
aW5rLmpzOiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5r
LWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9leGVjQ29tbWFuZC90b2dn
bGUtdW5saW5rLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9leGVjQ29t
bWFuZC91bmxpbmstZXhwZWN0ZWQudHh0OiBpIHdyYXBzIGRpdiBpbnN0ZWFkIG9mIGkgd3JhcHBp
bmcgYW5jaG9yLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3NwYWNlLWFmdGVyLXJlbW92
ZWZvcm1hdC1leHBlY3RlZC50eHQ6IEVkaXRpbmcgZGVsZWdhdGUgY2hhbmdlLgorCiAyMDEwLTEw
LTIxICBKdWxpZSBQYXJlbnQgIDxqcGFyZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBUb255IENoYW5nLgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC8xOTQwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC8xOTQwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC8xOTQwMy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMiArMSwyIEBACi1UaGlzIHRlc3RzIGZvciBhbiBBU1NFUlQgZHVyaW5nIGEgUmVt
b3ZlRm9ybWF0IGNhbGwgd2hlbiBpdCdzIGNhbGxlZCBvbiBhIHNlbGVjdGlvbiBjb250YWluaW5n
IG9ubHkgYSBob3Jpem9udGFsIHJ1bGUuIEl0IHNob3VsZCBub3QgQVNTRVJULiBCdWc6IEl0IHNo
b3VsZCBhbHNvIG5vdCByZW1vdmUgdGhlIGhvcml6b250YWwgcnVsZS4KLTxicj4KK1RoaXMgdGVz
dHMgZm9yIGFuIEFTU0VSVCBkdXJpbmcgYSBSZW1vdmVGb3JtYXQgY2FsbCB3aGVuIGl0J3MgY2Fs
bGVkIG9uIGEgc2VsZWN0aW9uIGNvbnRhaW5pbmcgb25seSBhIGhvcml6b250YWwgcnVsZS4gSXQg
c2hvdWxkIG5vdCBBU1NFUlQuCis8aHI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kLzE5NDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVj
Q29tbWFuZC8xOTQwMy5odG1sCShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvMTk0MDMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAK
LTxkaXYgaWQ9ImRlc2NyaXB0aW9uIj5UaGlzIHRlc3RzIGZvciBhbiBBU1NFUlQgZHVyaW5nIGEg
UmVtb3ZlRm9ybWF0IGNhbGwgd2hlbiBpdCdzIGNhbGxlZCBvbiBhIHNlbGVjdGlvbiBjb250YWlu
aW5nIG9ubHkgYSBob3Jpem9udGFsIHJ1bGUuICBJdCBzaG91bGQgbm90IEFTU0VSVC4gIEJ1Zzog
SXQgc2hvdWxkIGFsc28gbm90IHJlbW92ZSB0aGUgaG9yaXpvbnRhbCBydWxlLjwvZGl2PgorPGRp
diBpZD0iZGVzY3JpcHRpb24iPlRoaXMgdGVzdHMgZm9yIGFuIEFTU0VSVCBkdXJpbmcgYSBSZW1v
dmVGb3JtYXQgY2FsbCB3aGVuIGl0J3MgY2FsbGVkIG9uIGEgc2VsZWN0aW9uIGNvbnRhaW5pbmcg
b25seSBhIGhvcml6b250YWwgcnVsZS4gIEl0IHNob3VsZCBub3QgQVNTRVJULjwvZGl2PgogPGRp
diBpZD0iZWRpdCIgY29udGVudEVkaXRhYmxlPSJ0cnVlIj48aHI+PC9kaXY+CiAKIDxzY3JpcHQ+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2
NDA0LTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvZXhlY0NvbW1hbmQvNDc4NjQwNC0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
Myw0ICszLDYgQEAgVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgcGVyZm9ybWluZyB0aAogfCAg
IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKIHwgICBpZD0iZGl2IgogfCAgIHN0eWxlPSJmb250LXdl
aWdodDogbm9ybWFsOyBjb2xvcjogYmxhY2s7IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9v
IGJhciBiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5mb28g
IgorfCAgICJiYXIiCit8ICAgIiBiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ3ODY0MDQtMi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80Nzg2NDA0LTItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
NDc4NjQwNC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0ICsyLDUgQEAgVGhp
cyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgcGVyZm9ybWluZyB0aAogfCA8ZGl2PgogfCAgIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSIKIHwgICBpZD0iZGl2IgotfCAgICI8I3NlbGVjdGlvbi1hbmNob3I+
Zm9vIGJhciBiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5m
b28iCit8ICAgIiBiYXIgYmF6PCNzZWxlY3Rpb24tZm9jdXM+IgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNDg4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDQ4OC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSwxMiBAQAotVGhpcyB0ZXN0cyBm
b3IgYSBidWcgaW4gR01haWwncyBFZGl0b3IsIHRoZXkgdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbnRl
bnRzIG9mIGEgcmFuZ2UgdGhhdCBoYXMgaGFkIGl0J3MgY29udGVudHMgcmVtb3ZlZCBmcm9tIHRo
ZSBkb2N1bWVudCBieSBhbiBlZGl0aW5nIGNvbW1hbmQuICBZb3Ugc2hvdWxkIHNlZSAnZG9nZm9v
ZCcgdW5zdHlsZWQgYmVsb3cuCitUaGlzIHRlc3RzIGZvciBhIGJ1ZyBpbiBHTWFpbCdzIEVkaXRv
ciwgdGhleSB0cnkgdG8gZXh0cmFjdCB0aGUgY29udGVudHMgb2YgYSByYW5nZSB0aGF0IGhhcyBo
YWQgaXQncyBjb250ZW50cyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJ5IGFuIGVkaXRpbmcg
Y29tbWFuZC4gIFNpbmNlIHRoZSBidWcgNDMwMTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IHJl
bW92ZSBhbmNob3IgZWxlbWVudHMsIGRpdiBzaG91bGQgYmUgZW1wdHkgYWZ0ZXIgdGhlIGV4dHJh
Y3Rpb24uIFdlIGN1cnJlbnRseSBsZWF2ZSBhbmNob3IgZWxlbWVudCBpbiB0aGUgZGl2IGR1ZSB0
byB0aGUgQnVnIDQ3OTE2LgogCiBBZnRlciByZW1vdmVGb3JtYXQ6Ci18ICI8I3NlbGVjdGlvbi1h
bmNob3I+ZG9nZm9vZDwjc2VsZWN0aW9uLWZvY3VzPiIKK3wgIjwjc2VsZWN0aW9uLWFuY2hvcj5k
b2ciCit8IDxhPgorfCAgIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iCit8ICAgImZvb2Q8
I3NlbGVjdGlvbi1mb2N1cz4iCiAKIEFmdGVyIGV4dHJhY3RDb250ZW50cygpOgotfCAiPCNzZWxl
Y3Rpb24tYW5jaG9yPmRvZ2Zvb2Q8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIiCit8IDxhPgorfCAg
IGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzQ5MjA0ODguaHRtbAkod29ya2luZyBjb3B5KQpAQCAt
NSw3ICs1LDcgQEAKIDxkaXYgaWQ9ImRpdiIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj5kb2c8YSBo
cmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj5mb29kPC9hPjwvZGl2PgogPHNjcmlwdD4KIAot
TWFya3VwLmRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGZvciBhIGJ1ZyBpbiBHTWFpbCdzIEVkaXRv
ciwgdGhleSB0cnkgdG8gZXh0cmFjdCB0aGUgY29udGVudHMgb2YgYSByYW5nZSB0aGF0IGhhcyBo
YWQgaXQncyBjb250ZW50cyByZW1vdmVkIGZyb20gdGhlIGRvY3VtZW50IGJ5IGFuIGVkaXRpbmcg
Y29tbWFuZC4gIFlvdSBzaG91bGQgc2VlICdkb2dmb29kJyB1bnN0eWxlZCBiZWxvdy4iKTsKK01h
cmt1cC5kZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyBmb3IgYSBidWcgaW4gR01haWwncyBFZGl0b3Is
IHRoZXkgdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbnRlbnRzIG9mIGEgcmFuZ2UgdGhhdCBoYXMgaGFk
IGl0J3MgY29udGVudHMgcmVtb3ZlZCBmcm9tIHRoZSBkb2N1bWVudCBieSBhbiBlZGl0aW5nIGNv
bW1hbmQuICBTaW5jZSB0aGUgYnVnIDQzMDE3IHJlcXVpcmVzIFdlYktpdCBkb2VzIG5vdCByZW1v
dmUgYW5jaG9yIGVsZW1lbnRzLCBkaXYgc2hvdWxkIGJlIGVtcHR5IGFmdGVyIHRoZSBleHRyYWN0
aW9uLiBXZSBjdXJyZW50bHkgbGVhdmUgYW5jaG9yIGVsZW1lbnQgaW4gdGhlIGRpdiBkdWUgdG8g
dGhlIEJ1ZyA0NzkxNi4iKTsKIAogdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJk
aXYiKTsKIHZhciB0ZXh0ID0gZGl2LmZpcnN0Q2hpbGQ7CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kLzQ5MjA3NDItMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC80OTIwNzQyLTEtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNDkyMDc0Mi0x
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIFRoaXMgdGVzdHMg
Zm9yIGEgYnVnIHdoZXJlIFJlbW92ZUZvcm1hdCB3b3VsZCByZXZlcnNlIHRoZSBvcmRlciBvZiBw
YXJhZ3JhcGhzLiBCdWc6IHRoZSBjYXJldCBpcyBub3Qgb24gdGhlIGxhc3QgbGluZSBidXQgaXQg
c2hvdWxkIGJlLgorfCAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKIHwgPGRpdj4KLXwgICAiPCNz
ZWxlY3Rpb24tYW5jaG9yPmZvbyIKLXwgICA8YnI+CiB8ICAgPGJyPgorfCA8ZGl2PgogfCAgIDwj
c2VsZWN0aW9uLWZvY3VzPgogfCAgIDxicj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvNTA0OTY3MS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy9leGVjQ29tbWFuZC81MDQ5NjcxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwODYp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kLzUwNDk2NzEtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIgKzEsMTEgQEAKLVRoaXMgdGVzdHMgZm9yIGEgYnVnIHdo
ZXJlIFJlbW92ZSBGb3JtYXQgd291bGQgZmFpbCB0byByZW1vdmUgbGlua3MgdGhhdCB3ZXJlIGZ1
bGx5IHNlbGVjdGVkLiAgWW91IHNob3VsZCBzZWUgcGxhaW4gdGV4dCBvbmx5IGluIHRoZSBlZGl0
YWJsZSByZWdpb24gYmVsb3cuCi18ICI8I3NlbGVjdGlvbi1hbmNob3I+VGhpcyBzaG91bGRuJ3Qg
YmUgYSBsaW5rIG9yIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tZm9jdXM+IgorVGhpcyB0ZXN0cyB3
YXMgYWRkZWQgZm9yIGEgYnVnIHdoZXJlIFJlbW92ZSBGb3JtYXQgd291bGQgZmFpbCB0byByZW1v
dmUgbGlua3MgdGhhdCB3ZXJlIGZ1bGx5IHNlbGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIHRoZSBi
dWcgNDMwMTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhbmNob3IgZWxlbWVudHMs
IFJlbW92ZUZvcm1hdCBzaG91bGQgTk9UIHJlbW92ZSBhbmNob3IgZWxlbWVudHMuCisKK0JlZm9y
ZSBSZW1vdmVGb3JtYXQ6Cit8IDxhPgorfCAgIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS8i
Cit8ICAgIjwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzIHNob3VsZG4ndCBiZSBhIGxpbmsgb3IgdW5k
ZXJsaW5lZC48I3NlbGVjdGlvbi1mb2N1cz4iCisKK0FmdGVyIFJlbW92ZUZvcm1hdDoKK3wgPGE+
Cit8ICAgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tLyIKK3wgICAiPCNzZWxlY3Rpb24tYW5j
aG9yPlRoaXMgc2hvdWxkbid0IGJlIGEgbGluayBvciB1bmRlcmxpbmVkLjwjc2VsZWN0aW9uLWZv
Y3VzPiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTA0OTY3MS5o
dG1sCShyZXZpc2lvbiA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
NTA0OTY3MS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC01LDEzICs1LDE4IEBACiA8ZGl2IGlkPSJk
aXYiIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSI+PGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29t
LyI+VGhpcyBzaG91bGRuJ3QgYmUgYSBsaW5rIG9yIHVuZGVybGluZWQuPC9hPjwvZGl2PgogPHNj
cmlwdD4KIAorTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHdhcyBhZGRlZCBmb3IgYSBi
dWcgd2hlcmUgUmVtb3ZlIEZvcm1hdCB3b3VsZCBmYWlsIHRvIHJlbW92ZSBsaW5rcyB0aGF0IHdl
cmUgZnVsbHkgc2VsZWN0ZWQuJworICsgJyBIb3dldmVyLCBiZWNhdXNlIHRoZSBidWcgNDMwMTcg
cmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IHJlbW92ZSBhbmNob3IgZWxlbWVudHMsIFJlbW92ZUZv
cm1hdCBzaG91bGQgTk9UIHJlbW92ZSBhbmNob3IgZWxlbWVudHMuJyk7CisKIHZhciBkaXYgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CiBkaXYuZm9jdXMoKTsKIGRvY3VtZW50LmV4
ZWNDb21tYW5kKCJTZWxlY3RBbGwiKTsKKworTWFya3VwLmR1bXAoZGl2LCAnQmVmb3JlIFJlbW92
ZUZvcm1hdCcpOworCiBkb2N1bWVudC5leGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0Iik7CiAKLU1h
cmt1cC5kZXNjcmlwdGlvbignVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgUmVtb3ZlIEZvcm1h
dCB3b3VsZCBmYWlsIHRvIHJlbW92ZSBsaW5rcyB0aGF0IHdlcmUgZnVsbHkgc2VsZWN0ZWQuICBZ
b3Ugc2hvdWxkIHNlZSBwbGFpbiB0ZXh0IG9ubHkgaW4gdGhlIGVkaXRhYmxlIHJlZ2lvbiBiZWxv
dy4nKTsKLU1hcmt1cC5kdW1wKGRpdik7CitNYXJrdXAuZHVtcChkaXYsICdBZnRlciBSZW1vdmVG
b3JtYXQnKTsKIAogPC9zY3JpcHQ+CiA8L2JvZHk+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kLzU1NzM4NzktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTU3Mzg3OS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcw
MDg2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NTczODc5LWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKLVRoaXMgdGVzdHMgdG8gbWFrZSBz
dXJlIHRoYXQgUmVtb3ZlRm9ybWF0IGRlc3Ryb3lzIGxpc3RzIGlmIHRoZXkgYXJlIGZ1bGx5IHNl
bGVjdGVkLiAgWW91IHNob3VsZCBzZWUgZm9vPGJyPmJhciBiZWxvdy4KLXwgPGRpdj4KLXwgICAi
PCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKLXwgICA8YnI+Ci18ICAgImJhcjwjc2VsZWN0aW9uLWZv
Y3VzPiIKK1RoaXMgdGVzdHMgdG8gbWFrZSBzdXJlIHRoYXQgUmVtb3ZlRm9ybWF0IGRlc3Ryb3lz
IGxpc3RzIGlmIHRoZXkgYXJlIGZ1bGx5IHNlbGVjdGVkLiBIb3dldmVyLCBiZWNhdXNlIHRoZSBi
dWcgNDMwMTcgcmVxdWlyZXMgV2ViS2l0IGRvZXMgbm90IGRlc3Ryb3kgbGlzdHMsICJmb28iIGFu
ZCAiYmFyIiBzaG91bGQgYmUgaW4gYSBzZXBhcmF0ZSBsaXN0IGl0ZW0uCit8IDx1bD4KK3wgICA8
bGk+Cit8ICAgICAiPCNzZWxlY3Rpb24tYW5jaG9yPmZvbyIKK3wgICA8bGk+Cit8ICAgICAiYmFy
PCNzZWxlY3Rpb24tZm9jdXM+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC81NTczODc5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC81NTczODc5Lmh0bWwJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC81NTczODc5Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTExLDcgKzExLDgg
QEAgZGl2LmZvY3VzKCk7CiBkb2N1bWVudC5leGVjQ29tbWFuZCgiU2VsZWN0QWxsIik7CiBkb2N1
bWVudC5leGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0Iik7CiAKLU1hcmt1cC5kZXNjcmlwdGlvbign
VGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBSZW1vdmVGb3JtYXQgZGVzdHJveXMgbGlzdHMg
aWYgdGhleSBhcmUgZnVsbHkgc2VsZWN0ZWQuICBZb3Ugc2hvdWxkIHNlZSBmb288YnI+YmFyIGJl
bG93LicpOworTWFya3VwLmRlc2NyaXB0aW9uKCdUaGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0
IFJlbW92ZUZvcm1hdCBkZXN0cm95cyBsaXN0cyBpZiB0aGV5IGFyZSBmdWxseSBzZWxlY3RlZC4n
CisgKyAnIEhvd2V2ZXIsIGJlY2F1c2UgdGhlIGJ1ZyA0MzAxNyByZXF1aXJlcyBXZWJLaXQgZG9l
cyBub3QgZGVzdHJveSBsaXN0cywgImZvbyIgYW5kICJiYXIiIHNob3VsZCBiZSBpbiBhIHNlcGFy
YXRlIGxpc3QgaXRlbS4nKTsKIE1hcmt1cC5kdW1wKGRpdik7CiAKIDwvc2NyaXB0PgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC81NzcwODM0LTEtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvNTc3MDgzNC0xLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWND
b21tYW5kLzU3NzA4MzQtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNiArMiw2
IEBAIFRoaXMgdGVzdHMgZm9yIGEgY3Jhc2ggd2hlbiByZW1vdmluZyBmb3IKIAogCiA8ZGl2IHN0
eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsiPgotPGRpdiBzdHlsZT0idGV4dC1hbGlnbjogLXdlYmtp
dC1hdXRvOyI+Zm9vPGJyPmJhcjwvZGl2PgorPGRpdj5mb288YnI+YmFyPC9kaXY+CiA8L2Rpdj4K
IApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVs
ZW1lbnRzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitSZW1vdmVkCith
Y3JvbnltLCBiLCBiZG8sIGJpZywgY2l0ZSwgY29kZSwgZGZuLCBlbSwgZm9udCwgaSwgaW5zLCBr
YmQsIG5vYnIsIHEsIHMsIHNhbXAsIHNtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0
LCB1LCB2YXIKK1ByZXNlcnZlZAorbm9zY3JpcHQsIGEsIGFiYnIsIGFkZHJlc3MsIGFwcGxldCwg
YXJlYSwgYXJ0aWNsZSwgYXNpZGUsIGF1ZGlvLCBiYXNlLCBiYXNlZm9udCwgYmdzb3VuZCwgYmxv
Y2txdW90ZSwgYm9keSwgYnIsIGJ1dHRvbiwgY2FudmFzLCBjYXB0aW9uLCBjZW50ZXIsIGNvbCwg
Y29sZ3JvdXAsIGNvbW1hbmQsIGRhdGFncmlkLCBkYXRhbGlzdCwgZGNlbGwsIGRjb2wsIGRkLCBk
ZWwsIGRldGFpbHMsIGRpciwgZGl2LCBkbCwgZHJvdywgZHQsIGVtYmVkLCBmaWVsZHNldCwgZmln
Y2FwdGlvbiwgZmlndXJlLCBmb290ZXIsIGZvcm0sIGZyYW1lLCBmcmFtZXNldCwgaDEsIGgyLCBo
MywgaDQsIGg1LCBoNiwgaGVhZCwgaGVhZGVyLCBoZ3JvdXAsIGhyLCBodG1sLCBpZnJhbWUsIGlt
YWdlLCBpbWcsIGlucHV0LCBpc2luZGV4LCBsYWJlbCwgbGF5ZXIsIGxlZ2VuZCwgbGksIGxpbmss
IGxpc3RpbmcsIG1hcCwgbWFyaywgbWFycXVlZSwgbWVudSwgbWV0YSwgbWV0ZXIsIG5hdiwgbm9l
bWJlZCwgbm9mcmFtZXMsIG5vbGF5ZXIsIG5vc2NyaXB0LCBvYmplY3QsIG9sLCBvcHRncm91cCwg
b3B0aW9uLCBwLCBwYXJhbSwgcGxhaW50ZXh0LCBwcmUsIHByb2dyZXNzLCBycCwgcnQsIHJ1Ynks
IHNjcmlwdCwgc2VjdGlvbiwgc2VsZWN0LCBzb3VyY2UsIHNwYW4sIHN0eWxlLCBzdW1tYXJ5LCB0
YWJsZSwgdGJvZHksIHRkLCB0ZXh0YXJlYSwgdGZvb3QsIHRoLCB0aGVhZCwgdGl0bGUsIHRyLCB0
cmFjaywgdWwsIHZpZGVvLCB3YnIsIHhtcAorRXhjZXB0aW9ucwora2V5Z2VuICg8a2V5Z2VuPjxv
cHRpb24+MjA0OCAoSGlnaCBHcmFkZSk8L29wdGlvbj48b3B0aW9uPjEwMjQgKE1lZGl1bSBHcmFk
ZSk8L29wdGlvbj48b3B0aW9uPjUxMiAoTG93IEdyYWRlKTwvb3B0aW9uPmhlbGxvPTE7PC9rZXln
ZW4+IHdlYmtpdD0yOykKKwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9y
ZW1vdmUtZm9ybWF0LWVsZW1lbnRzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LWVsZW1lbnRzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXQtZWxlbWVu
dHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgaWQ9InRlc3QiIGNvbnRlbnRlZGl0YWJsZT48L2Rpdj4KKzxk
bD4KKzxkdD5SZW1vdmVkPC9kdD4KKzxkZCBpZD0icmVtb3ZlZCI+PC9kZD4KKzxkdD5QcmVzZXJ2
ZWQ8L2R0PgorPGRkIGlkPSJwcmVzZXJ2ZWQiPjwvZGQ+Cis8ZHQ+RXhjZXB0aW9uczwvZHQ+Cis8
ZGQgaWQ9ImV4Y2VwdGlvbnMiPjwvZGQ+Cis8L2RsPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgorCitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKwordmFyIGVsZW1lbnRzID0gWyAibm9zY3JpcHQi
LCAiYSIsICJhYmJyIiwgImFjcm9ueW0iLCAiYWRkcmVzcyIsICJhcHBsZXQiLCAiYXJlYSIsICJh
cnRpY2xlIiwgImFzaWRlIiwgImF1ZGlvIiwKKyJiIiwgImJhc2UiLCAiYmFzZWZvbnQiLCAiYmRv
IiwgImJnc291bmQiLCAiYmlnIiwgImJsb2NrcXVvdGUiLCAiYm9keSIsICJiciIsICJidXR0b24i
LAorImNhbnZhcyIsIFsidGFibGUiLCAiY2FwdGlvbiJdLCAiY2VudGVyIiwgImNpdGUiLCAiY29k
ZSIsIFsidGFibGUiLCAiY29sIl0sIFsidGFibGUiLCAiY29sZ3JvdXAiXSwgImNvbW1hbmQiLAor
ImRhdGFncmlkIiwgImRhdGFsaXN0IiwgImRjZWxsIiwgImRjb2wiLCAiZGQiLCAiZGVsIiwgImRl
dGFpbHMiLCAiZGZuIiwgImRpciIsICJkaXYiLCAiZGwiLCAiZHJvdyIsICJkdCIsCisiZW0iLCAi
ZW1iZWQiLCAiZmllbGRzZXQiLCAiZmlnY2FwdGlvbiIsICJmaWd1cmUiLCAiZm9udCIsICJmb290
ZXIiLCAiZm9ybSIsICJmcmFtZSIsICJmcmFtZXNldCIsCisiaDEiLCAiaDIiLCAiaDMiLCAiaDQi
LCAiaDUiLCAiaDYiLCAiaGVhZCIsICJoZWFkZXIiLCAiaGdyb3VwIiwgImhyIiwgImh0bWwiLAor
ImkiLCAiaWZyYW1lIiwgImltYWdlIiwgImltZyIsICJpbnB1dCIsICJpbnMiLCAiaXNpbmRleCIs
ICJrYmQiLCAia2V5Z2VuIiwgImxhYmVsIiwgImxheWVyIiwgImxlZ2VuZCIsIFsidWwiLCAibGki
XSwgImxpbmsiLCAibGlzdGluZyIsCisibWFwIiwgIm1hcmsiLCAibWFycXVlZSIsICJtZW51Iiwg
Im1ldGEiLCAibWV0ZXIiLCAibmF2IiwgIm5vYnIiLCAibm9lbWJlZCIsICJub2ZyYW1lcyIsICJu
b2xheWVyIiwgIm5vc2NyaXB0IiwKKyJvYmplY3QiLCAib2wiLCAib3B0Z3JvdXAiLCAib3B0aW9u
IiwgInAiLCAicGFyYW0iLCAicGxhaW50ZXh0IiwgInByZSIsICJwcm9ncmVzcyIsICJxIiwgInJw
IiwgInJ0IiwgInJ1YnkiLAorInMiLCAic2FtcCIsICJzY3JpcHQiLCAic2VjdGlvbiIsICJzZWxl
Y3QiLCAic21hbGwiLCAic291cmNlIiwgInNwYW4iLCAic3RyaWtlIiwgInN0cm9uZyIsICJzdHls
ZSIsICJzdWIiLCAic3VtbWFyeSIsICJzdXAiLAorInRhYmxlIiwgWyJ0YWJsZSIsICJ0Ym9keSJd
LCBbInRhYmxlIiwgInRkIl0sICJ0ZXh0YXJlYSIsIFsidGFibGUiLCAidGZvb3QiXSwgWyJ0YWJs
ZSIsICJ0aCJdLCBbInRhYmxlIiwgInRoZWFkIl0sCisidGl0bGUiLCBbInRhYmxlIiwgInRyIl0s
ICJ0cmFjayIsICJ0dCIsICJ1IiwgInVsIiwgInZhciIsICJ2aWRlbyIsICJ3YnIiLCAieG1wIiBd
OworCitmdW5jdGlvbiBhZGRSZXN1bHQoY29udGFpbmVyLCBuYW1lLCBhbm5vdGF0aW9uLCBkZXNj
cmlwdGlvbikKK3sKKyAgICBpZiAoY29udGFpbmVyLmlubmVySFRNTC5sZW5ndGggJiYgIWFubm90
YXRpb24pCisgICAgICAgIGNvbnRhaW5lci5pbm5lckhUTUwgKz0gJywgJzsKKyAgICBjb250YWlu
ZXIuaW5uZXJIVE1MICs9IG5hbWU7CisgICAgaWYgKGFubm90YXRpb24pCisgICAgICAgIGNvbnRh
aW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiICgiICsgYW5ub3RhdGlv
biArICIpIikpOworICAgIGlmIChkZXNjcmlwdGlvbikKKyAgICAgICAgY29udGFpbmVyLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRlc2NyaXB0aW9uKSk7CisgICAgaWYgKGFu
bm90YXRpb24gfHwgZGVzY3JpcHRpb24pCisgICAgICAgIGNvbnRhaW5lci5hcHBlbmRDaGlsZChk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdicicpKTsKK30KKworZnVuY3Rpb24gY29udGFpbnMobm9k
ZSwgZGVzY2VuZGFudCkKK3sKKyAgICB3aGlsZSAoZGVzY2VuZGFudCAmJiBkZXNjZW5kYW50ICE9
IG5vZGUgJiYgZGVzY2VuZGFudC5wYXJlbnROb2RlKQorICAgICAgICBkZXNjZW5kYW50ID0gZGVz
Y2VuZGFudC5wYXJlbnROb2RlOworICAgIHJldHVybiBkZXNjZW5kYW50ID09IG5vZGU7Cit9CisK
K3ZhciB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rlc3QnKTsKK2ZvciAodmFyIGkg
PSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsKKyAgICB2YXIgZWxlbWVudE5hbWU7Cisg
ICAgdmFyIGluc3RhbmNlID0gbnVsbDsKKyAgICB2YXIgY29udGFpbmVyID0gbnVsbDsKKyAgICBp
ZiAodHlwZW9mIGVsZW1lbnRzW2ldID09ICdzdHJpbmcnKSB7CisgICAgICAgIGVsZW1lbnROYW1l
ID0gZWxlbWVudHNbaV07CisgICAgICAgIGluc3RhbmNlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dChlbGVtZW50TmFtZSkKKyAgICAgICAgY29udGFpbmVyID0gaW5zdGFuY2U7CisgICAgfSBlbHNl
IHsKKyAgICAgICAgdmFyIGVsZW1lbnRMaXN0ID0gZWxlbWVudHNbaV07CisgICAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgZWxlbWVudExpc3QubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgIHZh
ciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TGlzdFtqXSk7CisgICAgICAg
ICAgICBpZiAoIWNvbnRhaW5lcikKKyAgICAgICAgICAgICAgICBjb250YWluZXIgPSBub2RlOwor
ICAgICAgICAgICAgaWYgKGluc3RhbmNlKQorICAgICAgICAgICAgICAgIGluc3RhbmNlLmFwcGVu
ZENoaWxkKG5vZGUpOworICAgICAgICAgICAgaW5zdGFuY2UgPSBub2RlOworICAgICAgICB9Cisg
ICAgICAgIGVsZW1lbnROYW1lID0gZWxlbWVudExpc3RbZWxlbWVudExpc3QubGVuZ3RoIC0gMV07
CisgICAgfQorICAgIHZhciBkdW1teV90ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoJ2hl
bGxvPTE7Jyk7CisgICAgaWYgKGluc3RhbmNlID09PSB1bmRlZmluZWQpIHsKKyAgICAgICAgYWRk
UmVzdWx0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleGNlcHRpb25zJyksIGVsZW1lbnROYW1l
LCB0ZXN0LmlubmVySFRNTCk7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICB0ZXN0Lmlu
bmVySFRNTCA9ICIiOworICAgIHRyeSB7CisgICAgICAgIGluc3RhbmNlLmFwcGVuZENoaWxkKGR1
bW15X3RleHQpOyAvLyB0aGlzIG1heSBmYWlsIGZvciBub24tY29udGFpbmVyIGVsZW1lbnRzLgor
ICAgIH0gY2F0Y2ggKGVycm9yKSB7IH0KKyAgICB0ZXN0LmFwcGVuZENoaWxkKGNvbnRhaW5lcik7
CisgICAgdGVzdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnIHdlYmtpdD0y
OycpKTsKKyAgICB2YXIgZWMgPSAnJworICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7Cisg
ICAgICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZWxlY3RBbGxDaGlsZHJlbih0ZXN0KTsKKyAg
ICB9IGVsc2UgeworICAgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRS
YW5nZSgpOworICAgICAgICByYW5nZS5tb3ZlVG9FbGVtZW50VGV4dCh0ZXN0LmZpcnN0Q2hpbGQp
OworICAgICAgICB0cnkgeyByYW5nZS5zZWxlY3QoKTsgfQorICAgICAgICBjYXRjaCAoZXJyb3Ip
IHsgZWMgKz0gJyBmYWlsZWQgdG8gc2VsZWN0JzsgfQorICAgIH0KKyAgICBkb2N1bWVudC5leGVj
Q29tbWFuZCgncmVtb3ZlRm9ybWF0JywgZmFsc2UsIG51bGwpOworCisgICAgaWYgKGVjKSB7Cisg
ICAgICAgIGFkZFJlc3VsdChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhjZXB0aW9ucycpLCBl
bGVtZW50TmFtZSwgdGVzdC5pbm5lckhUTUwsIGVjKTsKKyAgICAgICAgY29udGludWU7CisgICAg
fQorCisgICAgaWYgKCF0ZXN0LmZpcnN0Q2hpbGQgfHwgdGVzdC5maXJzdENoaWxkLm5vZGVUeXBl
ID09IDMgLypUZXh0Tm9kZSovKQorICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3JlbW92ZWQnKSwgZWxlbWVudE5hbWUpCisgICAgZWxzZSBpZiAoY29udGFpbnModGVz
dCwgaW5zdGFuY2UpICYmIChpbnN0YW5jZS5pbm5lckhUTUwgPT0gIiIgfHwgaW5zdGFuY2UuaW5u
ZXJIVE1MID09ICJoZWxsbz0xOyIpKQorICAgICAgICBhZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ3ByZXNlcnZlZCcpLCBlbGVtZW50TmFtZSk7CisgICAgZWxzZQorICAgICAgICBh
ZGRSZXN1bHQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4Y2VwdGlvbnMnKSwgZWxlbWVudE5h
bWUsIHRlc3QuaW5uZXJIVE1MKTsKK30KK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdCk7
CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1lbnRzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1m
b3JtYXQtbXVsdGlwbGUtZWxlbWVudHMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVsZW1l
bnRzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNiBAQAorVGhpcyB0ZXN0
cyByZW1vdmluZyBtdWx0aXBsZSBlbGVtZW50cyBieSBSZW1vdmVGb3JtYXQgY29tbWFuZC4KKwor
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGFsbCBv
ZiAiaGVsbG8iIHlpZWxkcyAiaGVsbG8iCitQQVNTIFJlbW92ZUZvcm1hdCBvbiBhbGwgb2YgIjxp
PmhlbGxvPC9pPiA8dT53b3JsZDwvdT4iIHlpZWxkcyAiaGVsbG8gd29ybGQiCitQQVNTIFJlbW92
ZUZvcm1hdCBvbiBhbGwgb2YgIjxiPjx1PmhlbGxvPC91PiB3b3JsZDwvYj4gPGEgaHJlZj0iaHR0
cDovL3dlYmtpdC5vcmcvIj48ZW0+V2ViS2l0PC9lbT48L2E+IiB5aWVsZHMgImhlbGxvIHdvcmxk
IDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+V2ViS2l0PC9hPiIKK1BBU1MgUmVtb3ZlRm9y
bWF0IG9uIHNlY29uZCB3b3JkIG9mICI8Yj48dT5oZWxsbzwvdT4gd29ybGQ8L2I+IDxhIGhyZWY9
Imh0dHA6Ly93ZWJraXQub3JnLyI+PGVtPldlYktpdDwvZW0+PC9hPiIgeWllbGRzICI8Yj48dT5o
ZWxsbzwvdT4gPC9iPndvcmxkIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+PGVtPldlYktp
dDwvZW0+PC9hPiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIHNlY29uZCB3b3JkIG9mICI8c3ViPjx0
dD5oZWxsbyB3b3JsZCBXZWJLaXQ8L3R0Pjwvc3ViPiIgeWllbGRzICI8c3ViPjx0dD5oZWxsbyA8
L3R0Pjwvc3ViPndvcmxkPHN1Yj48dHQ+IFdlYktpdDwvdHQ+PC9zdWI+IgorUEFTUyBSZW1vdmVG
b3JtYXQgb24gc2Vjb25kIHdvcmQgb2YgIjxxPjxpbnM+PHZhcj5oZWxsbyB3b3I8L3Zhcj5sZDwv
aW5zPiBXZWJLaXQ8L3E+IiB5aWVsZHMgIjxxPjxpbnM+PHZhcj5oZWxsbyA8L3Zhcj48L2lucz48
L3E+d29ybGQ8cT4gV2ViS2l0PC9xPiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGxhc3Qgd29yZCBv
ZiAiPGI+aGVsbG8gPGRmbj53b3JsZCA8a2JkPldlYktpdDwva2JkPjwvZGZuPjwvYj4iIHlpZWxk
cyAiPGI+aGVsbG8gPGRmbj53b3JsZCA8L2Rmbj48L2I+V2ViS2l0IgorUEFTUyBSZW1vdmVGb3Jt
YXQgb24gc2Vjb25kIHdvcmQgb2YgIjxiPmhlbGxvIDxkZm4+d29ybGQgPGtiZD5XZWJLaXQ8L2ti
ZD48L2Rmbj48L2I+IiB5aWVsZHMgIjxiPmhlbGxvIDwvYj53b3JsZDxiPjxkZm4+IDxrYmQ+V2Vi
S2l0PC9rYmQ+PC9kZm4+PC9iPiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGZpcnN0IHR3byB3b3Jk
cyBvZiAiPGNvZGU+aGVsbG8gPHN0cm9uZz53b3JsZCBXZWJLaXQ8L3N0b3JuZz48L2NvZGU+IiB5
aWVsZHMgImhlbGxvIHdvcmxkPGNvZGU+PHN0cm9uZz4gV2ViS2l0PC9zdHJvbmc+PC9jb2RlPiIK
K1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGZpcnN0IHR3byB3b3JkcyBvZiAiPGFjcm9ueW0+PHR0Pjxt
YXJrPjxzYW1wPmhlbGxvPC9zYW1wPjwvbWFyaz4gd29ybGQgPHN1Yj5XZWJLaXQ8L3N1Yj48L3R0
PjwvYWNyb255bT4iIHlpZWxkcyAiPG1hcms+aGVsbG88L21hcms+IHdvcmxkPGFjcm9ueW0+PHR0
PiA8c3ViPldlYktpdDwvc3ViPjwvdHQ+PC9hY3JvbnltPiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9u
IGxhc3QgdHdvIHdvcmRzIG9mICI8Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPjxkaXY+V2Vi
S2l0PC9kaXY+IiB5aWVsZHMgIjxkaXY+PGI+aGVsbG8gPC9iPndvcmxkPC9kaXY+PGRpdj5XZWJL
aXQ8L2Rpdj4iCitQQVNTIFJlbW92ZUZvcm1hdCBvbiBsYXN0IHR3byB3b3JkcyBvZiAiPHE+PGI+
PGRpdj5oZWxsbyB3b3JsZDwvZGl2PjwvYj5XZWJLaXQ8L3E+IiB5aWVsZHMgIjxkaXY+PHE+PGI+
aGVsbG8gPC9iPjwvcT53b3JsZDwvZGl2PldlYktpdCIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIHNl
Y29uZCB3b3JkIG9mICI8cT48Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4i
IHlpZWxkcyAiPGRpdj48cT48Yj5oZWxsbyA8L2I+PC9xPndvcmxkPC9kaXY+PHE+V2ViS2l0PC9x
PiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIGFsbCBvZiAiPGkgc3R5bGU9ImZvbnQtd2VpZ2h0OmJv
bGQ7Ij5oZWxsbzwvaT4gPHU+d29ybGQ8L3U+IiB5aWVsZHMgImhlbGxvIHdvcmxkIgorUEFTUyBS
ZW1vdmVGb3JtYXQgb24gc2Vjb25kIHdvcmQgb2YgIjxmb250IGNvbG9yPSJyZWQiPjxiIHN0eWxl
PSJmb250LXNpemU6IGxhcmdlOyI+PHU+aGVsbG88L3U+IHdvcmxkPC9iPiBXZWJLaXQ8L2ZvbnQ+
IiB5aWVsZHMgIjxmb250IGNvbG9yPSJyZWQiPjxiIHN0eWxlPSJmb250LXNpemU6IGxhcmdlOyI+
PHU+aGVsbG88L3U+IDwvYj48L2ZvbnQ+d29ybGQ8Zm9udCBjb2xvcj0icmVkIj4gV2ViS2l0PC9m
b250PiIKK1BBU1MgUmVtb3ZlRm9ybWF0IG9uIHNlY29uZCB3b3JkIG9mICI8Zm9udCBzaXplPSI1
Ij48aT48dSBzdHlsZT0iZm9udC1zaXplOiBzbWFsbDsiPmhlbGxvPC91PiB3b3JsZDwvaT48Zm9u
dCBzaXplPSIzIj4gV2ViS2l0PC9mb250PjwvZm9udD4iIHlpZWxkcyAiPGZvbnQgc2l6ZT0iNSI+
PGk+PHUgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGw7Ij5oZWxsbzwvdT4gPC9pPjwvZm9udD53b3Js
ZDxmb250IHNpemU9IjUiPjxmb250IHNpemU9IjMiPiBXZWJLaXQ8L2ZvbnQ+PC9mb250PiIKK1BB
U1MgUmVtb3ZlRm9ybWF0IG9uIHNlY29uZCB3b3JkIG9mICI8c3VwPjxkaXYgc3R5bGU9InRleHQt
ZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBmb250LXNpemU6IGxhcmdlOyI+aGVsbG8gPGRmbiBzdHls
ZT0iZm9udC1zaXplOiBub3JtYWw7Ij53b3JsZDwvZGZuPjwvZGl2PiBXZWJLaXQ8L3N1cD4iIHlp
ZWxkcyAiPGRpdj48c3VwPjxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzaXplPSI0Ij48
dT5oZWxsbyA8L3U+PC9mb250Pjwvc3VwPndvcmxkPC9kaXY+PHN1cD4gV2ViS2l0PC9zdXA+Igor
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1l
bGVtZW50cy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVtZW50cy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9ybWF0LW11bHRpcGxlLWVs
ZW1lbnRzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bGluayBy
ZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5
bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3Jl
bW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92
ZS1mb3JtYXR0aW5nLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvcmVtb3ZlLWZvcm1hdHRpbmctMi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9yZW1vdmUtZm9y
bWF0dGluZy0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw0ICs5LDUgQEAgRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkRW5kRWRpdGluZzpXZWJWaWV3RGlk
RW5kRWRpdGluZ05vdGlmaWNhdGlvbgogVGhpcyB0ZXN0cyB0aGF0IFJlbW92ZUZvcm1hdCBub3Qg
b25seSByZW1vdmVzIHN0eWxlIGZyb20gdGhlIHNlbGVjdGVkIHBhcnQgb2YgdGhlIERPTSwgYnV0
IHRoYXQgaXQgYWxzbyBhcHBsaWVzIHRoZSBkb2N1bWVudCBkZWZhdWx0IHN0eWxlIHRvIHRoZSBz
ZWxlY3Rpb24gaWYgdGhhdCdzIG5lY2Vzc2FyeSBpbiBvcmRlciB0byBsZWF2ZSB0aGUgc2VsZWN0
ZWQgdGV4dCB1bnN0eWxlZC4KLXwgIjwjc2VsZWN0aW9uLWFuY2hvcj5UaGlzPCNzZWxlY3Rpb24t
Zm9jdXM+IHRleHQgc2hvdWxkIGxvb2sgdGhlIHNhbWUgYXMgdGhlIHRleHQgYWJvdmUuIgorfCAi
PCNzZWxlY3Rpb24tYW5jaG9yPlRoaXM8I3NlbGVjdGlvbi1mb2N1cz4iCit8ICIgdGV4dCBzaG91
bGQgbG9vayB0aGUgc2FtZSBhcyB0aGUgdGV4dCBhYm92ZS4iCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5n
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL3JlbW92ZS1mb3JtYXR0aW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNCw3ICs0LDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdAog
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9t
IDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IEIgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0xMiwxMSArMTIsMzIgQEAgRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZEVuZEVkaXRpbmc6VwogVGhpcyBpcyBhIHRlc3QgZm9yIGV4ZWNDb21tYW5k
KCJSZW1vdmVGb3JtYXQiKS4gSXQgZGVtb25zdHJhdGVzIGEgYnVnOiBldmVyeXRoaW5nIGluIHRo
ZSBlZGl0YWJsZSByZWdpb24gYmVsb3cgc2hvdWxkIGJlIHNlbGVjdGVkLCBhcyBldmVyeXRoaW5n
IHdhcyBzZWxlY3RlZCBiZWZvcmUgUmVtb3ZlIEZvcm1hdCB3YXMgcGVyZm9ybWVkLgogCiBtYXJr
dXA6Ci18ICI8I3NlbGVjdGlvbi1hbmNob3I+Zm9vYmFyYmF6IgorfCAiCisiCit8ICI8I3NlbGVj
dGlvbi1hbmNob3I+Zm9vIgorfCA8YT4KK3wgICBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20v
IgorfCAgICJiYXIiCit8ICJiYXoiCiB8IDxicj4KLXwgImZvbwliYXIJYmF6IgorfCAiCisiCit8
IDx0YWJsZT4KK3wgICBib3JkZXI9IjEiCit8ICAgPHRib2R5PgorfCAgICAgPHRyPgorfCAgICAg
ICA8dGQ+Cit8ICAgICAgICAgImZvbyIKK3wgICAgICAgPHRkPgorfCAgICAgICAgICJiYXIiCit8
ICAgICAgIDx0ZD4KK3wgICAgICAgICAiYmF6IgorfCAiCisiCit8ICJmb28iCit8ICJiYXIiCit8
ICJiYXo8I3NlbGVjdGlvbi1mb2N1cz4iCiB8IDxicj4KLXwgImZvb2JhcmJhejwjc2VsZWN0aW9u
LWZvY3VzPiIKIHwgIgogIgogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3RvZ2dsZS1saW5rLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gNzAwODYp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS1saW5rLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsOSArMTQsOSBAQCBQQVNTIHNlbGVjdCBmaXJzdCB0
d28gd29yZHMgb2YgImhlbGxvIDxhCiBQQVNTIHNlbGVjdCBmaXJzdCB0d28gd29yZHMgb2YgImhl
bGxvIDxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC1zdHlsZTog
aXRhbGljOyI+PGI+d29ybGQ8L2I+IFdlYktpdDwvYT4iIGFuZCBjcmVhdGVMaW5rIChodHRwOi8v
d2Via2l0Lm9yZy8pIHlpZWxkcyAiPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5oZWxsbyA8
YiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyAiPndvcmxkPC9iPjwvYT48YSBocmVmPSJodHRw
Oi8vdHJhYy53ZWJraXQub3JnLyI+PGk+IFdlYktpdDwvaT48L2E+IgogUEFTUyBzZWxlY3QgbGFz
dCB3b3JkIG9mICJoZWxsbyA8Yj53b3JsZDwvYj4gV2ViS2l0IiBhbmQgY3JlYXRlTGluayAoaHR0
cDovL3dlYmtpdC5vcmcvKSB5aWVsZHMgImhlbGxvIDxiPndvcmxkPC9iPiA8YSBocmVmPSJodHRw
Oi8vd2Via2l0Lm9yZy8iPldlYktpdDwvYT4iCiBQQVNTIHNlbGVjdCBsYXN0IHdvcmQgb2YgIjx1
PmhlbGxvIDxiPndvcmxkPC9iPiBXZWJLaXQ8L3U+IiBhbmQgY3JlYXRlTGluayAoaHR0cDovL3dl
YmtpdC5vcmcvKSB5aWVsZHMgIjx1PmhlbGxvIDxiPndvcmxkPC9iPiA8YSBocmVmPSJodHRwOi8v
d2Via2l0Lm9yZy8iPldlYktpdDwvYT48L3U+IgotUEFTUyBzZWxlY3QgbGFzdCB3b3JkIG9mICI8
YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+PGRpdj5oZWxsbzwvZGl2PjxkaXY+d29y
bGQ8L2Rpdj48L2E+IiBhbmQgY3JlYXRlTGluayAoaHR0cDovL3dlYmtpdC5vcmcvKSB5aWVsZHMg
IjxkaXY+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2Pjxk
aXY+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53b3JsZDwvYT48L2Rpdj4iCi1QQVNTIHNl
bGVjdCBsYXN0IHdvcmQgb2YgIjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBzdHls
ZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2Pjwv
YT4iIGFuZCBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9yZy8pIHlpZWxkcyAiPGRpdiBzdHls
ZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8i
PmhlbGxvPC9hPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPjxhIGhyZWY9
Imh0dHA6Ly93ZWJraXQub3JnLyI+d29ybGQ8L2E+PC9kaXY+IgotUEFTUyBzZWxlY3QgbGFzdCB3
b3JkIG9mICI8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2Vp
Z2h0OiBib2xkOyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPmhlbGxvPC9kaXY+
PGRpdj53b3JsZDwvZGl2PjwvYT4iIGFuZCBjcmVhdGVMaW5rIChodHRwOi8vd2Via2l0Lm9yZy8p
IHlpZWxkcyAiPGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgIj48YSBocmVmPSJodHRw
Oi8vdHJhYy53ZWJraXQub3JnLyI+aGVsbG88L2E+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC13ZWln
aHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53b3JsZDwvYT48L2Rpdj4i
CitQQVNTIHNlbGVjdCBsYXN0IHdvcmQgb2YgIjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvIj48ZGl2PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2PjwvYT4iIGFuZCBjcmVhdGVMaW5r
IChodHRwOi8vd2Via2l0Lm9yZy8pIHlpZWxkcyAiPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0
Lm9yZy8iPjxkaXY+aGVsbG88L2Rpdj48L2E+PGRpdj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9y
Zy8iPndvcmxkPC9hPjwvZGl2PiIKK1BBU1Mgc2VsZWN0IGxhc3Qgd29yZCBvZiAiPGEgaHJlZj0i
aHR0cDovL3RyYWMud2Via2l0Lm9yZy8iIHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXY+
aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+PC9hPiIgYW5kIGNyZWF0ZUxpbmsgKGh0dHA6Ly93
ZWJraXQub3JnLykgeWllbGRzICI8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+PGRp
diBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+aGVsbG88L2Rpdj48L2E+PGRpdiBzdHlsZT0i
Zm9udC13ZWlnaHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53b3JsZDwv
YT48L2Rpdj4iCitQQVNTIHNlbGVjdCBsYXN0IHdvcmQgb2YgIjxhIGhyZWY9Imh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2IHN0eWxlPSJmb250
LXdlaWdodDogbm9ybWFsOyI+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+PC9hPiIgYW5kIGNy
ZWF0ZUxpbmsgKGh0dHA6Ly93ZWJraXQub3JnLykgeWllbGRzICI8YSBocmVmPSJodHRwOi8vdHJh
Yy53ZWJraXQub3JnLyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgIj5oZWxsbzwv
ZGl2PjwvYT48ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8v
d2Via2l0Lm9yZy8iPndvcmxkPC9hPjwvZGl2PiIKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC90b2dnbGUtdW5saW5rLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL3RvZ2dsZS11bmxpbmstZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA3MDA4NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdG9nZ2xlLXVubGlu
ay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE0LDggKzE0LDggQEAgUEFTUyB1bmxp
bmsgb24gbGFzdCB0d28gd29yZHMgb2YgImhlbGxvIAogUEFTUyB1bmxpbmsgb24gZmlyc3QgdHdv
IHdvcmRzIG9mICJoZWxsbyA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxlPSJmb250
LXN0eWxlOiBpdGFsaWM7Ij48Yj53b3JsZDwvYj4gV2ViS2l0PC9hPiIgeWllbGRzICJoZWxsbyA8
YiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyAiPndvcmxkPC9iPjxhIGhyZWY9Imh0dHA6Ly93
ZWJraXQub3JnLyI+PGk+IFdlYktpdDwvaT48L2E+IgogUEFTUyB1bmxpbmsgb24gYWxsIG9mICI8
YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7Ij48ZGl2PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2PjwvYT4iIHlpZWxkcyAiPGRpdiBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyAiPmhlbGxvPC9kaXY+PGRpdiBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyAiPndvcmxkPC9kaXY+IgogUEFTUyB1bmxpbmsgb24g
YWxsIG9mICJoZWxsbzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImJhY2tncm91
bmQtY29sb3I6IHllbGxvdzsiPjxkaXY+d29ybGQ8L2Rpdj48L2E+V2ViS2l0IiB5aWVsZHMgImhl
bGxvPGRpdiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyAiPndvcmxkPC9kaXY+PHNw
YW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxs
b3c7Ij5XZWJLaXQ8L3NwYW4+IgotUEFTUyB1bmxpbmsgb24gbGFzdCB0d28gd29yZHMgb2YgIjxh
IGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PGRp
dj5oZWxsbzwvZGl2PjxkaXY+d29ybGQgV2ViS2l0PC9kaXY+PC9hPiIgeWllbGRzICI8ZGl2IHN0
eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhl
bGxvPC9hPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPndvcmxkIFdlYktp
dDwvZGl2PiIKLVBBU1MgdW5saW5rIG9uIGxhc3Qgd29yZCBvZiAiPGEgaHJlZj0iaHR0cDovL3dl
YmtpdC5vcmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2IHN0eWxlPSJmb250LXdl
aWdodDogbm9ybWFsOyI+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+PC9hPiIgeWllbGRzICI8
ZGl2IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyAiPjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQu
b3JnLyI+aGVsbG88L2E+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+d29y
bGQ8L2Rpdj4iCitQQVNTIHVubGluayBvbiBsYXN0IHR3byB3b3JkcyBvZiAiPGEgaHJlZj0iaHR0
cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2PmhlbGxvPC9k
aXY+PGRpdj53b3JsZCBXZWJLaXQ8L2Rpdj48L2E+IiB5aWVsZHMgIjxhIGhyZWY9Imh0dHA6Ly93
ZWJraXQub3JnLyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+aGVsbG88L2Rpdj48
L2E+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+d29ybGQgV2ViS2l0PC9kaXY+Igor
UEFTUyB1bmxpbmsgb24gbGFzdCB3b3JkIG9mICI8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8i
IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsiPjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3Jt
YWw7Ij5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+IiB5aWVsZHMgIjxhIGhyZWY9Imh0
dHA6Ly93ZWJraXQub3JnLyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgIj5oZWxs
bzwvZGl2PjwvYT48ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj53b3JsZDwvZGl2PiIK
IFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC91bmxpbmstZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvdW5saW5rLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gNzAwODYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3VubGluay1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTY0LDUgKzY0LDUgQEAgVGhl
IGlubmVySFRNTCBvZiBlZGl0YWJsZSByZWdpb25zIGFmdGVyIAogCiBUaGlzIHBhcmFncmFwaCBz
aG91bGQgc2hvdWxkIGVuZCB1cCB1bmxpbmtlZC4KIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBwbGUu
Y29tLyI+VGhlPC9hPiBzZWNvbmQ8YSBocmVmPSJodHRwOi8vd3d3LmFwcGxlLmNvbS8iPiB3b3Jk
IGluIHRoaXMgcGFyYWdyYXBoIHNob3VsZCBlbmQgdXAgYmVpbmcgdW5saW5rZWQsIGV2ZXJ5dGhp
bmcgZWxzZSBzaG91bGQgYmUgYSBsaW5rLjwvYT4KLVRoaXMgcGFyYWdyYXBoIHN0YXJ0cyB3aXRo
IDxpPjxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbSI+YTwvYT48L2k+PHNwYW4gaWQ9InRl
c3Qzc3RhcnQiPiBsaW5rPC9zcGFuPiBpbiB0aGUgbWlkZGxlLiBPbmx5IHRoZSAnYScgaW4gdGhl
IHByZXZpb3VzIHNlbnRlbmNlIHNob3VsZCBiZSBsaW5rZWQgYWZ0ZXIgdGhlIHRlc3QuCitUaGlz
IHBhcmFncmFwaCBzdGFydHMgd2l0aCA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20iPjxp
PmE8L2k+PC9hPjxzcGFuIGlkPSJ0ZXN0M3N0YXJ0Ij4gbGluazwvc3Bhbj4gaW4gdGhlIG1pZGRs
ZS4gT25seSB0aGUgJ2EnIGluIHRoZSBwcmV2aW91cyBzZW50ZW5jZSBzaG91bGQgYmUgbGlua2Vk
IGFmdGVyIHRoZSB0ZXN0LgogPHA+VGhpcyA8aT5lZGl0YWJsZSByZWdpb248L2k+IGNvbnRhaW5z
IGxpc3RzLCB0YWJsZXMsIHN0eWxlZCB0ZXh0LCBhbmQgaW1hZ2VzLiBFdmVyeXRoaW5nIGluIHRo
aXMgcmVnaW9uIHRoYXQgaXMgbm90IHNlbGVjdGVkIHNob3VsZCBiZSBhIGxpbmssIG5vdGhpbmcg
dGhhdCBpcyBzZWxlY3RlZCBzaG91bGQgYmUgYSBsaW5rLjwvcD4gPHVsPiA8bGk+SXRlbSAxPC9s
aT4gPGxpPkl0ZW0gMjwvbGk+IDwvdWw+IDx0YWJsZSBib3JkZXI9IjEiPjx0Ym9keT48dHI+PHRk
PjE8L3RkPjx0ZD4yPC90ZD48dGQ+PHNwYW4gaWQ9InRlc3Q0ZW5kIj48YSBocmVmPSJodHRwOi8v
d3d3Lmdvb2dsZS5jb20vIj4zPC9hPjwvc3Bhbj48L3RkPjwvdHI+PC90Ym9keT48L3RhYmxlPiA8
YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIj48YnI+IFRoaXMgPGI+bGluZTwvYj4gY29u
dGFpbnMgPGltZyBzcmM9Ii4uL3Jlc291cmNlcy9hYmUucG5nIj4gYW4gaW1hZ2UuIDwvYT4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3JlbW92ZS1m
b3JtYXQtbXVsdGlwbGUtZWxlbWVudHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvcmVtb3ZlLWZvcm1hdC1tdWx0aXBsZS1lbGVt
ZW50cy5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
c2NyaXB0LXRlc3RzL3JlbW92ZS1mb3JtYXQtbXVsdGlwbGUtZWxlbWVudHMuanMJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNzggQEAKK2Rlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHJlbW92aW5nIG11
bHRpcGxlIGVsZW1lbnRzIGJ5IFJlbW92ZUZvcm1hdCBjb21tYW5kLiIpCisKK3ZhciB0ZXN0Q29u
dGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7Cit0ZXN0Q29udGFpbmVyLmNv
bnRlbnRFZGl0YWJsZSA9IHRydWU7Citkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlc3RDb250
YWluZXIpOworCitmdW5jdGlvbiB0ZXN0UmVtb3ZlRm9ybWF0KGluaXRpYWxDb250ZW50cywgc2Vs
ZWN0b3IsIGV4cGVjdGVkKQoreworICAgIHRlc3RDb250YWluZXIuaW5uZXJIVE1MID0gaW5pdGlh
bENvbnRlbnRzOworICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdG9yKHRlc3RDb250YWluZXIpOwor
ICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdSZW1vdmVGb3JtYXQnLCBmYWxzZSwgbnVsbCk7Cisg
ICAgdmFyIGFjdGlvbiA9ICdSZW1vdmVGb3JtYXQgb24gJyArIHNlbGVjdGVkICsgJyBvZiAiJyAr
IGluaXRpYWxDb250ZW50cyArICciIHlpZWxkcyAiJyArIHRlc3RDb250YWluZXIuaW5uZXJIVE1M
ICsgJyInOworICAgIGlmICh0ZXN0Q29udGFpbmVyLmlubmVySFRNTCA9PT0gZXhwZWN0ZWQpCisg
ICAgICAgIHRlc3RQYXNzZWQoYWN0aW9uKTsKKyAgICBlbHNlCisgICAgICAgIHRlc3RGYWlsZWQo
YWN0aW9uICsgJywgZXhwZWN0ZWQgIicgKyBleHBlY3RlZCArICciJyk7Cit9CisKK2Z1bmN0aW9u
IHNlbGVjdEFsbChjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0
QWxsQ2hpbGRyZW4oY29udGFpbmVyKTsKKyAgICByZXR1cm4gJ2FsbCc7Cit9CisKK2Z1bmN0aW9u
IHNlbGVjdFNlY29uZFdvcmQoY29udGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigp
LnNldFBvc2l0aW9uKGNvbnRhaW5lciwgMCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1v
ZGlmeSgnbW92ZScsICdmb3J3YXJkJywgJ3dvcmQnKTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9u
KCkubW9kaWZ5KCdtb3ZlJywgJ2ZvcndhcmQnLCAnd29yZCcpOworICAgIHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdiYWNrd2FyZCcsICd3b3JkJyk7CisgICAgcmV0dXJu
ICdzZWNvbmQgd29yZCc7Cit9CisKK2Z1bmN0aW9uIHNlbGVjdEZpcnN0VHdvV29yZHMoY29udGFp
bmVyKSB7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwg
MCk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywgJ2ZvcndhcmQn
LCAnd29yZCcpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdm
b3J3YXJkJywgJ3dvcmQnKTsKKyAgICByZXR1cm4gJ2ZpcnN0IHR3byB3b3Jkcyc7Cit9CisKK2Z1
bmN0aW9uIHNlbGVjdExhc3RUd29Xb3Jkcyhjb250YWluZXIpIHsKKyAgICB3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuc2V0UG9zaXRpb24oY29udGFpbmVyLCBjb250YWluZXIuY2hpbGROb2Rlcy5sZW5n
dGgpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5tb2RpZnkoJ2V4dGVuZCcsICdiYWNrd2Fy
ZCcsICd3b3JkJyk7CisgICAgd2luZG93LmdldFNlbGVjdGlvbigpLm1vZGlmeSgnZXh0ZW5kJywg
J2JhY2t3YXJkJywgJ3dvcmQnKTsKKyAgICByZXR1cm4gJ2xhc3QgdHdvIHdvcmRzJzsKK30KKwor
ZnVuY3Rpb24gc2VsZWN0TGFzdFdvcmQoY29udGFpbmVyKSB7CisgICAgd2luZG93LmdldFNlbGVj
dGlvbigpLnNldFBvc2l0aW9uKGNvbnRhaW5lciwgY29udGFpbmVyLmNoaWxkTm9kZXMubGVuZ3Ro
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkubW9kaWZ5KCdleHRlbmQnLCAnYmFja3dhcmQn
LCAnd29yZCcpOworICAgIHJldHVybiAnbGFzdCB3b3JkJzsKK30KKwordGVzdFJlbW92ZUZvcm1h
dCgnaGVsbG8nLCBzZWxlY3RBbGwsICdoZWxsbycpOwordGVzdFJlbW92ZUZvcm1hdCgnPGk+aGVs
bG88L2k+IDx1PndvcmxkPC91PicsIHNlbGVjdEFsbCwgJ2hlbGxvIHdvcmxkJyk7Cit0ZXN0UmVt
b3ZlRm9ybWF0KCc8Yj48dT5oZWxsbzwvdT4gd29ybGQ8L2I+IDxhIGhyZWY9Imh0dHA6Ly93ZWJr
aXQub3JnLyI+PGVtPldlYktpdDwvZW0+PC9hPicsIHNlbGVjdEFsbCwgJ2hlbGxvIHdvcmxkIDxh
IGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+V2ViS2l0PC9hPicpOwordGVzdFJlbW92ZUZvcm1h
dCgnPGI+PHU+aGVsbG88L3U+IHdvcmxkPC9iPiA8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8i
PjxlbT5XZWJLaXQ8L2VtPjwvYT4nLAorICAgIHNlbGVjdFNlY29uZFdvcmQsICc8Yj48dT5oZWxs
bzwvdT4gPC9iPndvcmxkIDxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+PGVtPldlYktpdDwv
ZW0+PC9hPicpOwordGVzdFJlbW92ZUZvcm1hdCgnPHN1Yj48dHQ+aGVsbG8gd29ybGQgV2ViS2l0
PC90dD48L3N1Yj4nLCBzZWxlY3RTZWNvbmRXb3JkLCAnPHN1Yj48dHQ+aGVsbG8gPC90dD48L3N1
Yj53b3JsZDxzdWI+PHR0PiBXZWJLaXQ8L3R0Pjwvc3ViPicpOwordGVzdFJlbW92ZUZvcm1hdCgn
PHE+PGlucz48dmFyPmhlbGxvIHdvcjwvdmFyPmxkPC9pbnM+IFdlYktpdDwvcT4nLCBzZWxlY3RT
ZWNvbmRXb3JkLCAnPHE+PGlucz48dmFyPmhlbGxvIDwvdmFyPjwvaW5zPjwvcT53b3JsZDxxPiBX
ZWJLaXQ8L3E+Jyk7ICAgIAordGVzdFJlbW92ZUZvcm1hdCgnPGI+aGVsbG8gPGRmbj53b3JsZCA8
a2JkPldlYktpdDwva2JkPjwvZGZuPjwvYj4nLCBzZWxlY3RMYXN0V29yZCwgJzxiPmhlbGxvIDxk
Zm4+d29ybGQgPC9kZm4+PC9iPldlYktpdCcpOwordGVzdFJlbW92ZUZvcm1hdCgnPGI+aGVsbG8g
PGRmbj53b3JsZCA8a2JkPldlYktpdDwva2JkPjwvZGZuPjwvYj4nLCBzZWxlY3RTZWNvbmRXb3Jk
LCAnPGI+aGVsbG8gPC9iPndvcmxkPGI+PGRmbj4gPGtiZD5XZWJLaXQ8L2tiZD48L2Rmbj48L2I+
Jyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8Y29kZT5oZWxsbyA8c3Ryb25nPndvcmxkIFdlYktpdDwv
c3Rvcm5nPjwvY29kZT4nLCBzZWxlY3RGaXJzdFR3b1dvcmRzLCAnaGVsbG8gd29ybGQ8Y29kZT48
c3Ryb25nPiBXZWJLaXQ8L3N0cm9uZz48L2NvZGU+Jyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8YWNy
b255bT48dHQ+PG1hcms+PHNhbXA+aGVsbG88L3NhbXA+PC9tYXJrPiB3b3JsZCA8c3ViPldlYktp
dDwvc3ViPjwvdHQ+PC9hY3JvbnltPicsCisgICAgc2VsZWN0Rmlyc3RUd29Xb3JkcywgJzxtYXJr
PmhlbGxvPC9tYXJrPiB3b3JsZDxhY3JvbnltPjx0dD4gPHN1Yj5XZWJLaXQ8L3N1Yj48L3R0Pjwv
YWNyb255bT4nKTsKK3Rlc3RSZW1vdmVGb3JtYXQoJzxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rpdj48
L2I+PGRpdj5XZWJLaXQ8L2Rpdj4nLCBzZWxlY3RMYXN0VHdvV29yZHMsICc8ZGl2PjxiPmhlbGxv
IDwvYj53b3JsZDwvZGl2PjxkaXY+V2ViS2l0PC9kaXY+Jyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8
cT48Yj48ZGl2PmhlbGxvIHdvcmxkPC9kaXY+PC9iPldlYktpdDwvcT4nLCBzZWxlY3RMYXN0VHdv
V29yZHMsICc8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8L2Rpdj5XZWJLaXQnKTsKK3Rl
c3RSZW1vdmVGb3JtYXQoJzxxPjxiPjxkaXY+aGVsbG8gd29ybGQ8L2Rpdj48L2I+V2ViS2l0PC9x
PicsIHNlbGVjdFNlY29uZFdvcmQsICc8ZGl2PjxxPjxiPmhlbGxvIDwvYj48L3E+d29ybGQ8L2Rp
dj48cT5XZWJLaXQ8L3E+Jyk7CisKK3Rlc3RSZW1vdmVGb3JtYXQoJzxpIHN0eWxlPSJmb250LXdl
aWdodDpib2xkOyI+aGVsbG88L2k+IDx1PndvcmxkPC91PicsIHNlbGVjdEFsbCwgJ2hlbGxvIHdv
cmxkJyk7Cit0ZXN0UmVtb3ZlRm9ybWF0KCc8Zm9udCBjb2xvcj0icmVkIj48YiBzdHlsZT0iZm9u
dC1zaXplOiBsYXJnZTsiPjx1PmhlbGxvPC91PiB3b3JsZDwvYj4gV2ViS2l0PC9mb250PicsCisg
ICAgc2VsZWN0U2Vjb25kV29yZCwgJzxmb250IGNvbG9yPSJyZWQiPjxiIHN0eWxlPSJmb250LXNp
emU6IGxhcmdlOyI+PHU+aGVsbG88L3U+IDwvYj48L2ZvbnQ+d29ybGQ8Zm9udCBjb2xvcj0icmVk
Ij4gV2ViS2l0PC9mb250PicpOwordGVzdFJlbW92ZUZvcm1hdCgnPGZvbnQgc2l6ZT0iNSI+PGk+
PHUgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGw7Ij5oZWxsbzwvdT4gd29ybGQ8L2k+PGZvbnQgc2l6
ZT0iMyI+IFdlYktpdDwvZm9udD48L2ZvbnQ+JywKKyAgICBzZWxlY3RTZWNvbmRXb3JkLCAnPGZv
bnQgc2l6ZT0iNSI+PGk+PHUgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGw7Ij5oZWxsbzwvdT4gPC9p
PjwvZm9udD53b3JsZDxmb250IHNpemU9IjUiPjxmb250IHNpemU9IjMiPiBXZWJLaXQ8L2ZvbnQ+
PC9mb250PicpOwordGVzdFJlbW92ZUZvcm1hdCgnPHN1cD48ZGl2IHN0eWxlPSJ0ZXh0LWRlY29y
YXRpb246IHVuZGVybGluZTsgZm9udC1zaXplOiBsYXJnZTsiPmhlbGxvIDxkZm4gc3R5bGU9ImZv
bnQtc2l6ZTogbm9ybWFsOyI+d29ybGQ8L2Rmbj48L2Rpdj4gV2ViS2l0PC9zdXA+JywKKyAgICBz
ZWxlY3RTZWNvbmRXb3JkLCAnPGRpdj48c3VwPjxmb250IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IiBzaXplPSI0Ij48dT5oZWxsbyA8L3U+PC9mb250Pjwvc3VwPndvcmxkPC9kaXY+PHN1cD4gV2Vi
S2l0PC9zdXA+Jyk7CisKK2RvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVzdENvbnRhaW5lcik7
CisKK3ZhciBzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLWxpbmsuanMKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLWxp
bmsuanMJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFu
ZC9zY3JpcHQtdGVzdHMvdG9nZ2xlLWxpbmsuanMJKHdvcmtpbmcgY29weSkKQEAgLTQyLDEyICs0
MiwxNiBAQCB0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJ2hlbGxvIDxiCiB0ZXN0U2lu
Z2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcv
Ij5oZWxsbyA8Yj53b3JsZDwvYj48L2E+IFdlYktpdCcsIHNlbGVjdEZpcnN0VHdvV29yZHMsICc8
YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwvYT4gV2ViS2l0
Jyk7CiB0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+aGVsbG8gd29ybGQ8L2E+
IFdlYktpdCcsIHNlbGVjdEZpcnN0VHdvV29yZHMsICc8aT48YSBocmVmPSJodHRwOi8vd2Via2l0
Lm9yZy8iPmhlbGxvIHdvcmxkPC9hPjwvaT4gV2ViS2l0Jyk7CiB0ZXN0U2luZ2xlVG9nZ2xlKCJj
cmVhdGVMaW5rIiwgJ2hlbGxvIDxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj48Yj53
b3JsZDwvYj4gV2ViS2l0PC9hPicsIHNlbGVjdEZpcnN0VHdvV29yZHMsICc8YSBocmVmPSJodHRw
Oi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiPndvcmxkPC9iPjwvYT48YSBocmVmPSJodHRwOi8vdHJh
Yy53ZWJraXQub3JnLyI+IFdlYktpdDwvYT4nKTsKLXRlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxp
bmsiLCAnaGVsbG8gPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iIHN0eWxlPSJmb250
LXN0eWxlOiBpdGFsaWM7Ij48Yj53b3JsZDwvYj4gV2ViS2l0PC9hPicsIHNlbGVjdEZpcnN0VHdv
V29yZHMsICc8YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPmhlbGxvIDxiIHN0eWxlPSJmb250
LXN0eWxlOiBpdGFsaWM7ICI+d29ybGQ8L2I+PC9hPjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtp
dC5vcmcvIj48aT4gV2ViS2l0PC9pPjwvYT4nKTsKK3Rlc3RTaW5nbGVUb2dnbGUoImNyZWF0ZUxp
bmsiLCAnaGVsbG8gPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iIHN0eWxlPSJmb250
LXN0eWxlOiBpdGFsaWM7Ij48Yj53b3JsZDwvYj4gV2ViS2l0PC9hPicsIHNlbGVjdEZpcnN0VHdv
V29yZHMsCisgICAgJzxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+aGVsbG8gPGIgc3R5bGU9
ImZvbnQtc3R5bGU6IGl0YWxpYzsgIj53b3JsZDwvYj48L2E+PGEgaHJlZj0iaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy8iPjxpPiBXZWJLaXQ8L2k+PC9hPicpOwogdGVzdFNpbmdsZVRvZ2dsZSgiY3Jl
YXRlTGluayIsICdoZWxsbyA8Yj53b3JsZDwvYj4gV2ViS2l0Jywgc2VsZWN0TGFzdFdvcmQsICdo
ZWxsbyA8Yj53b3JsZDwvYj4gPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5XZWJLaXQ8L2E+
Jyk7CiB0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzx1PmhlbGxvIDxiPndvcmxkPC9i
PiBXZWJLaXQ8L3U+Jywgc2VsZWN0TGFzdFdvcmQsICc8dT5oZWxsbyA8Yj53b3JsZDwvYj4gPGEg
aHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj5XZWJLaXQ8L2E+PC91PicpOwotdGVzdFNpbmdsZVRv
Z2dsZSgiY3JlYXRlTGluayIsICc8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyI+PGRp
dj5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+Jywgc2VsZWN0TGFzdFdvcmQsICc8ZGl2
PjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2Pjxh
IGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+d29ybGQ8L2E+PC9kaXY+Jyk7Ci10ZXN0U2luZ2xl
VG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIiBz
dHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2
PjwvYT4nLCBzZWxlY3RMYXN0V29yZCwgJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAi
PjxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj5oZWxsbzwvYT48L2Rpdj48ZGl2IHN0
eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPndv
cmxkPC9hPjwvZGl2PicpOwotdGVzdFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIsICc8YSBocmVm
PSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PGRp
diBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsiPmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2
PjwvYT4nLCBzZWxlY3RMYXN0V29yZCwgJzxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7
ICI+PGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPmhlbGxvPC9hPjwvZGl2PjxkaXYg
c3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPjxhIGhyZWY9Imh0dHA6Ly93ZWJraXQub3JnLyI+
d29ybGQ8L2E+PC9kaXY+Jyk7Cit0ZXN0U2luZ2xlVG9nZ2xlKCJjcmVhdGVMaW5rIiwgJzxhIGhy
ZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj48ZGl2PmhlbGxvPC9kaXY+PGRpdj53b3JsZDwv
ZGl2PjwvYT4nLCBzZWxlY3RMYXN0V29yZCwKKyAgICAnPGEgaHJlZj0iaHR0cDovL3RyYWMud2Vi
a2l0Lm9yZy8iPjxkaXY+aGVsbG88L2Rpdj48L2E+PGRpdj48YSBocmVmPSJodHRwOi8vd2Via2l0
Lm9yZy8iPndvcmxkPC9hPjwvZGl2PicpOwordGVzdFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIs
ICc8YSBocmVmPSJodHRwOi8vdHJhYy53ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBi
b2xkOyI+PGRpdj5oZWxsbzwvZGl2PjxkaXY+d29ybGQ8L2Rpdj48L2E+Jywgc2VsZWN0TGFzdFdv
cmQsCisgICAgJzxhIGhyZWY9Imh0dHA6Ly90cmFjLndlYmtpdC5vcmcvIj48ZGl2IHN0eWxlPSJm
b250LXdlaWdodDogYm9sZDsgIj5oZWxsbzwvZGl2PjwvYT48ZGl2IHN0eWxlPSJmb250LXdlaWdo
dDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9yZy8iPndvcmxkPC9hPjwvZGl2Picp
OwordGVzdFNpbmdsZVRvZ2dsZSgiY3JlYXRlTGluayIsICc8YSBocmVmPSJodHRwOi8vdHJhYy53
ZWJraXQub3JnLyIgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PGRpdiBzdHlsZT0iZm9udC13
ZWlnaHQ6IG5vcm1hbDsiPmhlbGxvPC9kaXY+PGRpdj53b3JsZDwvZGl2PjwvYT4nLCBzZWxlY3RM
YXN0V29yZCwKKyAgICAnPGEgaHJlZj0iaHR0cDovL3RyYWMud2Via2l0Lm9yZy8iPjxkaXYgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7ICI+aGVsbG88L2Rpdj48L2E+PGRpdiBzdHlsZT0iZm9u
dC13ZWlnaHQ6IGJvbGQ7ICI+PGEgaHJlZj0iaHR0cDovL3dlYmtpdC5vcmcvIj53b3JsZDwvYT48
L2Rpdj4nKTsKIAogZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXN0Q29udGFpbmVyKTsKIApJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9zY3JpcHQtdGVzdHMvdG9nZ2xl
LXVubGluay5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L3NjcmlwdC10ZXN0cy90b2dnbGUtdW5saW5rLmpzCShyZXZpc2lvbiA3MDA4NikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvc2NyaXB0LXRlc3RzL3RvZ2dsZS11bmxpbmsuanMJ
KHdvcmtpbmcgY29weSkKQEAgLTU5LDkgKzU5LDkgQEAgdGVzdFNpbmdsZVRvZ2dsZSgidW5saW5r
IiwgJzxhIGhyZWY9Imh0dAogdGVzdFNpbmdsZVRvZ2dsZSgidW5saW5rIiwgJ2hlbGxvPGEgaHJl
Zj0iaHR0cDovL3dlYmtpdC5vcmcvIiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyI+
PGRpdj53b3JsZDwvZGl2PjwvYT5XZWJLaXQnLAogICAgIHNlbGVjdEFsbCwgJ2hlbGxvPGRpdiBz
dHlsZT0iYmFja2dyb3VuZC1jb2xvcjogeWVsbG93OyAiPndvcmxkPC9kaXY+PHNwYW4gY2xhc3M9
IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB5ZWxsb3c7Ij5XZWJL
aXQ8L3NwYW4+Jyk7CiB0ZXN0U2luZ2xlVG9nZ2xlKCJ1bmxpbmsiLCAnPGEgaHJlZj0iaHR0cDov
L3dlYmtpdC5vcmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2PmhlbGxvPC9kaXY+
PGRpdj53b3JsZCBXZWJLaXQ8L2Rpdj48L2E+JywKLSAgICBzZWxlY3RMYXN0VHdvV29yZHMsICc8
ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj48YSBocmVmPSJodHRwOi8vd2Via2l0Lm9y
Zy8iPmhlbGxvPC9hPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyAiPndvcmxk
IFdlYktpdDwvZGl2PicpOworICAgIHNlbGVjdExhc3RUd29Xb3JkcywgJzxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnLyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+aGVsbG88L2Rp
dj48L2E+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7ICI+d29ybGQgV2ViS2l0PC9kaXY+
Jyk7CiB0ZXN0U2luZ2xlVG9nZ2xlKCJ1bmxpbmsiLCAnPGEgaHJlZj0iaHR0cDovL3dlYmtpdC5v
cmcvIiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7Ij48ZGl2IHN0eWxlPSJmb250LXdlaWdodDog
bm9ybWFsOyI+aGVsbG88L2Rpdj48ZGl2PndvcmxkPC9kaXY+PC9hPicsCi0gICAgc2VsZWN0TGFz
dFdvcmQsICc8ZGl2IHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyAiPjxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnLyI+aGVsbG88L2E+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IGJv
bGQ7ICI+d29ybGQ8L2Rpdj4nKTsKKyAgICBzZWxlY3RMYXN0V29yZCwgJzxhIGhyZWY9Imh0dHA6
Ly93ZWJraXQub3JnLyI+PGRpdiBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgIj5oZWxsbzwv
ZGl2PjwvYT48ZGl2IHN0eWxlPSJmb250LXdlaWdodDogYm9sZDsgIj53b3JsZDwvZGl2PicpOwog
CiBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlc3RDb250YWluZXIpOwogCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9zcGFjZS1hZnRlci1yZW1vdmVmb3JtYXQtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3NwYWNl
LWFmdGVyLXJlbW92ZWZvcm1hdC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDcwMDg2KQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvc3BhY2UtYWZ0ZXItcmVtb3ZlZm9ybWF0LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw5ICsxLDUgQEAKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBv
ZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEwIG9mICN0ZXh0ID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0
eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKLUVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEJlZ2luRWRpdGluZ0luRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDkgb2YgQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKLUVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRCZWdpbkVkaXRpbmc6V2ViVmlld0RpZEJlZ2luRWRpdGluZ05vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIFRoaXMgaXMgYSB0ZXN0IGZvciBl
eGVjQ29tbWFuZCgiUmVtb3ZlRm9ybWF0IikuIFlvdSBzaG91bGQgc2VlIFNvbWUlMjB0ZXh0IGJl
Zm9yZSBhbmQgYWZ0ZXIgUmVtb3ZlRm9ybWF0IGlzIGV4ZWN1dGVkLiBUaGlzIHRlc3QgY2FzZSBp
cyBkdWUgdG8gdGhlIFdlYktpdCBidWcgMTQwNjIsIHJlZ3Jlc3Npb24gKHIyMTIxMikuCiAK
</data>
<flag name="review"
          id="61569"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>