<?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>136903</bug_id>
          
          <creation_ts>2014-09-17 18:11:16 -0700</creation_ts>
          <short_desc>changing SVG &lt;defs&gt; does not update SVG element.</short_desc>
          <delta_ts>2015-06-24 11:54:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Damien Nozay [:dnozay]">damien.nozay</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>pere.jobs</cc>
    
    <cc>rmcerlean</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1035805</commentid>
    <comment_count>0</comment_count>
    <who name="Damien Nozay [:dnozay]">damien.nozay</who>
    <bug_when>2014-09-17 18:11:16 -0700</bug_when>
    <thetext>when changing the contents of an SVG &lt;defs&gt;, it does not update the SVG element.

example:
http://jsfiddle.net/dnozay/L1e76pts/

I have an empty &lt;defs&gt; tag which I later fill out once I compute some paths for the pattern.
In chrome this renders the pattern, in Safari this leaves the element black.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035806</commentid>
    <comment_count>1</comment_count>
      <attachid>238277</attachid>
    <who name="Damien Nozay [:dnozay]">damien.nozay</who>
    <bug_when>2014-09-17 18:11:41 -0700</bug_when>
    <thetext>Created attachment 238277
on safari.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035807</commentid>
    <comment_count>2</comment_count>
      <attachid>238278</attachid>
    <who name="Damien Nozay [:dnozay]">damien.nozay</who>
    <bug_when>2014-09-17 18:12:15 -0700</bug_when>
    <thetext>Created attachment 238278
on chrome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1035813</commentid>
    <comment_count>3</comment_count>
    <who name="Damien Nozay [:dnozay]">damien.nozay</who>
    <bug_when>2014-09-17 18:40:34 -0700</bug_when>
    <thetext>based on what I read there, this could be a namespace issue
http://stackoverflow.com/questions/24079659/loading-svg-using-innerhtml

so when I use innerHTML, it is probably not adding child elements correctly.
firebug lite confirms that there are no child elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048812</commentid>
    <comment_count>4</comment_count>
      <attachid>241604</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-11-14 11:42:26 -0800</bug_when>
    <thetext>Created attachment 241604
[WIP] fix.patch

The issue is that innerHTML (and outerHTML) are HTMLElement methods in WebKit. Per DOM Parsing [1], Chrome moved them to Element.

Source/WebCore/bindings/objc/PublicDOMInterfaces.h
Source/WebCore/dom/Element.cpp
Source/WebCore/dom/Element.h
Source/WebCore/dom/Element.idl
Source/WebCore/html/HTMLElement.cpp
Source/WebCore/html/HTMLElement.h
Source/WebCore/html/HTMLElement.idl

The changes to the files above move innerHTML and outerHTML up the tree (which also fixes bug 135698). They fix the issue in a stand-alone SVG doc (see defs-innerHTML.svg). Nothing special about these changes except:
- I left innerText and outerText on HTMLElement; I believe these only exist for IE compat
- Both innerText/outerText and innerHTML/outerHTML use the mergeWithNextTextNode() helper. I made this a protected static on Element. 

Source/WebCore/html/parser/HTMLTreeBuilder.cpp
Source/WebCore/html/parser/HTMLTreeBuilder.h

These changes are needed to fix the original issue (see defs-innerHTML.html for a stand-alone non-JSfiddle version); they bring over the adjusted current node logic from Chrome, as defined by HTML [3]. Note that I tried to bring over all the HTMLTreeBuilder changes related to current node adjustment i.e. not just what I needed to fix this specific issue. This part definitely needs careful review.

[1] https://dvcs.w3.org/hg/innerhtml/raw-file/tip/index.html#innerhtml
[2] https://bugs.webkit.org/show_bug.cgi?id=135698
[3] // http://www.whatwg.org/specs/web-apps/current-work/#adjusted-current-node</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048813</commentid>
    <comment_count>5</comment_count>
      <attachid>241605</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-11-14 11:43:16 -0800</bug_when>
    <thetext>Created attachment 241605
defs-innerHTML.html

A stand-alone version of the jsfiddle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048814</commentid>
    <comment_count>6</comment_count>
      <attachid>241606</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-11-14 11:44:00 -0800</bug_when>
    <thetext>Created attachment 241606
defs-innerHTML.svg

An SVG version of defs-innerHTML.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048830</commentid>
    <comment_count>7</comment_count>
    <who name="Damien Nozay [:dnozay]">damien.nozay</who>
    <bug_when>2014-11-14 12:05:27 -0800</bug_when>
    <thetext>added a comment on bug 135698 to get interested parties&apos; attention.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048907</commentid>
    <comment_count>8</comment_count>
      <attachid>241604</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-11-14 15:54:52 -0800</bug_when>
    <thetext>Comment on attachment 241604
[WIP] fix.patch

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

Looks good. I suggest getting in the habit of writing the ChangeLog even when posting WIP patches because it helps people understand what is going on. &quot;prepare-ChangeLog&quot; or &quot;webkit-patch prepare&quot; are your friends.

Now you need to turn defs-innerHTML.svg into a test!

&gt; Source/WebCore/html/HTMLElement.cpp:505
&gt; -
&gt; +    
&gt;  void HTMLElement::setOuterText(const String&amp; text, ExceptionCode&amp; ec)

Oops. You inserted some space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051616</commentid>
    <comment_count>9</comment_count>
      <attachid>242347</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-12-01 14:54:09 -0800</bug_when>
    <thetext>Created attachment 242347
[WIP] fix.patch

Updating initial patch per Dean&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051626</commentid>
    <comment_count>10</comment_count>
      <attachid>242351</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-12-01 15:00:56 -0800</bug_when>
    <thetext>Created attachment 242351
[WIP] fix.patch

Fixing bad ChangeLog merge.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051631</commentid>
    <comment_count>11</comment_count>
      <attachid>242353</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-12-01 15:08:27 -0800</bug_when>
    <thetext>Created attachment 242353
[WIP] fix.patch

ChangeLog is not my friend; somehow crushed Oliver Hunt&apos;s update. Put it back in at the right spot in the timeline.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051654</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-01 16:05:18 -0800</bug_when>
    <thetext>Attachment 242353 did not pass style-queue:


ERROR: Source/WebCore/dom/Element.h:580:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2847:  Multi line control clauses should use braces.  [whitespace/braces] [4]
ERROR: LayoutTests/ChangeLog:1:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
ERROR: Source/WebCore/ChangeLog:19:  ChangeLog entry has no bug number  [changelog/bugnumber] [5]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051659</commentid>
    <comment_count>13</comment_count>
      <attachid>242353</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2014-12-01 16:12:49 -0800</bug_when>
    <thetext>Comment on attachment 242353
[WIP] fix.patch

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

Very close. Just some merge issues, and minor questions about the test modifications.

&gt; LayoutTests/ChangeLog:13
&gt; +2014-12-01  Sylvain Galineau  &lt;galineau@adobe.com&gt;
&gt; +
&gt; +        Need a short description (OOPS!).
&gt; +        Need the bug URL (OOPS!).
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        * js/dom/dom-static-property-for-in-iteration-expected.txt:
&gt; +        * platform/mac/svg/in-html/svg-inner-html-expected.png: Added.
&gt; +        * svg/css/svg-attribute-length-parsing-expected.txt:
&gt; +        * svg/in-html/svg-inner-html-expected.txt: Added.
&gt; +        * svg/in-html/svg-inner-html.html: Added.
&gt; +

You need to fill in the OOPS! lines here - at least the description and the bug.

For the s/dom/dom-static-property-for-in-iteration-expected.txt line, you should probably explain why this changed. e.g. You moved innerHTML and outerHTML onto Element.

And I think this line is wrong:

platform/mac/svg/in-html/svg-inner-html-expected.png: Added

Didn&apos;t you remove that image now that it is a text test?

&gt; LayoutTests/svg/css/svg-attribute-length-parsing-expected.txt:2
&gt; +Test
&gt;  Test CSS parsing on SVG presentation attributes.

Was this expected to change? I don&apos;t see the actual test changing.

&gt; Source/WebCore/ChangeLog:13
&gt; -2014-12-01  Bartlomiej Gajda  &lt;b.gajda@samsung.com&gt;
&gt; +2014-12-01  Sylvain Galineau  &lt;galineau@adobe.com&gt;
&gt;  
&gt; -        [MSE] Fix not always calling mediaPlayer seek.
&gt; -        https://bugs.webkit.org/show_bug.cgi?id=139139
&gt; +        No support for innerHTML on SVGElement
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=136903
&gt;  
&gt; -        Reviewed by Jer Noble.
&gt; +        Reviewed by NOBODY (OOPS!).
&gt;  
&gt; -        Original comment states that media source shall always be notified of seek if it&apos;s not closed.
&gt; +        Two parts to this patch:
&gt; +        1. Move innerHTML/outerHTML to Element so SVG elements can inherit them, per https://dvcs.w3.org/hg/innerhtml/raw-file/tip/index.html#innerhtml
&gt; +        2. Make sure fragment insertion is processed relative to the proper node, per http://www.whatwg.org/specs/web-apps/current-work/#adjusted-current-node
&gt;  
&gt; -        No new tests needed.
&gt; +        The latter part was ported over from Blink. 
&gt;  

Something really crazy is going on here. I suggest you revert all your changes to ChangeLog, update, then call prepare-ChangeLog again and add your content back.

&gt; Source/WebCore/ChangeLog:16
&gt; +        * bindings/objc/PublicDOMInterfaces.h: Move innerHTML/outerHTML to Element

Nit: Period at end of sentence.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051669</commentid>
    <comment_count>14</comment_count>
      <attachid>242361</attachid>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-12-01 16:47:46 -0800</bug_when>
    <thetext>Created attachment 242361
[WIP] fix.patch


&gt; You need to fill in the OOPS! lines here - at least the description and the bug.

Yes, my bad. I missed the LayoutTests ChangeLog :( Fixed.

&gt;For the s/dom/dom-static-property-for-in-iteration-expected.txt line, 
&gt;you should probably explain why this changed. e.g. You moved innerHTML 
&gt;and outerHTML onto Element.

Done.

&gt;And I think this line is wrong:

&gt;platform/mac/svg/in-html/svg-inner-html-expected.png: Added

&gt;Didn&apos;t you remove that image now that it is a text test?

This was intentional. The reason: when I started working on this I was quickly able to get innerHTML to return the proper string even though it failed to render properly in an HTML document. So I think we want to test that both 1) innerHTML does the right thing DOM-wise - here I&apos;m checking the innerHTML of the &lt;pattern&gt; added through defs.innerHTML - and 2) that the proper renderer gets invoked to make the rectangle green. Is there a better way? Do I also need a .svg version of the test?

&gt;&gt; LayoutTests/svg/css/svg-attribute-length-parsing-expected.txt:2
&gt;&gt; +Test
&gt;&gt;  Test CSS parsing on SVG presentation attributes.

&gt;Was this expected to change? I don&apos;t see the actual test changing.

The test is unchanged, but the expected result is different. The test code in svg-attribute-length-parsin.js writes &apos;Test&apos; to the innerHTML of an SVG element it creates. This was a no-op in the past but obviously no longer is; thus I believe this new expected.txt to be the correct one. Alternatively, I could fix the JS code to not add that innerHTML &apos;Test&apos; string but I wasn&apos;t sure if this might have other side-effects.

&gt; -        No new tests needed.
&gt; +        The latter part was ported over from Blink. 
&gt;  

&gt;Something really crazy is going on here. I suggest you revert all your changes to &gt;ChangeLog, update, then call prepare-ChangeLog again and add your content back.

Something really crazy seems the proper technical term. Couldn&apos;t make sense of it either so reverted and added content back in.


&gt;Nit: Period at end of sentence.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051777</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-02 02:01:35 -0800</bug_when>
    <thetext>Attachment 242361 did not pass style-queue:


ERROR: Source/WebCore/dom/Element.h:580:  The parameter name &quot;ec&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/html/parser/HTMLTreeBuilder.cpp:2847:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 2 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051782</commentid>
    <comment_count>16</comment_count>
      <attachid>242361</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-02 02:49:50 -0800</bug_when>
    <thetext>Comment on attachment 242361
[WIP] fix.patch

Clearing flags on attachment: 242361

Committed r176630: &lt;http://trac.webkit.org/changeset/176630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1051783</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-12-02 02:49:53 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1055653</commentid>
    <comment_count>18</comment_count>
    <who name="Sylvain Galineau">galineau</who>
    <bug_when>2014-12-15 10:01:25 -0800</bug_when>
    <thetext>*** Bug 135698 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1104431</commentid>
    <comment_count>19</comment_count>
    <who name="">rmcerlean</who>
    <bug_when>2015-06-24 11:54:17 -0700</bug_when>
    <thetext>Can anyone confirm what version this fix is/will be included in?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>238277</attachid>
            <date>2014-09-17 18:11:41 -0700</date>
            <delta_ts>2014-09-17 18:11:41 -0700</delta_ts>
            <desc>on safari.</desc>
            <filename>Screen Shot 2014-09-17 at 6.10.58 PM.png</filename>
            <type>image/png</type>
            <size>5548</size>
            <attacher name="Damien Nozay [:dnozay]">damien.nozay</attacher>
            
              <data encoding="base64">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
spaVYm83BRAJ8SqYisnJt4gfxJkB8LV/cnKibXLyaz3i3+8D0Pl+2o/Log2sAdgl843gasJT2eO/
2n8A8ir/0XiRaDwAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5z
Ong9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRG
IHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+
CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4
aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxY
RGltZW5zaW9uPjQyNjwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVs
WURpbWVuc2lvbj4yODQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlw
dGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KlSi+qQAACPdJREFUeAHt10FOI1AQQ8Fh
xMFyNW42NwsDW1ooa7/K8pONy42lvD2fzz8+BAgQ6An87UWWmAABAl8C5s8dECAQFTB/0eLFJkDA
/LkBAgSiAuYvWrzYBAiYPzdAgEBUwPxFixebAAHz5wYIEIgKmL9o8WITIGD+3AABAlEB8xctXmwC
BMyfGyBAICpg/qLFi02AgPlzAwQIRAXMX7R4sQkQMH9ugACBqID5ixYvNgEC5s8NECAQFTB/0eLF
JkDA/LkBAgSiAuYvWrzYBAiYPzdAgEBUwPxFixebAAHz5wYIEIgKmL9o8WITIGD+3AABAlEB8xct
XmwCBMyfGyBAICpg/qLFi02AgPlzAwQIRAXMX7R4sQkQMH9ugACBqID5ixYvNgEC5s8NECAQFTB/
0eLFJkDA/LkBAgSiAuYvWrzYBAiYPzdAgEBUwPxFixebAAHz5wYIEIgKmL9o8WITIGD+3AABAlEB
8xctXmwCBMyfGyBAICpg/qLFi02AgPlzAwQIRAXMX7R4sQkQMH9ugACBqID5ixYvNgEC5s8NECAQ
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
sxQ6gP/bSQAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>238278</attachid>
            <date>2014-09-17 18:12:15 -0700</date>
            <delta_ts>2014-09-17 18:12:15 -0700</delta_ts>
            <desc>on chrome.</desc>
            <filename>Screen Shot 2014-09-17 at 6.11.54 PM.png</filename>
            <type>image/png</type>
            <size>5977</size>
            <attacher name="Damien Nozay [:dnozay]">damien.nozay</attacher>
            
              <data encoding="base64">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
spaVYm83BRAJ8SqYisnJt4gfxJkB8LV/cnKibXLyaz3i3+8D0Pl+2o/Log2sAdgl843gasJT2eO/
2n8A8ir/0XiRaDwAAAGdaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5z
Ong9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRG
IHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+
CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4
aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxY
RGltZW5zaW9uPjM4NDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVs
WURpbWVuc2lvbj4yNjY8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlw
dGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K5bmPMQAACqRJREFUeAHt20GOFDYQBdAQ
YMGh0DDiXOw4FtIw0tyJBaBOR2xY2KiFhqrv4mUVmWZcflX8OKj94nK5/OMfAgQIdAj827GpPQkQ
IPC/gAAyBwQItAkIoDZ6GxMgIIDMAAECbQICqI3exgQICCAzQIBAm4AAaqO3MQECAsgMECDQJiCA
2uhtTICAADIDBAi0CQigNnobEyAggMwAAQJtAgKojd7GBAgIIDNAgECbgABqo7cxAQICyAwQINAm
IIDa6G1MgIAAMgMECLQJCKA2ehsTICCAzAABAm0CAqiN3sYECAggM0CAQJuAAGqjtzEBAgLIDBAg
0CYggNrobUyAgAAyAwQItAkIoDZ6GxMgIIDMAAECbQICqI3exgQICCAzQIBAm4AAaqO3MQECAsgM
ECDQJiCA2uhtTICAADIDBAi0CQigNnobEyAggMwAAQJtAgKojd7GBAgIIDNAgECbgABqo7cxAQIC
yAwQINAmIIDa6G1MgIAAMgMECLQJCKA2ehsTICCAzAABAm0CAqiN3sYECAggM0CAQJuAAGqjtzEB
AgLIDBAg0CYggNrobUyAgAAyAwQItAkIoDZ6GxMgIIDMAAECbQICqI3exgQICCAzQIBAm4AAaqO3
MQECAsgMECDQJiCA2uhtTICAADIDBAi0Cbxq2/m3Nn54eHh8fPyt3+o3ERglcHd3d39/f/qRDgug
z58/f/r06e3btzv3V6/+P9G3b992H7iu+wyf3XicMhtPT0+Xy0UA7fr4B9ffvXv34cOH3QanDNDP
9atZIP48Dz//+242Pn78+PPHzv13fwd0bu9UTuB4gcP+F+zqff2v5ZcvX3bwb968uf7SLz5w/VWf
4XP6/Fz/FLx8+XJ3ioPW3YAOapZSCUwTEEDTOuo8BA4SEEAHNUupBKYJCKBpHXUeAgcJCKCDmqVU
AtMEBNC0jjoPgYMEBNBBzVIqgWkCAmhaR52HwEECAuigZimVwDSB874JfX0d8+OrzMtW/Hg784sP
XH+Xz/BZDs9Bs/FjhnenOGjdDeigZimVwDSB825A3oLtZtAbt7/njZu3YLs/BdYJECBwq4D/BbtV
yucIEHh2AQH07KR+IAECtwoIoFulfI4AgWcXEEDPTuoHEiBwq4AAulXK5wgQeHYBAfTspH4gAQK3
CgigW6V8jgCBZxcQQM9O6gcSIHCrwHnfhPYWbNdbb9z+njdu3oLt/hRYJ0CAwK0C592AvAXb9dZb
MG/BdrMRu+7vgGJbozAC8wUE0PweOyGBWAEBFNsahRGYLyCA5vfYCQnECgig2NYojMB8AQE0v8dO
SCBWQADFtkZhBOYLCKD5PXZCArECAii2NQojMF/gvG9Cewu2m0pvwbwF281G7LobUGxrFEZgvsB5
NyBvwXZT6S2Yt2C72YhddwOKbY3CCMwXEEDze+yEBGIFBFBsaxRGYL6AAJrfYyckECsggGJbozAC
8wUE0PweOyGBWAEBFNsahRGYLyCA5vfYCQnECgig2NYojMB8gfO+Ce0t2G4qvQXzFmw3G7HrbkCx
rVEYgfkC592AvAXbTaW3YN6C7WYjdt0NKLY1CiMwX0AAze+xExKIFRBAsa1RGIH5AgJofo+dkECs
gACKbY3CCMwXEEDze+yEBGIFBFBsaxRGYL6AAJrfYyckECsggGJbozAC8wXO+ya0t2C7qfQWzFuw
3WzErrsBxbZGYQTmC5x3A/IWbDeV3oJ5C7abjdh1N6DY1iiMwHwBATS/x05IIFZAAMW2RmEE5gsI
oPk9dkICsQICKLY1CiMwX0AAze+xExKIFRBAsa1RGIH5AgJofo+dkECsgACKbY3CCMwXOO+b0N6C
7abSWzBvwXazEbvuBhTbGoURmC9w3g3IW7DdVHoL5i3YbjZi192AYlujMALzBQTQ/B47IYFYAQEU
2xqFEZgvIIDm99gJCcQKCKDY1iiMwHwBATS/x05IIFZAAMW2RmEE5gsIoPk9dkICsQICKLY1CiMw
X+C8b0J7C7abSm/BvAXbzUbsuhtQbGsURmC+wHk3IG/BdlPpLZi3YLvZiF13A4ptjcIIzBcQQPN7
7IQEYgUEUGxrFEZgvoAAmt9jJyQQKyCAYlujMALzBQTQ/B47IYFYAQEU2xqFEZgvIIDm99gJCcQK
CKDY1iiMwHyB874J7S3Ybiq9BfMWbDcbsetuQLGtURiB+QLn3YC8BdtNpbdg3oLtZiN23Q0otjUK
IzBfQADN77ETEogVEECxrVEYgfkCAmh+j52QQKyAAIptjcIIzBcQQPN77IQEYgUEUGxrFEZgvoAA
mt9jJyQQKyCAYlujMALzBc77JrS3YLup9BbMW7DdbMSuuwHFtkZhBOYLnHcD8hZsN5XegnkLtpuN
2HU3oNjWKIzAfAEBNL/HTkggVkAAxbZGYQTmCwig+T12QgKxAgIotjUKIzBfQADN77ETEogVEECx
rVEYgfkCAmh+j52QQKyAAIptjcIIzBc475vQ3oLtptJbMG/BdrMRu+4GFNsahRGYL3DeDchbsN1U
egvmLdhuNmLX3YBiW6MwAvMFBND8HjshgVgBARTbGoURmC8ggOb32AkJxAoIoNjWKIzAfAEBNL/H
TkggVkAAxbZGYQTmCwig+T12QgKxAgIotjUKIzBf4LxvQnsLtptKb8G8BdvNRuy6G1BsaxRGYL7A
eTcgb8F2U+ktmLdgu9mIXXcDim2NwgjMFxBA83vshARiBQRQbGsURmC+gACa32MnJBArIIBiW6Mw
AvMFBND8HjshgVgBARTbGoURmC8ggOb32AkJxAoIoNjWKIzAfIHzvgntLdhuKr0F8xZsNxux625A
sa1RGIH5AufdgB4fH79//77rzOvXr6+/9PXr190Hrus+w2c3HqfMxtPT0/v373enOGj9xeVyOajc
h4eHawAdVLBSCfwhgbu7u/v7+z/0w8t+7GEBVOZiIwIECgT8HVABsi0IEFgLCKC1i1UCBAoEBFAB
si0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0I
EFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgL
CKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1
i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UC
BAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoE
BFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFAB
si0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0I
EFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoEBFABsi0IEFgL
CKC1i1UCBAoEBFABsi0IEFgLCKC1i1UCBAoE/gOVuHKWeRXR2wAAAABJRU5ErkJggg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241604</attachid>
            <date>2014-11-14 11:42:26 -0800</date>
            <delta_ts>2014-12-01 14:54:09 -0800</delta_ts>
            <desc>[WIP] fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>15871</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50
ZXJmYWNlcy5oCShyZXZpc2lvbiAxNzU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw4
IEBACiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50TGVmdCBXRUJLSVRfQVZBSUxBQkxF
X01BQygxMF81KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBjbGllbnRUb3AgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNSk7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmluZyAq
aW5uZXJUZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqaW5uZXJIVE1MOworQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqb3V0ZXJIVE1M
OwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpmaXJzdEVsZW1lbnRD
aGlsZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHN0
cm9uZykgRE9NRWxlbWVudCAqbGFzdEVsZW1lbnRDaGlsZCBXRUJLSVRfQVZBSUxBQkxFX01BQygx
MF82KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqcHJldmlvdXNF
bGVtZW50U2libGluZyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKQEAgLTQ3Niw5ICs0Nzgs
NyBAQAogQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaWROYW1lOwogQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqbGFuZzsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmRpcjsKLUBwcm9w
ZXJ0eSAoY29weSkgTlNTdHJpbmcgKmlubmVySFRNTDsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJp
bmcgKmlubmVyVGV4dDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm91dGVySFRNTDsKIEBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm91dGVyVGV4dDsKIEBwcm9wZXJ0eSAocmVhZG9ubHks
IHN0cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKmNoaWxkcmVuOwogQHByb3BlcnR5IChjb3B5KSBO
U1N0cmluZyAqY29udGVudEVkaXRhYmxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2
aXNpb24gMTc1ODI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgog
I2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93c0Nv
bGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
TXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKQEAgLTgxLDYgKzgyLDcgQEAKICNpbmNs
dWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJodG1s
ZWRpdGluZy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3Ry
aW5nLmg+CkBAIC0yMDExLDcgKzIwMTMsNjggQEAKICAgICBFdmVudERpc3BhdGNoZXI6OmRpc3Bh
dGNoRXZlbnQodGhpcywgZXZlbnQucmVsZWFzZSgpKTsKIH0KIAordm9pZCBFbGVtZW50OjptZXJn
ZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAg
Tm9kZSogbmV4dCA9IG5vZGUubmV4dFNpYmxpbmcoKTsKKyAgICBpZiAoIWlzPFRleHQ+KG5leHQp
KQorICAgICAgICByZXR1cm47CiAKKyAgICBSZWY8VGV4dD4gdGV4dE5vZGUobm9kZSk7CisgICAg
UmVmPFRleHQ+IHRleHROZXh0KGRvd25jYXN0PFRleHQ+KCpuZXh0KSk7CisgICAgdGV4dE5vZGUt
PmFwcGVuZERhdGEodGV4dE5leHQtPmRhdGEoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAgICAg
cmV0dXJuOworICAgIHRleHROZXh0LT5yZW1vdmUoZWMpOworfQorCitTdHJpbmcgRWxlbWVudDo6
aW5uZXJIVE1MKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzLCBDaGls
ZHJlbk9ubHkpOworfQorCitTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRPdXRl
ckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBFbGVt
ZW50KiBwID0gcGFyZW50RWxlbWVudCgpOworICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KHApKSB7
CisgICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gcGFyZW50ID0gZG93bmNhc3Q8SFRN
TEVsZW1lbnQ+KHApOworICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7
CisgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2libGluZygpOworCisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRN
TChodG1sLCBwYXJlbnQuZ2V0KCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOworICAgIGlm
IChlYykKKyAgICAgICAgcmV0dXJuOworICAgICAgCisgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQo
ZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlzLCBlYyk7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBu
ZXh0ID8gbmV4dC0+cHJldmlvdXNTaWJsaW5nKCkgOiBudWxscHRyOworICAgIGlmICghZWMgJiYg
aXM8VGV4dD4obm9kZS5nZXQoKSkpCisgICAgICAgIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShkb3du
Y2FzdDxUZXh0Pigqbm9kZSksIGVjKTsKKyAgICBpZiAoIWVjICYmIGlzPFRleHQ+KHByZXYuZ2V0
KCkpKQorICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKnByZXYp
LCBlYyk7Cit9CisKKwordm9pZCBFbGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBo
dG1sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21l
bnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChodG1sLCB0aGlz
LCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKSkgeworICAgICAgICBDb250YWluZXJOb2RlKiBj
b250YWluZXIgPSB0aGlzOworCisjaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgICAg
IGlmIChpczxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhpcykpCisgICAgICAgICAgICBjb250YWlu
ZXIgPSBkb3duY2FzdDxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhpcykuY29udGVudCgpOworI2Vu
ZGlmCisKKyAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCpjb250YWluZXIsIGZy
YWdtZW50LnJlbGVhc2UoKSwgZWMpOworICAgIH0KK30KKwogU3RyaW5nIEVsZW1lbnQ6OmlubmVy
VGV4dCgpCiB7CiAgICAgLy8gV2UgbmVlZCB0byB1cGRhdGUgbGF5b3V0LCBzaW5jZSBwbGFpblRl
eHQgdXNlcyBsaW5lIGJveGVzIGluIHRoZSByZW5kZXIgdHJlZS4KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAkocmV2aXNpb24gMTc1ODI2KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMzkxLDYgKzM5MSwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVGb2N1c0FwcGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZp
cnR1YWwgdm9pZCBibHVyKCk7CiAKKyAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CisgICAg
U3RyaW5nIG91dGVySFRNTCgpIGNvbnN0OworICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0
cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHNldE91dGVySFRNTChjb25zdCBTdHJp
bmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGlubmVyVGV4
dCgpOwogICAgIFN0cmluZyBvdXRlclRleHQoKTsKICAKQEAgLTU2Niw2ICs1NzAsOCBAQAogICAg
IC8vIHBhcnNlQXR0cmlidXRlIChjYWxsZWQgdmlhIHNldEF0dHJpYnV0ZSgpKSBhbmQKICAgICAv
LyBzdmdBdHRyaWJ1dGVDaGFuZ2VkIChjYWxsZWQgd2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNl
VmFsdWUgaXMgc2V0KQogICAgIHZvaWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcpOworICAgIAorICAgIHN0YXRpYyB2b2lkIG1lcmdlV2l0
aE5leHRUZXh0Tm9kZShUZXh0JiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKIHByaXZhdGU6
CiAgICAgYm9vbCBpc1RleHROb2RlKCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
CShyZXZpc2lvbiAxNzU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTEwOCw2ICsxMDgsOSBAQAogCiAgICAgLy8gSFRNTCA1CiAgICAgTm9k
ZUxpc3QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFs
IERPTVN0cmluZyBuYW1lKTsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFp
c2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTDsKKyAgICBbVHJlYXRO
dWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIG91dGVySFRNTDsKKyAgICAgICAgICAgICAKIAogICAgIFtSZWZsZWN0PWNsYXNzXSBhdHRy
aWJ1dGUgRE9NU3RyaW5nIGNsYXNzTmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9r
ZW5MaXN0IGNsYXNzTGlzdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShy
ZXZpc2lvbiAxNzU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDgsNyArNDgsNiBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMu
aCIKLSNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQuaCIKICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAtNDExLDY1ICs0MTAsNiBAQAogICAgIH0KIH0KIAotU3Ry
aW5nIEhUTUxFbGVtZW50Ojppbm5lckhUTUwoKSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVN
YXJrdXAoKnRoaXMsIENoaWxkcmVuT25seSk7Ci19Ci0KLVN0cmluZyBIVE1MRWxlbWVudDo6b3V0
ZXJIVE1MKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzKTsKLX0KLQot
dm9pZCBIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgdGhpcywgQWxsb3dTY3Jp
cHRpbmdDb250ZW50LCBlYykpIHsKLSAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0g
dGhpczsKLSNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKGlzPEhUTUxU
ZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKSkKLSAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvd25jYXN0
PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKS5jb250ZW50KCk7Ci0jZW5kaWYKLSAgICAgICAg
cmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdtZW50KCpjb250YWluZXIsIGZyYWdtZW50LnJlbGVhc2Uo
KSwgZWMpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgbWVyZ2VXaXRoTmV4dFRleHROb2RlKFRl
eHQmIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIE5vZGUqIG5leHQgPSBub2RlLm5l
eHRTaWJsaW5nKCk7Ci0gICAgaWYgKCFpczxUZXh0PihuZXh0KSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUmVmPFRleHQ+IHRleHROb2RlKG5vZGUpOwotICAgIFJlZjxUZXh0PiB0ZXh0TmV4dChk
b3duY2FzdDxUZXh0PigqbmV4dCkpOwotICAgIHRleHROb2RlLT5hcHBlbmREYXRhKHRleHROZXh0
LT5kYXRhKCksIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICB0ZXh0TmV4
dC0+cmVtb3ZlKGVjKTsKLX0KLQotdm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0
IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgRWxlbWVudCogcCA9IHBh
cmVudEVsZW1lbnQoKTsKLSAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihwKSkgewotICAgICAgICBl
YyA9IE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0K
LSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+IHBhcmVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50Pihw
KTsKLSAgICBSZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOwotICAgIFJlZlB0
cjxOb2RlPiBuZXh0ID0gbmV4dFNpYmxpbmcoKTsKLQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgcGFy
ZW50LmdldCgpLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAg
ICAgIHJldHVybjsKLSAgICAgIAotICAgIHBhcmVudC0+cmVwbGFjZUNoaWxkKGZyYWdtZW50LnJl
bGVhc2UoKSwgdGhpcywgZWMpOwotICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbmV4dCA/IG5leHQt
PnByZXZpb3VzU2libGluZygpIDogbnVsbHB0cjsKLSAgICBpZiAoIWVjICYmIGlzPFRleHQ+KG5v
ZGUuZ2V0KCkpKQotICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4o
Km5vZGUpLCBlYyk7Ci0gICAgaWYgKCFlYyAmJiBpczxUZXh0PihwcmV2LmdldCgpKSkKLSAgICAg
ICAgbWVyZ2VXaXRoTmV4dFRleHROb2RlKGRvd25jYXN0PFRleHQ+KCpwcmV2KSwgZWMpOwotfQot
CiBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEhUTUxFbGVtZW50Ojp0ZXh0VG9GcmFnbWVu
dChjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1
bWVudCgpKTsKQEAgLTU2MSw3ICs1MDEsNyBAQAogICAgIGlmICghZWMpCiAgICAgICAgIHJlcGxh
Y2VDaGlsZHJlbldpdGhGcmFnbWVudCgqdGhpcywgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7CiB9
Ci0KKyAgICAKIHZvaWQgSFRNTEVsZW1lbnQ6OnNldE91dGVyVGV4dChjb25zdCBTdHJpbmcmIHRl
eHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmIChpZUZvcmJpZHNJbnNlcnRIVE1MKCkp
IHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDE3NTgyNikKKysr
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDgs
MTAgKzQ4LDYgQEAKIAogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBvdmVycmlk
ZTsKIAotICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKLSAgICBTdHJpbmcgb3V0ZXJIVE1M
KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpOwotICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNv
ZGUmKTsKICAgICB2b2lkIHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gMTc1ODI2
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTM4LDExICszOCw5IEBACiAgICAgICAgICAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBET01T
dHJpbmcgYWNjZXNzS2V5OwogCiAgICAgLy8gRXh0ZW5zaW9ucwotICAgICAgICAgICAgIFtUcmVh
dE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01T
dHJpbmcgaW5uZXJIVE1MOwotICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBT
ZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwotICAg
ICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25d
IGF0dHJpYnV0ZSBET01TdHJpbmcgb3V0ZXJIVE1MOwotICAgICAgICAgICAgIFtUcmVhdE51bGxB
cz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcg
b3V0ZXJUZXh0OwotCisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4
Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7CisgICAgW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBv
dXRlclRleHQ7CisgICAgICAgICAgICAgCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRWxlbWVudCBp
bnNlcnRBZGphY2VudEVsZW1lbnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJp
bmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9VW5k
ZWZpbmVkXSBvcHRpb25hbCBFbGVtZW50IGVsZW1lbnQpOwogICAgIFtSYWlzZXNFeGNlcHRpb25d
IHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9N
U3RyaW5nIHdoZXJlLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVC
dWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAxNzU4MjYpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTUgKzMy
MCwxNCBAQAogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZyYWdt
ZW50UGFyc2luZ0NvbnRleHQoKQogICAgIDogbV9mcmFnbWVudCgwKQotICAgICwgbV9jb250ZXh0
RWxlbWVudCgwKQogewogfQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRl
eHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQsIEVs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIDogbV9mcmFnbWVudCgmZnJhZ21lbnQpCi0gICAg
LCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVCghZnJhZ21l
bnQuaGFzQ2hpbGROb2RlcygpKTsKKyAgICBtX2NvbnRleHRFbGVtZW50U3RhY2tJdGVtID0gSFRN
TFN0YWNrSXRlbTo6Y3JlYXRlKGNvbnRleHRFbGVtZW50LCBIVE1MU3RhY2tJdGVtOjpJdGVtRm9y
Q29udGV4dEVsZW1lbnQpOwogfQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0Nv
bnRleHQ6On5GcmFnbWVudFBhcnNpbmdDb250ZXh0KCkKQEAgLTM1Niw3ICszNTUsNyBAQAogCiAg
ICAgaWYgKG1fcGFyc2VyLnRva2VuaXplcigpKSB7CiAgICAgICAgIGJvb2wgaW5Gb3JlaWduQ29u
dGVudCA9ICFtX3RyZWUuaXNFbXB0eSgpCi0gICAgICAgICAgICAmJiAhbV90cmVlLmN1cnJlbnRT
dGFja0l0ZW0oKS0+aXNJbkhUTUxOYW1lc3BhY2UoKQorICAgICAgICAgICAgJiYgIWFkanVzdGVk
Q3VycmVudFN0YWNrSXRlbSgpLT5pc0luSFRNTE5hbWVzcGFjZSgpCiAgICAgICAgICAgICAmJiAh
SFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpKQogICAgICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4
dEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSk7CiAKQEAgLTE2MTcs
NyArMTYxNiw3IEBACiAgICAgICAgICAgICBib29sIHNob3VsZENyZWF0ZUl0ZW0gPSB0cnVlOwog
I2VuZGlmCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSXRlbSkKLSAgICAgICAgICAgICAg
ICBpdGVtID0gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRF
bGVtZW50KCksIEhUTUxTdGFja0l0ZW06Okl0ZW1Gb3JDb250ZXh0RWxlbWVudCk7CisgICAgICAg
ICAgICAgICAgaXRlbSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50U3RhY2tJdGVt
KCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAgaWYg
KGl0ZW0tPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpKQpAQCAtMjg0MCwxNiArMjgzOSwyNyBAQAog
CiAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpUZXh0KTsKIH0KKyAgICAKKy8v
IGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2FkanVz
dGVkLWN1cnJlbnQtbm9kZQorSFRNTFN0YWNrSXRlbSogSFRNTFRyZWVCdWlsZGVyOjphZGp1c3Rl
ZEN1cnJlbnRTdGFja0l0ZW0oKSBjb25zdAoreworICAgIEFTU0VSVCghbV90cmVlLmlzRW1wdHko
KSk7CisgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgbV90cmVlLm9wZW5FbGVtZW50cygp
LT5oYXNPbmx5T25lRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gbV9mcmFnbWVudENvbnRleHQu
Y29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKTsKKyAgICAgICAgCisgICAgcmV0dXJuIG1fdHJlZS5j
dXJyZW50U3RhY2tJdGVtKCk7Cit9CiAKKwogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNz
L3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRtbCN0
cmVlLWNvbnN0cnVjdGlvbgogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBpZiAobV90
cmVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxTdGFja0l0ZW0q
IGl0ZW0gPSBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpOwotICAgIGlmIChpdGVtLT5pc0luSFRN
TE5hbWVzcGFjZSgpKQorICAgIEhUTUxTdGFja0l0ZW0qIGFkanVzdGVkQ3VycmVudE5vZGUgPSBh
ZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKTsKKyAgICBpZiAoYWRqdXN0ZWRDdXJyZW50Tm9kZS0+
aXNJbkhUTUxOYW1lc3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChIVE1M
RWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KGl0ZW0pKSB7CisgICAg
aWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQoYWRqdXN0
ZWRDdXJyZW50Tm9kZSkpIHsKICAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpTdGFydFRhZwogICAgICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSAhPSBNYXRoTUxOYW1lczo6
bWdseXBoVGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjpt
YWxpZ25tYXJrVGFnKQpAQCAtMjg1NywxMSArMjg2NywxMSBAQAogICAgICAgICBpZiAodG9rZW4t
PnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9Ci0gICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRp
b25feG1sVGFnKQorICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5oYXNUYWdOYW1lKE1hdGhN
TE5hbWVzOjphbm5vdGF0aW9uX3htbFRhZykKICAgICAgICAgJiYgdG9rZW4tPnR5cGUoKSA9PSBI
VE1MVG9rZW46OlN0YXJ0VGFnCiAgICAgICAgICYmIHRva2VuLT5uYW1lKCkgPT0gU1ZHTmFtZXM6
OnN2Z1RhZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChIVE1MRWxlbWVudFN0YWNr
Ojppc0hUTUxJbnRlZ3JhdGlvblBvaW50KGl0ZW0pKSB7CisgICAgaWYgKEhUTUxFbGVtZW50U3Rh
Y2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQoYWRqdXN0ZWRDdXJyZW50Tm9kZSkpIHsKICAgICAg
ICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpD
aGFyYWN0ZXIpCkBAIC0yODc0LDYgKzI4ODQsOCBAQAogCiB2b2lkIEhUTUxUcmVlQnVpbGRlcjo6
cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQogewor
ICAgIEhUTUxTdGFja0l0ZW0qIGFkanVzdGVkQ3VycmVudE5vZGUgPSBhZGp1c3RlZEN1cnJlbnRT
dGFja0l0ZW0oKTsKKyAgICAKICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKCkpIHsKICAgICBjYXNl
IEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CkBAIC0yOTI3LDcgKzI5MzksNyBAQAogICAgICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRva2Vu
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGN1cnJlbnROYW1lc3BhY2UgPSBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5uYW1l
c3BhY2VVUkkoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJyZW50TmFtZXNwYWNl
ID0gYWRqdXN0ZWRDdXJyZW50Tm9kZS0+bmFtZXNwYWNlVVJJKCk7CiAgICAgICAgIGlmIChjdXJy
ZW50TmFtZXNwYWNlID09IE1hdGhNTE5hbWVzOjptYXRobWxOYW1lc3BhY2VVUkkpCiAgICAgICAg
ICAgICBhZGp1c3RNYXRoTUxBdHRyaWJ1dGVzKCp0b2tlbik7CiAgICAgICAgIGlmIChjdXJyZW50
TmFtZXNwYWNlID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpIHsKQEAgLTI5MzksNyArMjk1
MSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEhUTUxUb2tlbjo6RW5kVGFn
OiB7Ci0gICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5uYW1lc3BhY2VVUkko
KSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQorICAgICAgICBpZiAoYWRqdXN0ZWRDdXJy
ZW50Tm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkKICAg
ICAgICAgICAgIGFkanVzdFNWR1RhZ05hbWVDYXNlKCp0b2tlbik7CiAKICAgICAgICAgaWYgKHRv
a2VuLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNjcmlwdFRhZyAmJiBtX3RyZWUuY3VycmVudFN0YWNr
SXRlbSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpKSB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkocmV2aXNpb24gMTc1ODI2
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudFN0YWNrLmgi
CiAjaW5jbHVkZSAiSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIgogI2luY2x1ZGUgIkhUTUxQ
YXJzZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiSFRNTFN0YWNrSXRlbS5oIgogI2luY2x1ZGUgIkhU
TUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTcwLDYgKzE3MSw4IEBACiAKICAgICBpbmxpbmUgYm9vbCBz
aG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiopOwogICAg
IHZvaWQgcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qKTsKKyAg
ICAKKyAgICBpbmxpbmUgSFRNTFN0YWNrSXRlbSogYWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCkg
Y29uc3Q7CiAKICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzRm9ySXNpbmRleElucHV0
KEF0b21pY0hUTUxUb2tlbiopOwogCkBAIC0yMDEsMTEgKzIwNCwxMiBAQAogICAgICAgICB+RnJh
Z21lbnRQYXJzaW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50KiBjb250
ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0
RWxlbWVudDsgfQorICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNT
RVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbS0+ZWxlbWVu
dCgpOyB9CisgICAgICAgIEhUTUxTdGFja0l0ZW0qIGNvbnRleHRFbGVtZW50U3RhY2tJdGVtKCkg
Y29uc3QgeyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50U3RhY2tJ
dGVtLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBt
X2ZyYWdtZW50OwotICAgICAgICBFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OworICAgICAgICBS
ZWZQdHI8SFRNTFN0YWNrSXRlbT4gbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbTsKICAgICB9Owog
CiAgICAgYm9vbCBtX2ZyYW1lc2V0T2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>241605</attachid>
            <date>2014-11-14 11:43:16 -0800</date>
            <delta_ts>2014-11-14 11:43:16 -0800</delta_ts>
            <desc>defs-innerHTML.html</desc>
            <filename>defs-innerHTML.html</filename>
            <type>text/html</type>
            <size>655</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxzdHlsZT4KPC9zdHlsZT4KPGJvZHk+CiAgICA8c3ZnIHZlcnNpb249
IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4PSIwcHgiIHk9IjBweCIg
d2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjMwMHB4Ij4KICAgICAgICA8ZGVmcyBpZD0ic3ZnLWRlZnMi
PjwvZGVmcz4KICAgICAgICA8cmVjdCBmaWxsPSJ1cmwoI3BhdHRlcm4pIiBoZWlnaHQ9IjE0OCIg
d2lkdGg9IjI1OSIgeT0iMTA2IiB4PSIxMDkiIHN0cm9rZT0iIzAwMDAwMCIgLz4KICAgIDwvc3Zn
PgogICAgPHNjcmlwdD4KICAgIAlkZWZzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N2Zy1k
ZWZzJyk7CgogICAgCXZhciBuZXdwYXR0ZXJuID0gJzxwYXR0ZXJuIGlkPSJwYXR0ZXJuIiB3aWR0
aD0iMTIiIGhlaWdodD0iMTIiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGQ9
Ik0gMCAwIEwgMTIgMCAxMiAxMiAwIDEyIHoiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIx
IiBmaWxsPSIjZWVlIj48L3BhdGg+PC9wYXR0ZXJuPic7CgogICAgCWNvbnNvbGUubG9nKCdjdXJy
ZW50IHBhdHRlcm4nLCBkZWZzLmlubmVySFRNTCkKICAgIAlkZWZzLmlubmVySFRNTCA9IG5ld3Bh
dHRlcm47CiAgICA8L3NjcmlwdD4KPC9ib2R5Pg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>241606</attachid>
            <date>2014-11-14 11:44:00 -0800</date>
            <delta_ts>2014-11-14 11:44:00 -0800</delta_ts>
            <desc>defs-innerHTML.svg</desc>
            <filename>defs-innerHTML.svg</filename>
            <type>image/svg+xml</type>
            <size>639</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">PHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeD0i
MHB4IiB5PSIwcHgiIHdpZHRoPSI0MDBweCIgaGVpZ2h0PSIzMDBweCI+CiAgICA8ZGVmcyBpZD0i
c3ZnLWRlZnMiPjwvZGVmcz4KICAgIDxyZWN0IGZpbGw9InVybCgjcGF0dGVybikiIGhlaWdodD0i
MTQ4IiB3aWR0aD0iMjU5IiB5PSIxMDYiIHg9IjEwOSIgc3Ryb2tlPSIjMDAwMDAwIiAvPgogICAg
PHNjcmlwdD4KICAgICAgICAvLzwhW0NEQVRBWwogICAgICAgIGRlZnMgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnc3ZnLWRlZnMnKTsKCiAgICAgICAgdmFyIG5ld3BhdHRlcm4gPSAnPHBhdHRl
cm4gaWQ9InBhdHRlcm4iIHdpZHRoPSIxMiIgaGVpZ2h0PSIxMiIgcGF0dGVyblVuaXRzPSJ1c2Vy
U3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDAgTCAxMiAwIDEyIDEyIDAgMTIgeiIgc3Ryb2tlPSIj
ZmZmIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9IiNlZWUiPjwvcGF0aD48L3BhdHRlcm4+JzsKCiAg
ICAgICAgY29uc29sZS5sb2coJ2N1cnJlbnQgcGF0dGVybicsIGRlZnMuaW5uZXJIVE1MKQogICAg
ICAgIGRlZnMuaW5uZXJIVE1MID0gbmV3cGF0dGVybjsKICAgICAgICAvL11dPgogICAgPC9zY3Jp
cHQ+Cgo8L3N2Zz4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242347</attachid>
            <date>2014-12-01 14:54:09 -0800</date>
            <delta_ts>2014-12-01 15:00:56 -0800</delta_ts>
            <desc>[WIP] fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>29041</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3NjYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEyLTAxICBTeWx2YWluIEdhbGluZWF1
ICA8Z2FsaW5lYXVAYWRvYmUuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9tLXN0YXRp
Yy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRtbDogQWRkZWQu
CisKIDIwMTQtMTItMDEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cCB0ZXN0cyBzaG91bGQgbm90IHVzZSBzaGFyZWQgdGVtcG9yYXJ5IGZpbGVzLCBw
YXJ0IDMKSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1p
bi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rv
bS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1m
b3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcs
NyBAQAogUEFTUyBhWyJ3ZWJraXRkcm9wem9uZSJdIGlzIAogUEFTUyBhWyJoaWRkZW4iXSBpcyBm
YWxzZQogUEFTUyBhWyJhY2Nlc3NLZXkiXSBpcyAKLVBBU1MgYVsiaW5uZXJIVE1MIl0gaXMgbmVy
Z2V0CiBQQVNTIGFbImlubmVyVGV4dCJdIGlzIG5lcmdldAotUEFTUyBhWyJvdXRlckhUTUwiXSBp
cyA8YSBpZD0iZm9vIiBocmVmPSJiYXIiPm5lcmdldDwvYT4KIFBBU1MgYVsib3V0ZXJUZXh0Il0g
aXMgbmVyZ2V0CiBQQVNTIGFbImNoaWxkcmVuIl0gaXMgW29iamVjdCBIVE1MQ29sbGVjdGlvbl0K
IFBBU1MgYVsiY29udGVudEVkaXRhYmxlIl0gaXMgaW5oZXJpdApAQCAtNTAsNyArNDgsNyBAQAog
UEFTUyBhWyJzdHlsZSJdIGlzIFtvYmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsi
aWQiXSBpcyBmb28KIFBBU1MgYVsib2Zmc2V0TGVmdCJdIGlzIDgKLVBBU1MgYVsib2Zmc2V0VG9w
Il0gaXMgNzg5CitQQVNTIGFbIm9mZnNldFRvcCJdIGlzIDc1OQogUEFTUyBhWyJvZmZzZXRXaWR0
aCJdIGlzIDM5CiBQQVNTIGFbIm9mZnNldEhlaWdodCJdIGlzIDE4CiBQQVNTIGFbImNsaWVudExl
ZnQiXSBpcyAwCkBAIC02Miw2ICs2MCw4IEBACiBQQVNTIGFbInNjcm9sbFdpZHRoIl0gaXMgMAog
UEFTUyBhWyJzY3JvbGxIZWlnaHQiXSBpcyAwCiBQQVNTIGFbIm9mZnNldFBhcmVudCJdIGlzIFtv
YmplY3QgSFRNTEJvZHlFbGVtZW50XQorUEFTUyBhWyJpbm5lckhUTUwiXSBpcyBuZXJnZXQKK1BB
U1MgYVsib3V0ZXJIVE1MIl0gaXMgPGEgaWQ9ImZvbyIgaHJlZj0iYmFyIj5uZXJnZXQ8L2E+CiBQ
QVNTIGFbImNsYXNzTmFtZSJdIGlzIAogUEFTUyBhWyJjbGFzc0xpc3QiXSBpcyAKIFBBU1MgYVsi
ZGF0YXNldCJdIGlzIFtvYmplY3QgRE9NU3RyaW5nTWFwXQpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC1leHBlY3RlZC5wbmcJKHJldmlzaW9uIDE3NjU5MikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcJKHdvcmtpbmcgY29w
eSkKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4t
aHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMCwwICsxICMjCithcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0
cmlidXRlLWxlbmd0aC1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVu
Z3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAor
VGVzdAogVGVzdCBDU1MgcGFyc2luZyBvbiBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9pbi1odG1s
L3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTIDxwYXRoIGQ9Ik0gMCAwIEwgMjU5IDAgMjU5
IDE0OCAwIDE0OCB6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iIzAwZmYw
MCI+PC9wYXRoPgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1o
dG1sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5u
ZXItaHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB3aWR0
aD0iNDAwcHgiIGhlaWdodD0iMzAwcHgiPgorICAgICAgICAgICAgPGRlZnMgaWQ9InN2Zy1kZWZz
Ij48L2RlZnM+CisgICAgICAgICAgICA8cmVjdCBmaWxsPSJ1cmwoI3BhdHRlcm4pIiBoZWlnaHQ9
IjE0OCIgd2lkdGg9IjI1OSIgeT0iMSIgeD0iMSIgc3Ryb2tlPSIjMDAwMDAwIiAvPgorICAgIDwv
c3ZnPgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBkZWZzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N2Zy1kZWZzJyk7CisKKyAgICAgICAgdmFyIG5ld1BhdHRlcm4gPSAnPHBhdHRlcm4g
aWQ9InN2Zy1wYXR0ZXJuIiB3aWR0aD0iMjU5IiBoZWlnaHQ9IjE0OCIgcGF0dGVyblVuaXRzPSJ1
c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDAgTCAyNTkgMCAyNTkgMTQ4IDAgMTQ4IHoiIHN0
cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjMDBmZjAwIj48L3BhdGg+PC9wYXR0
ZXJuPic7CisKKyAgICAgICAgZGVmcy5pbm5lckhUTUwgPSBuZXdQYXR0ZXJuOworCisgICAgICAg
IHZhciB2ZXJpZnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnLXBhdHRlcm4nKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCh2ZXJpZnkuaW5uZXJIVE1MKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NzY2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTQyICsxLDQ3IEBACi0yMDE0LTEyLTAxICBCYXJ0bG9taWVqIEdhamRhICA8Yi5nYWpkYUBzYW1z
dW5nLmNvbT4KKzIwMTQtMTItMDEgIFN5bHZhaW4gR2FsaW5lYXUgIDxnYWxpbmVhdUBhZG9iZS5j
b20+CiAKLSAgICAgICAgW01TRV0gRml4IG5vdCBhbHdheXMgY2FsbGluZyBtZWRpYVBsYXllciBz
ZWVrLgotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5
MTM5CisgICAgICAgIE5vIHN1cHBvcnQgZm9yIGlubmVySFRNTCBvbiBTVkdFbGVtZW50CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzY5MDMKIAotICAg
ICAgICBSZXZpZXdlZCBieSBKZXIgTm9ibGUuCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgogCi0gICAgICAgIE9yaWdpbmFsIGNvbW1lbnQgc3RhdGVzIHRoYXQgbWVkaWEgc291
cmNlIHNoYWxsIGFsd2F5cyBiZSBub3RpZmllZCBvZiBzZWVrIGlmIGl0J3Mgbm90IGNsb3NlZC4K
KyAgICAgICAgVHdvIHBhcnRzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIE1vdmUgaW5uZXJI
VE1ML291dGVySFRNTCB0byBFbGVtZW50IHNvIFNWRyBlbGVtZW50cyBjYW4gaW5oZXJpdCB0aGVt
LCBwZXIgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9pbm5lcmh0bWwvcmF3LWZpbGUvdGlwL2luZGV4
Lmh0bWwjaW5uZXJodG1sCisgICAgICAgIDIuIE1ha2Ugc3VyZSBmcmFnbWVudCBpbnNlcnRpb24g
aXMgcHJvY2Vzc2VkIHJlbGF0aXZlIHRvIHRoZSBwcm9wZXIgbm9kZSwgcGVyIGh0dHA6Ly93d3cu
d2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2FkanVzdGVkLWN1cnJlbnQt
bm9kZQogCi0gICAgICAgIE5vIG5ldyB0ZXN0cyBuZWVkZWQuCisgICAgICAgIFRoZSBsYXR0ZXIg
cGFydCB3YXMgcG9ydGVkIG92ZXIgZnJvbSBCbGluay4gCiAKLSAgICAgICAgKiBodG1sL0hUTUxN
ZWRpYUVsZW1lbnQuY3BwOgotICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6c2Vl
a1RpbWVyRmlyZWQpOgorICAgICAgICBUZXN0OiBzdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC5o
dG1sCiAKLTIwMTQtMTItMDEgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+
CisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmg6IE1vdmUgaW5u
ZXJIVE1ML291dGVySFRNTCB0byBFbGVtZW50CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6bWVyZ2VXaXRoTmV4dFRleHROb2RlKTogSGVscGVy
IHVzZWQgYnkgRWxlbWVudDo6aW5uZXJIVE1ML291dGVySFRNTCBhcyB3ZWxsIGFzIEhUTUxFbGVt
ZW50Ojppbm5lclRleHQvb3V0ZXJUZXh0OyBtb3ZlZCB0byBFbGVtZW50IGFzIHByb3RlY3RlZCBz
dGF0aWMuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojppbm5lckhUTUwpOiBNb3ZlZCBmcm9t
IEhUTUxFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6b3V0ZXJIVE1MKTogTW92
ZWQgZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldE91dGVy
SFRNTCk6IE1vdmVkIGZyb20gSFRNTEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpzZXRJbm5lckhUTUwpOiBNb3ZlZCBmcm9tIEhUTUxFbGVtZW50LgorICAgICAgICAqIGRvbS9F
bGVtZW50Lmg6IAorICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hU
TUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50Ojppbm5lckhUTUwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6Om91dGVySFRNTCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0SW5uZXJIVE1MKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZSk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKTogRGVsZXRlZC4K
KyAgICAgICAgKiBodG1sL0hUTUxFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVu
dC5pZGw6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJh
Z21lbnRQYXJzaW5nQ29udGV4dCk6IG5vIG1vcmUgbV9jb250ZXh0RWxlbWVudC4KKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6Y29uc3RydWN0VHJlZSk6IHJlYWQgbmFtZXNwYWNl
IGZyb20gYWRqdXN0ZWQgY3VycmVudCBub2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVC
dWlsZGVyOjpyZXNldEluc2VydGlvbk1vZGVBcHByb3ByaWF0ZWx5KTogdXNlIGNvbnRleHRFbGVt
ZW50U3RhY2tJdGVtIGZvciBpbnNlcnRpb24uCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1
aWxkZXI6OmFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSk6IGNvbXB1dGUgYWRqdXN0ZWQgY3VycmVu
dCBub2RlLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNz
VG9rZW5JbkZvcmVpZ25Db250ZW50KTogdXNlIGFkanVzdGVkIGN1cnJlbnQgbm9kZSBmb3IgY29u
dGV4dC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6cHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudCk6IHVzZSBhZGp1c3RlZCBjdXJyZW50IG5vZGUgdG8gcmVhZCBuYW1lc3Bh
Y2UuCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OmNvbnRleHRF
bGVtZW50KTogRGVsZXRlZC4gUmVhZCBmcm9tIGNvbnRleHRFbGVtZW50U3RhY2tJdGVtLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpj
b250ZXh0RWxlbWVudFN0YWNrSXRlbSk6IEFkZGVkLgogCi0gICAgICAgIEltcGxlbWVudCB5ZWxs
b3cgaGlnaGxpZ2h0IGZvciBXZWJLaXQxIGRhdGEgZGV0ZWN0b3JzCi0gICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg5NTYKLSAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzE4OTkyMTg1PgogCi0gICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFraW4uCi0KLSAg
ICAgICAgKiBwYWdlL1RleHRJbmRpY2F0b3IuY3BwOgotICAgICAgICAoV2ViQ29yZTo6VGV4dElu
ZGljYXRvcjo6Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUpOgotICAgICAgICAoV2ViQ29yZTo6
VGV4dEluZGljYXRvcjo6VGV4dEluZGljYXRvcik6Ci0gICAgICAgICogcGFnZS9UZXh0SW5kaWNh
dG9yLmg6Ci0gICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjpzZWxlY3Rpb25SZWN0SW5T
Y3JlZW5Db29yZGluYXRlcyk6Ci0gICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjp0ZXh0
Qm91bmRpbmdSZWN0SW5TY3JlZW5Db29yZGluYXRlcyk6Ci0gICAgICAgIChXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yOjpzZWxlY3Rpb25SZWN0SW5XaW5kb3dDb29yZGluYXRlcyk6IERlbGV0ZWQuCi0g
ICAgICAgIChXZWJDb3JlOjpUZXh0SW5kaWNhdG9yOjp0ZXh0Qm91bmRpbmdSZWN0SW5XaW5kb3dD
b29yZGluYXRlcyk6IERlbGV0ZWQuCi0gICAgICAgIFN0b3JlIFRleHRJbmRpY2F0b3IgcmVjdHMg
aW4gc2NyZWVuIGNvb3JkaW5hdGVzLCBzaW5jZSB0aGF0J3Mgd2hhdCB3ZQotICAgICAgICB3YW50
IGFueXdheSwgYW5kIHRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIHNoYXJlIHRoaXMgY29kZSBiZXR3
ZWVuIHRoZSBXZWJLaXRzLgotCi0gICAgICAgICogcGFnZS9tYWMvVGV4dEluZGljYXRvcldpbmRv
dy5tbToKLSAgICAgICAgKC1bV2ViVGV4dEluZGljYXRvclZpZXcgaW5pdFdpdGhGcmFtZTp0ZXh0
SW5kaWNhdG9yOm1hcmdpbjpdKToKLSAgICAgICAgKFdlYkNvcmU6OlRleHRJbmRpY2F0b3JXaW5k
b3c6OnNldFRleHRJbmRpY2F0b3IpOgotICAgICAgICBBdm9pZCBzb21lIHJlY3QgY29udmVyc2lv
biBiZWNhdXNlIHRoZSBUZXh0SW5kaWNhdG9yIHJlY3RzIGFyZSBhbHJlYWR5IGluIHNjcmVlbiBj
b29yZGluYXRlcy4KLQotMjAxNC0xMi0wMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBw
bGUuY29tPgotCi0gICAgICAgIFJlbW92ZSBvbGQgc2l0ZSBzcGVjaWZpYyBxdWlya3MgY29kZSB0
aGF0IHdhcyBhZGRlZCBpbiAyMDA5Ci0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzkxNDEKLQotICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2aXN0
by4KLQotICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvTmV0d29ya2luZ0NvbnRleHQuaDoKLSAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlSGFuZGxlSW50ZXJuYWwuaDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlSW50ZXJuYWw6OlJlc291cmNlSGFuZGxlSW50ZXJu
YWwpOgotICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1t
OgotICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0KToKLQotMjAxNC0xMi0w
MSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgotCi0gICAgICAgIFdlYiBJ
bnNwZWN0b3I6IERPTUV4Y2VwdGlvbnMgZG8gbm90IHNob3cgdGhlIGVycm9yIG1lc3NhZ2Ugc3Ry
aW5nIGluIFBhdXNlIFJlYXNvbiBzZWN0aW9uCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg5ODgKLQotICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCi0KLSAgICAgICAgKiBpbnNwZWN0b3IvV2ViSW5qZWN0ZWRTY3JpcHRIb3N0LmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OldlYkluamVjdGVkU2NyaXB0SG9zdDo6dHlwZSk6Ci0gICAg
ICAgIEdpdmUgYWxsIERPTSBFeGNlcHRpb24gdHlwZXMgdGhlICJlcnJvciIgUmVtb3RlT2JqZWN0
IHN1YnR5cGUuCi0KLTIwMTQtMTItMDEgIEJhcnRsb21pZWogR2FqZGEgIDxiLmdhamRhQHNhbXN1
bmcuY29tPgotCi0gICAgICAgIFtNU0VdIFVuc2V0IHRpbWVzdGFtcHMgb2YgdHJhY2tidWZmZXJz
IGR1cmluZyBSZXNldCBQYXJzZXIgU3RhdGUgYWxnb3JpdGhtLgotICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM5MDc1LgotCi0gICAgICAgIFJldmlld2Vk
IGJ5IEplciBOb2JsZS4KLQotICAgICAgICBTcGVjaWZpY2F0aW9uIHJlcXVpcmVzIGZyb20gdXMg
dG8gdW5zZXQgdGltZXN0YW1wcyBmb3IgdHJhY2tCdWZmZXJzCi0gICAgICAgIGR1cmluZyBhYm9y
dCgpIG1ldGhvZC4KLQotICAgICAgICBUZXN0OiBtZWRpYS9tZWRpYS1zb3VyY2UvbWVkaWEtc291
cmNlLWFwcGVuZC1ub25zeW5jLXNhbXBsZS1hZnRlci1hYm9ydC5odG1sCi0KLSAgICAgICAgKiBN
b2R1bGVzL21lZGlhc291cmNlL1NvdXJjZUJ1ZmZlci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpT
b3VyY2VCdWZmZXI6OnJlc2V0UGFyc2VyU3RhdGUpOgotICAgICAgICAoV2ViQ29yZTo6U291cmNl
QnVmZmVyOjphYm9ydCk6Ci0gICAgICAgICogTW9kdWxlcy9tZWRpYXNvdXJjZS9Tb3VyY2VCdWZm
ZXIuaDoKLQotMjAxNC0xMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgotCi0g
ICAgICAgIFRyYW5zZm9ybSBTdHlsZUJ1aWxkZXJDdXN0b20gaW50byBhIGNsYXNzIGFuZCBtYXJr
IGl0IGFzIGEgZnJpZW5kIG9mIFJlbmRlclN0eWxlCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg5OTkKLQotICAgICAgICBSZXZpZXdlZCBieSBTYW0g
V2VpbmlnLgotCi0gICAgICAgIFRyYW5zZm9ybSBTdHlsZUJ1aWxkZXJDdXN0b20gaW50byBhIGNs
YXNzIGFuZCBtYXJrIGl0IGFzIGEgZnJpZW5kIG9mCi0gICAgICAgIFJlbmRlclN0eWxlLiBUaGlz
IGlzIG5lZWRlZCBiZWNhdXNlIHNvbWUgb2YgdGhlIFN0eWxlQnVpbGRlckN1c3RvbQotICAgICAg
ICBmdW5jdGlvbnMgbmVlZCB0byBhY2Nlc3MgUmVuZGVyU3R5bGUncyBwcml2YXRlIEFQSS4KLQot
ICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KLQotICAgICAgICAqIGNz
cy9TdHlsZUJ1aWxkZXJDdXN0b20uaDoKLSAgICAgICAgICBNb3ZlIGZ1bmN0aW9ucyBmcm9tIFN0
eWxlQnVpbGRlckZ1bmN0aW9ucyBuYW1lc3BhY2UgdG8KLSAgICAgICAgICBTdHlsZUJ1aWxkZXJD
dXN0b20gY2xhc3MuCi0KLSAgICAgICAgKiBjc3MvbWFrZXByb3AucGw6Ci0gICAgICAgICAgVXNl
IFN0eWxlQnVpbGRlckN1c3RvbSBzY29wZSBpbnN0ZWFkIG9mIFN0eWxlQnVpbGRlckZ1bmN0aW9u
cyBmb3IKLSAgICAgICAgICBjdXN0b20gaW1wbGVtZW50YXRpb24uCi0KLSAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoKLSAgICAgICAgICBNYXJrIFN0eWxlQnVpbGRlckN1
c3RvbSBjbGFzcyBhcyBhIGZyaWVuZCwgc2ltaWxhcmx5IHRvIHdoYXQgd2FzCi0gICAgICAgICAg
YWxyZWFkeSBkb25lIGZvciBEZXByZWNhdGVkU3R5bGVCdWlsZGVyIGFuZCBTdHlsZVJlc29sdmVy
LgotCi0yMDE0LTExLTE3ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+Ci0KLSAgICAg
ICAgTWFrZSBzdXJlIHJhbmdlIGJhc2VkIGl0ZXJhdGlvbiBvZiBWZWN0b3I8PiBzdGlsbCByZWNl
aXZlcyBib3VuZHMgY2hlY2tpbmcKLSAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEzODgyMQotCi0gICAgICAgIFJldmlld2VkIGJ5IE1hcmsgTGFtLgotCi0g
ICAgICAgIFRoZXJlIGFyZSBhIGZldyB1c2VzIG9mIGJlZ2luKCkvZW5kKCkgdGhhdCBleHBsaWNp
dGx5IHJlcXVpcmUgcG9pbnRlcnMsCi0gICAgICAgIHNvIHdlIHVzZSBnZXRQdHIoKSB0byBleHRy
YWN0IHRoZSB1bmRlcmx5aW5nIHBvaW50ZXIgZ2VuZXJpY2FsbHkuCi0KLSAgICAgICAgKiBiaW5k
aW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgotICAgICAgICAoV2ViQ29yZTo6Q2xv
bmVEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplU3RyaW5nKToKLSAgICAgICAgKiBlZGl0aW5nL1Rl
eHRJdGVyYXRvci5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpTZWFyY2hCdWZmZXI6OmlzQmFkTWF0
Y2gpOgotICAgICAgICAqIHBhZ2UvbWFjL1NlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXIubW06Ci0g
ICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyOjpidWlsZFNlbGVjdGlv
bkhpZ2hsaWdodCk6Ci0gICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvU2VnbWVudGVkRm9udERh
dGEuY3BwOgotICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmZvbnREYXRhRm9y
Q2hhcmFjdGVyKToKLSAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjpjb250YWlu
c0NoYXJhY3Rlcik6Ci0gICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6aXNMb2Fk
aW5nKToKLSAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9XT0ZGRmlsZUZvcm1hdC5jcHA6Ci0g
ICAgICAgIChXZWJDb3JlOjpjb252ZXJ0V09GRlRvU2ZudCk6Ci0gICAgICAgICogcmVuZGVyaW5n
L1JlbmRlckJveC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6OnBhaW50RmlsbExh
eWVycyk6Ci0gICAgICAgICogcmVuZGVyaW5nL3N0eWxlL0dyaWRSZXNvbHZlZFBvc2l0aW9uLmNw
cDoKLSAgICAgICAgKFdlYkNvcmU6OmZpcnN0TmFtZWRHcmlkTGluZUJlZm9yZVBvc2l0aW9uKToK
LSAgICAgICAgKFdlYkNvcmU6OkdyaWRSZXNvbHZlZFBvc2l0aW9uOjpyZXNvbHZlUm93RW5kQ29s
dW1uRW5kTmFtZWRHcmlkTGluZVBvc2l0aW9uQWdhaW5zdE9wcG9zaXRlUG9zaXRpb24pOgotICAg
ICAgICAqIHN2Zy9TVkdGb250RWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjprZXJuaW5n
Rm9yUGFpck9mU3RyaW5nc0FuZEdseXBocyk6Ci0gICAgICAgICogc3ZnL1NWR1BhdGhCeXRlU3Ry
ZWFtLmg6Ci0gICAgICAgIChXZWJDb3JlOjpTVkdQYXRoQnl0ZVN0cmVhbTo6YXBwZW5kKToKLSAg
ICAgICAgKiB4bWwvWFBhdGhOb2RlU2V0Lmg6Ci0gICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9k
ZVNldDo6YmVnaW4pOgotICAgICAgICAoV2ViQ29yZTo6WFBhdGg6Ok5vZGVTZXQ6OmVuZCk6Ci0K
IDIwMTQtMTEtMjkgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAog
ICAgICAgICBGaXggYSBidWlsZCB3YXJuaW5nIHdoZW4gQ1NTX1NDUk9MTF9TTkFQIGlzIGVuYWJs
ZWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9N
SW50ZXJmYWNlcy5oCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5
NSw4IEBACiBAcHJvcGVydHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50TGVmdCBXRUJLSVRfQVZBSUxB
QkxFX01BQygxMF81KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHkpIGludCBjbGllbnRUb3AgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNSk7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBjb3B5KSBOU1N0cmlu
ZyAqaW5uZXJUZXh0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOworQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqaW5uZXJIVE1MOworQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqb3V0ZXJI
VE1MOwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpmaXJzdEVsZW1l
bnRDaGlsZCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHks
IHN0cm9uZykgRE9NRWxlbWVudCAqbGFzdEVsZW1lbnRDaGlsZCBXRUJLSVRfQVZBSUxBQkxFX01B
QygxMF82KTsKIEBwcm9wZXJ0eSAocmVhZG9ubHksIHN0cm9uZykgRE9NRWxlbWVudCAqcHJldmlv
dXNFbGVtZW50U2libGluZyBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF82KTsKQEAgLTQ3Niw5ICs0
NzgsNyBAQAogQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaWROYW1lOwogQHByb3BlcnR5IChj
b3B5KSBOU1N0cmluZyAqbGFuZzsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmRpcjsKLUBw
cm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmlubmVySFRNTDsKIEBwcm9wZXJ0eSAoY29weSkgTlNT
dHJpbmcgKmlubmVyVGV4dDsKLUBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm91dGVySFRNTDsK
IEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm91dGVyVGV4dDsKIEBwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NSFRNTENvbGxlY3Rpb24gKmNoaWxkcmVuOwogQHByb3BlcnR5IChjb3B5
KSBOU1N0cmluZyAqY29udGVudEVkaXRhYmxlOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0Vs
ZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
cmV2aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBACiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5o
IgogI2luY2x1ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRhYmxlUm93
c0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJIVE1MVGVtcGxhdGVFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW5zZXJ0aW9uUG9pbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiTXV0YXRpb25PYnNlcnZlckludGVyZXN0R3JvdXAuaCIKQEAgLTgxLDYgKzgyLDcgQEAKICNp
bmNsdWRlICJYTUxOU05hbWVzLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKICNpbmNsdWRlICJo
dG1sZWRpdGluZy5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CkBAIC0yMDIyLDcgKzIwMjQsNjggQEAKICAgICBFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoRXZlbnQodGhpcywgZXZlbnQucmVsZWFzZSgpKTsKIH0KIAordm9pZCBFbGVtZW50Ojpt
ZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCit7Cisg
ICAgTm9kZSogbmV4dCA9IG5vZGUubmV4dFNpYmxpbmcoKTsKKyAgICBpZiAoIWlzPFRleHQ+KG5l
eHQpKQorICAgICAgICByZXR1cm47CiAKKyAgICBSZWY8VGV4dD4gdGV4dE5vZGUobm9kZSk7Cisg
ICAgUmVmPFRleHQ+IHRleHROZXh0KGRvd25jYXN0PFRleHQ+KCpuZXh0KSk7CisgICAgdGV4dE5v
ZGUtPmFwcGVuZERhdGEodGV4dE5leHQtPmRhdGEoKSwgZWMpOworICAgIGlmIChlYykKKyAgICAg
ICAgcmV0dXJuOworICAgIHRleHROZXh0LT5yZW1vdmUoZWMpOworfQorCitTdHJpbmcgRWxlbWVu
dDo6aW5uZXJIVE1MKCkgY29uc3QKK3sKKyAgICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzLCBD
aGlsZHJlbk9ubHkpOworfQorCitTdHJpbmcgRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzKTsKK30KKwordm9pZCBFbGVtZW50OjpzZXRP
dXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBF
bGVtZW50KiBwID0gcGFyZW50RWxlbWVudCgpOworICAgIGlmICghaXM8SFRNTEVsZW1lbnQ+KHAp
KSB7CisgICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorICAgIFJlZlB0cjxIVE1MRWxlbWVudD4gcGFyZW50ID0gZG93bmNhc3Q8
SFRNTEVsZW1lbnQ+KHApOworICAgIFJlZlB0cjxOb2RlPiBwcmV2ID0gcHJldmlvdXNTaWJsaW5n
KCk7CisgICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2libGluZygpOworCisgICAgUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVy
SFRNTChodG1sLCBwYXJlbnQuZ2V0KCksIEFsbG93U2NyaXB0aW5nQ29udGVudCwgZWMpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIHBhcmVudC0+cmVwbGFjZUNoaWxk
KGZyYWdtZW50LnJlbGVhc2UoKSwgdGhpcywgZWMpOworICAgIFJlZlB0cjxOb2RlPiBub2RlID0g
bmV4dCA/IG5leHQtPnByZXZpb3VzU2libGluZygpIDogbnVsbHB0cjsKKyAgICBpZiAoIWVjICYm
IGlzPFRleHQ+KG5vZGUuZ2V0KCkpKQorICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5vZGUoZG93
bmNhc3Q8VGV4dD4oKm5vZGUpLCBlYyk7CisgICAgaWYgKCFlYyAmJiBpczxUZXh0PihwcmV2Lmdl
dCgpKSkKKyAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHROb2RlKGRvd25jYXN0PFRleHQ+KCpwcmV2
KSwgZWMpOworfQorCisKK3ZvaWQgRWxlbWVudDo6c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYg
aHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgaWYgKFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgdGhp
cywgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYykpIHsKKyAgICAgICAgQ29udGFpbmVyTm9kZSog
Y29udGFpbmVyID0gdGhpczsKKworI2lmIEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQorICAgICAg
ICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRoaXMpKQorICAgICAgICAgICAgY29udGFp
bmVyID0gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRoaXMpLmNvbnRlbnQoKTsKKyNl
bmRpZgorCisgICAgICAgIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCgqY29udGFpbmVyLCBm
cmFnbWVudC5yZWxlYXNlKCksIGVjKTsKKyAgICB9Cit9CisKIFN0cmluZyBFbGVtZW50Ojppbm5l
clRleHQoKQogewogICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIGxheW91dCwgc2luY2UgcGxhaW5U
ZXh0IHVzZXMgbGluZSBib3hlcyBpbiB0aGUgcmVuZGVyIHRyZWUuCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHJldmlzaW9uIDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NSw2ICszOTUsMTAgQEAKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICB2
aXJ0dWFsIHZvaWQgYmx1cigpOwogCisgICAgU3RyaW5nIGlubmVySFRNTCgpIGNvbnN0OworICAg
IFN0cmluZyBvdXRlckhUTUwoKSBjb25zdDsKKyAgICB2b2lkIHNldElubmVySFRNTChjb25zdCBT
dHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBzZXRPdXRlckhUTUwoY29uc3QgU3Ry
aW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIFdFQkNPUkVfRVhQT1JUIFN0cmluZyBpbm5lclRl
eHQoKTsKICAgICBTdHJpbmcgb3V0ZXJUZXh0KCk7CiAgCkBAIC01NzIsNiArNTc2LDggQEAKICAg
ICAvLyBwYXJzZUF0dHJpYnV0ZSAoY2FsbGVkIHZpYSBzZXRBdHRyaWJ1dGUoKSkgYW5kCiAgICAg
Ly8gc3ZnQXR0cmlidXRlQ2hhbmdlZCAoY2FsbGVkIHdoZW4gZWxlbWVudC5jbGFzc05hbWUuYmFz
ZVZhbHVlIGlzIHNldCkKICAgICB2b2lkIGNsYXNzQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9t
aWNTdHJpbmcmIG5ld0NsYXNzU3RyaW5nKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCBtZXJnZVdp
dGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpOwogCiBwcml2YXRl
OgogICAgIGJvb2wgaXNUZXh0Tm9kZSgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmlk
bAkocmV2aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xMDgsNiArMTA4LDkgQEAKIAogICAgIC8vIEhUTUwgNQogICAgIE5v
ZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25h
bCBET01TdHJpbmcgbmFtZSk7CisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJh
aXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUw7CisgICAgW1RyZWF0
TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0
cmluZyBvdXRlckhUTUw7CisgICAgICAgICAgICAgCiAKICAgICBbUmVmbGVjdD1jbGFzc10gYXR0
cmlidXRlIERPTVN0cmluZyBjbGFzc05hbWU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVRv
a2VuTGlzdCBjbGFzc0xpc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAko
cmV2aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ4LDcgKzQ4LDYgQEAKICNpbmNsdWRlICJIVE1MRm9ybUVsZW1l
bnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21z
LmgiCi0jaW5jbHVkZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm9kZVRyYXZlcnNhbC5oIgogI2luY2x1
ZGUgIlJlbmRlckVsZW1lbnQuaCIKQEAgLTQxNCw2NSArNDEzLDYgQEAKICAgICB9CiB9CiAKLVN0
cmluZyBIVE1MRWxlbWVudDo6aW5uZXJIVE1MKCkgY29uc3QKLXsKLSAgICByZXR1cm4gY3JlYXRl
TWFya3VwKCp0aGlzLCBDaGlsZHJlbk9ubHkpOwotfQotCi1TdHJpbmcgSFRNTEVsZW1lbnQ6Om91
dGVySFRNTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCgqdGhpcyk7Ci19Ci0K
LXZvaWQgSFRNTEVsZW1lbnQ6OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotewotICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIHRoaXMsIEFsbG93U2Ny
aXB0aW5nQ29udGVudCwgZWMpKSB7Ci0gICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9
IHRoaXM7Ci0jaWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCi0gICAgICAgIGlmIChpczxIVE1M
VGVtcGxhdGVFbGVtZW50PigqdGhpcykpCi0gICAgICAgICAgICBjb250YWluZXIgPSBkb3duY2Fz
dDxIVE1MVGVtcGxhdGVFbGVtZW50PigqdGhpcykuY29udGVudCgpOwotI2VuZGlmCi0gICAgICAg
IHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCgqY29udGFpbmVyLCBmcmFnbWVudC5yZWxlYXNl
KCksIGVjKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShU
ZXh0JiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBOb2RlKiBuZXh0ID0gbm9kZS5u
ZXh0U2libGluZygpOwotICAgIGlmICghaXM8VGV4dD4obmV4dCkpCi0gICAgICAgIHJldHVybjsK
LQotICAgIFJlZjxUZXh0PiB0ZXh0Tm9kZShub2RlKTsKLSAgICBSZWY8VGV4dD4gdGV4dE5leHQo
ZG93bmNhc3Q8VGV4dD4oKm5leHQpKTsKLSAgICB0ZXh0Tm9kZS0+YXBwZW5kRGF0YSh0ZXh0TmV4
dC0+ZGF0YSgpLCBlYyk7Ci0gICAgaWYgKGVjKQotICAgICAgICByZXR1cm47Ci0gICAgdGV4dE5l
eHQtPnJlbW92ZShlYyk7Ci19Ci0KLXZvaWQgSFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25z
dCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIEVsZW1lbnQqIHAgPSBw
YXJlbnRFbGVtZW50KCk7Ci0gICAgaWYgKCFpczxIVE1MRWxlbWVudD4ocCkpIHsKLSAgICAgICAg
ZWMgPSBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0gICAgUmVmUHRyPEhUTUxFbGVtZW50PiBwYXJlbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4o
cCk7Ci0gICAgUmVmUHRyPE5vZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKLSAgICBSZWZQ
dHI8Tm9kZT4gbmV4dCA9IG5leHRTaWJsaW5nKCk7Ci0KLSAgICBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gZnJhZ21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIHBh
cmVudC5nZXQoKSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7Ci0gICAgaWYgKGVjKQotICAg
ICAgICByZXR1cm47Ci0gICAgICAKLSAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChmcmFnbWVudC5y
ZWxlYXNlKCksIHRoaXMsIGVjKTsKLSAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG5leHQgPyBuZXh0
LT5wcmV2aW91c1NpYmxpbmcoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCFlYyAmJiBpczxUZXh0Pihu
b2RlLmdldCgpKSkKLSAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHROb2RlKGRvd25jYXN0PFRleHQ+
KCpub2RlKSwgZWMpOwotICAgIGlmICghZWMgJiYgaXM8VGV4dD4ocHJldi5nZXQoKSkpCi0gICAg
ICAgIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0PigqcHJldiksIGVjKTsKLX0K
LQogUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IEhUTUxFbGVtZW50Ojp0ZXh0VG9GcmFnbWVudChj
b25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVu
dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmgJKHJldmlzaW9uIDE3NjU5MikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NDgsMTAgKzQ4LDYgQEAKIAogICAgIHZpcnR1YWwgc2hvcnQgdGFiSW5kZXgoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKLSAgICBTdHJpbmcgb3V0ZXJI
VE1MKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlv
bkNvZGUmKTsKICAgICB2b2lkIHNldElubmVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25D
b2RlJik7CiAgICAgdm9pZCBzZXRPdXRlclRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29k
ZSYpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmlkbAkocmV2aXNpb24gMTc2
NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwJKHdvcmtpbmcgY29w
eSkKQEAgLTM4LDExICszOCw5IEBACiAgICAgICAgICAgICAgW1JlZmxlY3RdIGF0dHJpYnV0ZSBE
T01TdHJpbmcgYWNjZXNzS2V5OwogCiAgICAgLy8gRXh0ZW5zaW9ucwotICAgICAgICAgICAgIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaW5uZXJIVE1MOwotICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5n
LCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0Owot
ICAgICAgICAgICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRp
b25dIGF0dHJpYnV0ZSBET01TdHJpbmcgb3V0ZXJIVE1MOwotICAgICAgICAgICAgIFtUcmVhdE51
bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJp
bmcgb3V0ZXJUZXh0OwotCisgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNl
c0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7CisgICAgW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmlu
ZyBvdXRlclRleHQ7CisgICAgICAgICAgICAgCiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gRWxlbWVu
dCBpbnNlcnRBZGphY2VudEVsZW1lbnQoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01T
dHJpbmcgd2hlcmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RlZmF1bHQ9
VW5kZWZpbmVkXSBvcHRpb25hbCBFbGVtZW50IGVsZW1lbnQpOwogICAgIFtSYWlzZXNFeGNlcHRp
b25dIHZvaWQgaW5zZXJ0QWRqYWNlbnRIVE1MKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwg
RE9NU3RyaW5nIHdoZXJlLApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRy
ZWVCdWlsZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MVHJlZUJ1aWxkZXIuY3BwCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMjAsMTUg
KzMyMCwxNCBAQAogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6OkZy
YWdtZW50UGFyc2luZ0NvbnRleHQoKQogICAgIDogbV9mcmFnbWVudCgwKQotICAgICwgbV9jb250
ZXh0RWxlbWVudCgwKQogewogfQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0Nv
bnRleHQ6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQoRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lbnQs
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KQogICAgIDogbV9mcmFnbWVudCgmZnJhZ21lbnQpCi0g
ICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRFbGVtZW50KQogewogICAgIEFTU0VSVCghZnJh
Z21lbnQuaGFzQ2hpbGROb2RlcygpKTsKKyAgICBtX2NvbnRleHRFbGVtZW50U3RhY2tJdGVtID0g
SFRNTFN0YWNrSXRlbTo6Y3JlYXRlKGNvbnRleHRFbGVtZW50LCBIVE1MU3RhY2tJdGVtOjpJdGVt
Rm9yQ29udGV4dEVsZW1lbnQpOwogfQogCiBIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2lu
Z0NvbnRleHQ6On5GcmFnbWVudFBhcnNpbmdDb250ZXh0KCkKQEAgLTM1Niw3ICszNTUsNyBAQAog
CiAgICAgaWYgKG1fcGFyc2VyLnRva2VuaXplcigpKSB7CiAgICAgICAgIGJvb2wgaW5Gb3JlaWdu
Q29udGVudCA9ICFtX3RyZWUuaXNFbXB0eSgpCi0gICAgICAgICAgICAmJiAhbV90cmVlLmN1cnJl
bnRTdGFja0l0ZW0oKS0+aXNJbkhUTUxOYW1lc3BhY2UoKQorICAgICAgICAgICAgJiYgIWFkanVz
dGVkQ3VycmVudFN0YWNrSXRlbSgpLT5pc0luSFRNTE5hbWVzcGFjZSgpCiAgICAgICAgICAgICAm
JiAhSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Qb2ludChtX3RyZWUuY3VycmVu
dFN0YWNrSXRlbSgpKQogICAgICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1M
VGV4dEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSk7CiAKQEAgLTE2
MTcsNyArMTYxNiw3IEBACiAgICAgICAgICAgICBib29sIHNob3VsZENyZWF0ZUl0ZW0gPSB0cnVl
OwogI2VuZGlmCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ3JlYXRlSXRlbSkKLSAgICAgICAgICAg
ICAgICBpdGVtID0gSFRNTFN0YWNrSXRlbTo6Y3JlYXRlKG1fZnJhZ21lbnRDb250ZXh0LmNvbnRl
eHRFbGVtZW50KCksIEhUTUxTdGFja0l0ZW06Okl0ZW1Gb3JDb250ZXh0RWxlbWVudCk7CisgICAg
ICAgICAgICAgICAgaXRlbSA9IG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50U3RhY2tJ
dGVtKCk7CiAgICAgICAgIH0KICNpZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKICAgICAgICAg
aWYgKGl0ZW0tPmhhc1RhZ05hbWUodGVtcGxhdGVUYWcpKQpAQCAtMjg0MCwxNiArMjgzOSwyNyBA
QAogCiAgICAgc2V0SW5zZXJ0aW9uTW9kZShJbnNlcnRpb25Nb2RlOjpUZXh0KTsKIH0KKyAgICAK
Ky8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2Fk
anVzdGVkLWN1cnJlbnQtbm9kZQorSFRNTFN0YWNrSXRlbSogSFRNTFRyZWVCdWlsZGVyOjphZGp1
c3RlZEN1cnJlbnRTdGFja0l0ZW0oKSBjb25zdAoreworICAgIEFTU0VSVCghbV90cmVlLmlzRW1w
dHkoKSk7CisgICAgaWYgKGlzUGFyc2luZ0ZyYWdtZW50KCkgJiYgbV90cmVlLm9wZW5FbGVtZW50
cygpLT5oYXNPbmx5T25lRWxlbWVudCgpKQorICAgICAgICByZXR1cm4gbV9mcmFnbWVudENvbnRl
eHQuY29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKTsKKyAgICAgICAgCisgICAgcmV0dXJuIG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCk7Cit9CiAKKwogLy8gaHR0cDovL3d3dy53aGF0d2cub3JnL3Nw
ZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvdHJlZS1jb25zdHJ1Y3Rpb24uaHRt
bCN0cmVlLWNvbnN0cnVjdGlvbgogYm9vbCBIVE1MVHJlZUJ1aWxkZXI6OnNob3VsZFByb2Nlc3NU
b2tlbkluRm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKICAgICBpZiAo
bV90cmVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIEhUTUxTdGFja0l0
ZW0qIGl0ZW0gPSBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpOwotICAgIGlmIChpdGVtLT5pc0lu
SFRNTE5hbWVzcGFjZSgpKQorICAgIEhUTUxTdGFja0l0ZW0qIGFkanVzdGVkQ3VycmVudE5vZGUg
PSBhZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKTsKKyAgICBpZiAoYWRqdXN0ZWRDdXJyZW50Tm9k
ZS0+aXNJbkhUTUxOYW1lc3BhY2UoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChI
VE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KGl0ZW0pKSB7Cisg
ICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1MVGV4dEludGVncmF0aW9uUG9pbnQoYWRq
dXN0ZWRDdXJyZW50Tm9kZSkpIHsKICAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRv
a2VuOjpTdGFydFRhZwogICAgICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSAhPSBNYXRoTUxOYW1l
czo6bWdseXBoVGFnCiAgICAgICAgICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVz
OjptYWxpZ25tYXJrVGFnKQpAQCAtMjg1NywxMSArMjg2NywxMSBAQAogICAgICAgICBpZiAodG9r
ZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgaWYgKGl0ZW0tPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90
YXRpb25feG1sVGFnKQorICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5oYXNUYWdOYW1lKE1h
dGhNTE5hbWVzOjphbm5vdGF0aW9uX3htbFRhZykKICAgICAgICAgJiYgdG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnCiAgICAgICAgICYmIHRva2VuLT5uYW1lKCkgPT0gU1ZHTmFt
ZXM6OnN2Z1RhZykKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChIVE1MRWxlbWVudFN0
YWNrOjppc0hUTUxJbnRlZ3JhdGlvblBvaW50KGl0ZW0pKSB7CisgICAgaWYgKEhUTUxFbGVtZW50
U3RhY2s6OmlzSFRNTEludGVncmF0aW9uUG9pbnQoYWRqdXN0ZWRDdXJyZW50Tm9kZSkpIHsKICAg
ICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZykKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDaGFyYWN0ZXIpCkBAIC0yODc0LDYgKzI4ODQsOCBAQAogCiB2b2lkIEhUTUxUcmVlQnVpbGRl
cjo6cHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qIHRva2VuKQog
eworICAgIEhUTUxTdGFja0l0ZW0qIGFkanVzdGVkQ3VycmVudE5vZGUgPSBhZGp1c3RlZEN1cnJl
bnRTdGFja0l0ZW0oKTsKKyAgICAKICAgICBzd2l0Y2ggKHRva2VuLT50eXBlKCkpIHsKICAgICBj
YXNlIEhUTUxUb2tlbjo6VW5pbml0aWFsaXplZDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CkBAIC0yOTI3LDcgKzI5MzksNyBAQAogICAgICAgICAgICAgcHJvY2Vzc1N0YXJ0VGFnKHRv
a2VuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGN1cnJlbnROYW1lc3BhY2UgPSBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5u
YW1lc3BhY2VVUkkoKTsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJyZW50TmFtZXNw
YWNlID0gYWRqdXN0ZWRDdXJyZW50Tm9kZS0+bmFtZXNwYWNlVVJJKCk7CiAgICAgICAgIGlmIChj
dXJyZW50TmFtZXNwYWNlID09IE1hdGhNTE5hbWVzOjptYXRobWxOYW1lc3BhY2VVUkkpCiAgICAg
ICAgICAgICBhZGp1c3RNYXRoTUxBdHRyaWJ1dGVzKCp0b2tlbik7CiAgICAgICAgIGlmIChjdXJy
ZW50TmFtZXNwYWNlID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpIHsKQEAgLTI5MzksNyAr
Mjk1MSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEhUTUxUb2tlbjo6RW5k
VGFnOiB7Ci0gICAgICAgIGlmIChtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5uYW1lc3BhY2VV
UkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQorICAgICAgICBpZiAoYWRqdXN0ZWRD
dXJyZW50Tm9kZS0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05hbWVzcGFjZVVSSSkK
ICAgICAgICAgICAgIGFkanVzdFNWR1RhZ05hbWVDYXNlKCp0b2tlbik7CiAKICAgICAgICAgaWYg
KHRva2VuLT5uYW1lKCkgPT0gU1ZHTmFtZXM6OnNjcmlwdFRhZyAmJiBtX3RyZWUuY3VycmVudFN0
YWNrSXRlbSgpLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzY3JpcHRUYWcpKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkocmV2aXNpb24gMTc2
NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJIVE1MRWxlbWVudFN0YWNr
LmgiCiAjaW5jbHVkZSAiSFRNTEZvcm1hdHRpbmdFbGVtZW50TGlzdC5oIgogI2luY2x1ZGUgIkhU
TUxQYXJzZXJPcHRpb25zLmgiCisjaW5jbHVkZSAiSFRNTFN0YWNrSXRlbS5oIgogI2luY2x1ZGUg
IkhUTUxUb2tlbml6ZXIuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTcwLDYgKzE3MSw4IEBACiAKICAgICBpbmxpbmUgYm9v
bCBzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiopOwog
ICAgIHZvaWQgcHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qKTsK
KyAgICAKKyAgICBpbmxpbmUgSFRNTFN0YWNrSXRlbSogYWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVt
KCkgY29uc3Q7CiAKICAgICBWZWN0b3I8QXR0cmlidXRlPiBhdHRyaWJ1dGVzRm9ySXNpbmRleElu
cHV0KEF0b21pY0hUTUxUb2tlbiopOwogCkBAIC0yMDEsMTEgKzIwNCwxMiBAQAogICAgICAgICB+
RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpOwogCiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIGZy
YWdtZW50KCkgY29uc3QgeyByZXR1cm4gbV9mcmFnbWVudDsgfQotICAgICAgICBFbGVtZW50KiBj
b250ZXh0RWxlbWVudCgpIGNvbnN0IHsgQVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250
ZXh0RWxlbWVudDsgfQorICAgICAgICBFbGVtZW50KiBjb250ZXh0RWxlbWVudCgpIGNvbnN0IHsg
QVNTRVJUKG1fZnJhZ21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbS0+ZWxl
bWVudCgpOyB9CisgICAgICAgIEhUTUxTdGFja0l0ZW0qIGNvbnRleHRFbGVtZW50U3RhY2tJdGVt
KCkgY29uc3QgeyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50U3Rh
Y2tJdGVtLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgogICAgICAgICBEb2N1bWVudEZyYWdtZW50
KiBtX2ZyYWdtZW50OwotICAgICAgICBFbGVtZW50KiBtX2NvbnRleHRFbGVtZW50OworICAgICAg
ICBSZWZQdHI8SFRNTFN0YWNrSXRlbT4gbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbTsKICAgICB9
OwogCiAgICAgYm9vbCBtX2ZyYW1lc2V0T2s7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242351</attachid>
            <date>2014-12-01 15:00:56 -0800</date>
            <delta_ts>2014-12-01 15:08:27 -0800</delta_ts>
            <desc>[WIP] fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>25656</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3NjYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEyLTAxICBTeWx2YWluIEdhbGluZWF1
ICA8Z2FsaW5lYXVAYWRvYmUuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9tLXN0YXRp
Yy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRtbDogQWRkZWQu
CisKIDIwMTQtMTItMDEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cCB0ZXN0cyBzaG91bGQgbm90IHVzZSBzaGFyZWQgdGVtcG9yYXJ5IGZpbGVzLCBw
YXJ0IDMKSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1p
bi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rv
bS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1m
b3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcs
NyBAQAogUEFTUyBhWyJ3ZWJraXRkcm9wem9uZSJdIGlzIAogUEFTUyBhWyJoaWRkZW4iXSBpcyBm
YWxzZQogUEFTUyBhWyJhY2Nlc3NLZXkiXSBpcyAKLVBBU1MgYVsiaW5uZXJIVE1MIl0gaXMgbmVy
Z2V0CiBQQVNTIGFbImlubmVyVGV4dCJdIGlzIG5lcmdldAotUEFTUyBhWyJvdXRlckhUTUwiXSBp
cyA8YSBpZD0iZm9vIiBocmVmPSJiYXIiPm5lcmdldDwvYT4KIFBBU1MgYVsib3V0ZXJUZXh0Il0g
aXMgbmVyZ2V0CiBQQVNTIGFbImNoaWxkcmVuIl0gaXMgW29iamVjdCBIVE1MQ29sbGVjdGlvbl0K
IFBBU1MgYVsiY29udGVudEVkaXRhYmxlIl0gaXMgaW5oZXJpdApAQCAtNTAsNyArNDgsNyBAQAog
UEFTUyBhWyJzdHlsZSJdIGlzIFtvYmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsi
aWQiXSBpcyBmb28KIFBBU1MgYVsib2Zmc2V0TGVmdCJdIGlzIDgKLVBBU1MgYVsib2Zmc2V0VG9w
Il0gaXMgNzg5CitQQVNTIGFbIm9mZnNldFRvcCJdIGlzIDc1OQogUEFTUyBhWyJvZmZzZXRXaWR0
aCJdIGlzIDM5CiBQQVNTIGFbIm9mZnNldEhlaWdodCJdIGlzIDE4CiBQQVNTIGFbImNsaWVudExl
ZnQiXSBpcyAwCkBAIC02Miw2ICs2MCw4IEBACiBQQVNTIGFbInNjcm9sbFdpZHRoIl0gaXMgMAog
UEFTUyBhWyJzY3JvbGxIZWlnaHQiXSBpcyAwCiBQQVNTIGFbIm9mZnNldFBhcmVudCJdIGlzIFtv
YmplY3QgSFRNTEJvZHlFbGVtZW50XQorUEFTUyBhWyJpbm5lckhUTUwiXSBpcyBuZXJnZXQKK1BB
U1MgYVsib3V0ZXJIVE1MIl0gaXMgPGEgaWQ9ImZvbyIgaHJlZj0iYmFyIj5uZXJnZXQ8L2E+CiBQ
QVNTIGFbImNsYXNzTmFtZSJdIGlzIAogUEFTUyBhWyJjbGFzc0xpc3QiXSBpcyAKIFBBU1MgYVsi
ZGF0YXNldCJdIGlzIFtvYmplY3QgRE9NU3RyaW5nTWFwXQpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC1leHBlY3RlZC5wbmcJKHJldmlzaW9uIDE3NjU5MikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcJKHdvcmtpbmcgY29w
eSkKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4t
aHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMCwwICsxICMjCithcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0
cmlidXRlLWxlbmd0aC1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVu
Z3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAor
VGVzdAogVGVzdCBDU1MgcGFyc2luZyBvbiBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9pbi1odG1s
L3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTIDxwYXRoIGQ9Ik0gMCAwIEwgMjU5IDAgMjU5
IDE0OCAwIDE0OCB6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iIzAwZmYw
MCI+PC9wYXRoPgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1o
dG1sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5u
ZXItaHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB3aWR0
aD0iNDAwcHgiIGhlaWdodD0iMzAwcHgiPgorICAgICAgICAgICAgPGRlZnMgaWQ9InN2Zy1kZWZz
Ij48L2RlZnM+CisgICAgICAgICAgICA8cmVjdCBmaWxsPSJ1cmwoI3BhdHRlcm4pIiBoZWlnaHQ9
IjE0OCIgd2lkdGg9IjI1OSIgeT0iMSIgeD0iMSIgc3Ryb2tlPSIjMDAwMDAwIiAvPgorICAgIDwv
c3ZnPgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBkZWZzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N2Zy1kZWZzJyk7CisKKyAgICAgICAgdmFyIG5ld1BhdHRlcm4gPSAnPHBhdHRlcm4g
aWQ9InN2Zy1wYXR0ZXJuIiB3aWR0aD0iMjU5IiBoZWlnaHQ9IjE0OCIgcGF0dGVyblVuaXRzPSJ1
c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDAgTCAyNTkgMCAyNTkgMTQ4IDAgMTQ4IHoiIHN0
cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjMDBmZjAwIj48L3BhdGg+PC9wYXR0
ZXJuPic7CisKKyAgICAgICAgZGVmcy5pbm5lckhUTUwgPSBuZXdQYXR0ZXJuOworCisgICAgICAg
IHZhciB2ZXJpZnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnLXBhdHRlcm4nKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCh2ZXJpZnkuaW5uZXJIVE1MKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NzY2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTcgKzEsNDYgQEAKLTIwMTQtMTItMDEgIEJhcnRsb21pZWogR2FqZGEgIDxiLmdhamRhQHNhbXN1
bmcuY29tPgorMjAxNC0xMi0wMSAgU3lsdmFpbiBHYWxpbmVhdSAgPGdhbGluZWF1QGFkb2JlLmNv
bT4KIAotICAgICAgICBbTVNFXSBGaXggbm90IGFsd2F5cyBjYWxsaW5nIG1lZGlhUGxheWVyIHNl
ZWsuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkx
MzkKKyAgICAgICAgTm8gc3VwcG9ydCBmb3IgaW5uZXJIVE1MIG9uIFNWR0VsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjkwMwogCi0gICAg
ICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCiAKLSAgICAgICAgT3JpZ2luYWwgY29tbWVudCBzdGF0ZXMgdGhhdCBtZWRpYSBzb3Vy
Y2Ugc2hhbGwgYWx3YXlzIGJlIG5vdGlmaWVkIG9mIHNlZWsgaWYgaXQncyBub3QgY2xvc2VkLgor
ICAgICAgICBUd28gcGFydHMgdG8gdGhpcyBwYXRjaDoKKyAgICAgICAgMS4gTW92ZSBpbm5lckhU
TUwvb3V0ZXJIVE1MIHRvIEVsZW1lbnQgc28gU1ZHIGVsZW1lbnRzIGNhbiBpbmhlcml0IHRoZW0s
IHBlciBodHRwczovL2R2Y3MudzMub3JnL2hnL2lubmVyaHRtbC9yYXctZmlsZS90aXAvaW5kZXgu
aHRtbCNpbm5lcmh0bWwKKyAgICAgICAgMi4gTWFrZSBzdXJlIGZyYWdtZW50IGluc2VydGlvbiBp
cyBwcm9jZXNzZWQgcmVsYXRpdmUgdG8gdGhlIHByb3BlciBub2RlLCBwZXIgaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRqdXN0ZWQtY3VycmVudC1u
b2RlCiAKLSAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKyAgICAgICAgVGhlIGxhdHRlciBw
YXJ0IHdhcyBwb3J0ZWQgb3ZlciBmcm9tIEJsaW5rLiAKIAotICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVr
VGltZXJGaXJlZCk6CisgICAgICAgIFRlc3Q6IHN2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLmh0
bWwKIAorICAgICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBNb3Zl
IGlubmVySFRNTC9vdXRlckhUTUwgdG8gRWxlbWVudAorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZSk6IEhl
bHBlciB1c2VkIGJ5IEVsZW1lbnQ6OmlubmVySFRNTC9vdXRlckhUTUwgYXMgd2VsbCBhcyBIVE1M
RWxlbWVudDo6aW5uZXJUZXh0L291dGVyVGV4dDsgbW92ZWQgdG8gRWxlbWVudCBhcyBwcm90ZWN0
ZWQgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5uZXJIVE1MKTogTW92ZWQg
ZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om91dGVySFRNTCk6
IE1vdmVkIGZyb20gSFRNTEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRP
dXRlckhUTUwpOiBNb3ZlZCBmcm9tIEhUTUxFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SW5uZXJIVE1MKTogTW92ZWQgZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOiAKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aW5uZXJI
VE1MKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpvdXRlckhUTUwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZVdpdGhOZXh0VGV4dE5vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQpOiBubyBtb3JlIG1fY29udGV4dEVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUpOiByZWFkIG5hbWVz
cGFjZSBmcm9tIGFkanVzdGVkIGN1cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6IHVzZSBjb250ZXh0
RWxlbWVudFN0YWNrSXRlbSBmb3IgaW5zZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjphZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0pOiBjb21wdXRlIGFkanVzdGVkIGN1
cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJv
Y2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCk6IHVzZSBhZGp1c3RlZCBjdXJyZW50IG5vZGUgZm9y
IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQpOiB1c2UgYWRqdXN0ZWQgY3VycmVudCBub2RlIHRvIHJlYWQgbmFt
ZXNwYWNlLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpjb250
ZXh0RWxlbWVudCk6IERlbGV0ZWQuIFJlYWQgZnJvbSBjb250ZXh0RWxlbWVudFN0YWNrSXRlbS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dDo6Y29udGV4dEVsZW1lbnRTdGFja0l0ZW0pOiBBZGRlZC4KKwogMjAxNC0xMi0wMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgeWVs
bG93IGhpZ2hsaWdodCBmb3IgV2ViS2l0MSBkYXRhIGRldGVjdG9ycwpAQCAtMTAyLDQxICsxMzEs
NiBAQAogICAgICAgICAgIE1hcmsgU3R5bGVCdWlsZGVyQ3VzdG9tIGNsYXNzIGFzIGEgZnJpZW5k
LCBzaW1pbGFybHkgdG8gd2hhdCB3YXMKICAgICAgICAgICBhbHJlYWR5IGRvbmUgZm9yIERlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIgYW5kIFN0eWxlUmVzb2x2ZXIuCiAKLTIwMTQtMTEtMTcgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBNYWtlIHN1cmUgcmFuZ2UgYmFz
ZWQgaXRlcmF0aW9uIG9mIFZlY3Rvcjw+IHN0aWxsIHJlY2VpdmVzIGJvdW5kcyBjaGVja2luZwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODIxCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCi0KLSAgICAgICAgVGhlcmUgYXJlIGEgZmV3
IHVzZXMgb2YgYmVnaW4oKS9lbmQoKSB0aGF0IGV4cGxpY2l0bHkgcmVxdWlyZSBwb2ludGVycywK
LSAgICAgICAgc28gd2UgdXNlIGdldFB0cigpIHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgcG9p
bnRlciBnZW5lcmljYWxseS4KLQotICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJp
YWxpemVTdHJpbmcpOgotICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNCYWRNYXRjaCk6Ci0gICAgICAgICogcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKLSAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KToKLSAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRGb250RGF0YTo6Zm9udERhdGFGb3JDaGFyYWN0ZXIpOgotICAgICAgICAo
V2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVyKToKLSAgICAgICAg
KFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjppc0xvYWRpbmcpOgotICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRXT0ZGVG9TZm50KToKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKLSAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Zmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9zaXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6Ci0gICAgICAgICogc3ZnL1NWR0ZvbnRFbGVt
ZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Omtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdzQW5kR2x5
cGhzKToKLSAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKLSAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhCeXRlU3RyZWFtOjphcHBlbmQpOgotICAgICAgICAqIHhtbC9YUGF0aE5vZGVT
ZXQuaDoKLSAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpOb2RlU2V0OjpiZWdpbik6Ci0gICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6ZW5kKToKLQogMjAxNC0xMS0yOSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBhIGJ1aWxkIHdh
cm5pbmcgd2hlbiBDU1NfU0NST0xMX1NOQVAgaXMgZW5hYmxlZApJbmRleDogU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9u
IDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJm
YWNlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDggQEAKIEBwcm9wZXJ0eSAocmVh
ZG9ubHkpIGludCBjbGllbnRMZWZ0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwogQHByb3Bl
cnR5IChyZWFkb25seSkgaW50IGNsaWVudFRvcCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsK
IEBwcm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICppbm5lclRleHQgV0VCS0lUX0FW
QUlMQUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICppbm5lckhUTUw7
CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpvdXRlckhUTUw7CiBAcHJvcGVydHkgKHJlYWRv
bmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKmZpcnN0RWxlbWVudENoaWxkIFdFQktJVF9BVkFJTEFC
TEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICps
YXN0RWxlbWVudENoaWxkIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChy
ZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpwcmV2aW91c0VsZW1lbnRTaWJsaW5nIFdFQktJ
VF9BVkFJTEFCTEVfTUFDKDEwXzYpOwpAQCAtNDc2LDkgKzQ3OCw3IEBACiBAcHJvcGVydHkgKGNv
cHkpIE5TU3RyaW5nICppZE5hbWU7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpsYW5nOwog
QHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZGlyOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmlu
ZyAqaW5uZXJIVE1MOwogQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaW5uZXJUZXh0OwotQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqb3V0ZXJIVE1MOwogQHByb3BlcnR5IChjb3B5KSBOU1N0
cmluZyAqb3V0ZXJUZXh0OwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01IVE1MQ29s
bGVjdGlvbiAqY2hpbGRyZW47CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjb250ZW50RWRp
dGFibGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzY1OTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0
LDcgQEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVj
dEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgorI2luY2x1
ZGUgIkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgog
I2luY2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVySW50
ZXJlc3RHcm91cC5oIgpAQCAtODEsNiArODIsNyBAQAogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIK
ICNpbmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCisjaW5jbHVk
ZSAibWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIwMjIsNyAr
MjAyNCw2OCBAQAogICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBldmVu
dC5yZWxlYXNlKCkpOwogfQogCit2b2lkIEVsZW1lbnQ6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZShU
ZXh0JiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBOb2RlKiBuZXh0ID0gbm9kZS5u
ZXh0U2libGluZygpOworICAgIGlmICghaXM8VGV4dD4obmV4dCkpCisgICAgICAgIHJldHVybjsK
IAorICAgIFJlZjxUZXh0PiB0ZXh0Tm9kZShub2RlKTsKKyAgICBSZWY8VGV4dD4gdGV4dE5leHQo
ZG93bmNhc3Q8VGV4dD4oKm5leHQpKTsKKyAgICB0ZXh0Tm9kZS0+YXBwZW5kRGF0YSh0ZXh0TmV4
dC0+ZGF0YSgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisgICAgdGV4dE5l
eHQtPnJlbW92ZShlYyk7Cit9CisKK1N0cmluZyBFbGVtZW50Ojppbm5lckhUTUwoKSBjb25zdAor
eworICAgIHJldHVybiBjcmVhdGVNYXJrdXAoKnRoaXMsIENoaWxkcmVuT25seSk7Cit9CisKK1N0
cmluZyBFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVNYXJr
dXAoKnRoaXMpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcm
IGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEVsZW1lbnQqIHAgPSBwYXJlbnRFbGVt
ZW50KCk7CisgICAgaWYgKCFpczxIVE1MRWxlbWVudD4ocCkpIHsKKyAgICAgICAgZWMgPSBOT19N
T0RJRklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVm
UHRyPEhUTUxFbGVtZW50PiBwYXJlbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4ocCk7CisgICAg
UmVmUHRyPE5vZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKKyAgICBSZWZQdHI8Tm9kZT4g
bmV4dCA9IG5leHRTaWJsaW5nKCk7CisKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIHBhcmVudC5nZXQo
KSwgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1
cm47CisgICAgCisgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCB0
aGlzLCBlYyk7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBuZXh0ID8gbmV4dC0+cHJldmlvdXNT
aWJsaW5nKCkgOiBudWxscHRyOworICAgIGlmICghZWMgJiYgaXM8VGV4dD4obm9kZS5nZXQoKSkp
CisgICAgICAgIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0Pigqbm9kZSksIGVj
KTsKKyAgICBpZiAoIWVjICYmIGlzPFRleHQ+KHByZXYuZ2V0KCkpKQorICAgICAgICBtZXJnZVdp
dGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKnByZXYpLCBlYyk7Cit9CisKKwordm9pZCBF
bGVtZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBl
YykKK3sKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRl
bnQsIGVjKSkgeworICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0aGlzOworCisj
aWYgRU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVF
bGVtZW50PigqdGhpcykpCisgICAgICAgICAgICBjb250YWluZXIgPSBkb3duY2FzdDxIVE1MVGVt
cGxhdGVFbGVtZW50PigqdGhpcykuY29udGVudCgpOworI2VuZGlmCisKKyAgICAgICAgcmVwbGFj
ZUNoaWxkcmVuV2l0aEZyYWdtZW50KCpjb250YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMp
OworICAgIH0KK30KKwogU3RyaW5nIEVsZW1lbnQ6OmlubmVyVGV4dCgpCiB7CiAgICAgLy8gV2Ug
bmVlZCB0byB1cGRhdGUgbGF5b3V0LCBzaW5jZSBwbGFpblRleHQgdXNlcyBsaW5lIGJveGVzIGlu
IHRoZSByZW5kZXIgdHJlZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTc2NTky
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzk1
LDYgKzM5NSwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9v
bCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBibHVyKCk7CiAK
KyAgICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CisgICAgU3RyaW5nIG91dGVySFRNTCgpIGNv
bnN0OworICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUm
KTsKKyAgICB2b2lkIHNldE91dGVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGlubmVyVGV4dCgpOwogICAgIFN0cmluZyBvdXRl
clRleHQoKTsKICAKQEAgLTU3Miw2ICs1NzYsOCBAQAogICAgIC8vIHBhcnNlQXR0cmlidXRlIChj
YWxsZWQgdmlhIHNldEF0dHJpYnV0ZSgpKSBhbmQKICAgICAvLyBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
IChjYWxsZWQgd2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsdWUgaXMgc2V0KQogICAgIHZv
aWQgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJp
bmcpOworICAgIAorICAgIHN0YXRpYyB2b2lkIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShUZXh0JiBu
b2RlLCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHROb2Rl
KCkgY29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAxNzY1OTIpCisr
KyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2
ICsxMDgsOSBAQAogCiAgICAgLy8gSFRNTCA1CiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKyAg
ICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGlubmVySFRNTDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0
dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVySFRNTDsKKyAgICAg
ICAgICAgICAKIAogICAgIFtSZWZsZWN0PWNsYXNzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsYXNz
TmFtZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlzdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzY1OTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgs
NyArNDgsNiBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxO
YW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJIVE1MVGVt
cGxhdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIK
ICNpbmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpA
QCAtNDE0LDY1ICs0MTMsNiBAQAogICAgIH0KIH0KIAotU3RyaW5nIEhUTUxFbGVtZW50Ojppbm5l
ckhUTUwoKSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVNYXJrdXAoKnRoaXMsIENoaWxkcmVu
T25seSk7Ci19Ci0KLVN0cmluZyBIVE1MRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKLXsKLSAg
ICByZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzKTsKLX0KLQotdm9pZCBIVE1MRWxlbWVudDo6c2V0
SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAg
aWYgKFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9y
SW5uZXJPdXRlckhUTUwoaHRtbCwgdGhpcywgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYykpIHsK
LSAgICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gdGhpczsKLSNpZiBFTkFCTEUoVEVN
UExBVEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlz
KSkKLSAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+
KCp0aGlzKS5jb250ZW50KCk7Ci0jZW5kaWYKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZy
YWdtZW50KCpjb250YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgIH0KLX0KLQot
c3RhdGljIHZvaWQgbWVyZ2VXaXRoTmV4dFRleHROb2RlKFRleHQmIG5vZGUsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQotewotICAgIE5vZGUqIG5leHQgPSBub2RlLm5leHRTaWJsaW5nKCk7Ci0gICAgaWYg
KCFpczxUZXh0PihuZXh0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmPFRleHQ+IHRleHRO
b2RlKG5vZGUpOwotICAgIFJlZjxUZXh0PiB0ZXh0TmV4dChkb3duY2FzdDxUZXh0PigqbmV4dCkp
OwotICAgIHRleHROb2RlLT5hcHBlbmREYXRhKHRleHROZXh0LT5kYXRhKCksIGVjKTsKLSAgICBp
ZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICB0ZXh0TmV4dC0+cmVtb3ZlKGVjKTsKLX0KLQot
dm9pZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0
aW9uQ29kZSYgZWMpCi17Ci0gICAgRWxlbWVudCogcCA9IHBhcmVudEVsZW1lbnQoKTsKLSAgICBp
ZiAoIWlzPEhUTUxFbGVtZW50PihwKSkgewotICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9B
TExPV0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSZWZQdHI8SFRNTEVsZW1l
bnQ+IHBhcmVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihwKTsKLSAgICBSZWZQdHI8Tm9kZT4g
cHJldiA9IHByZXZpb3VzU2libGluZygpOwotICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbmV4dFNp
YmxpbmcoKTsKLQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0
ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgcGFyZW50LmdldCgpLCBBbGxvd1Njcmlw
dGluZ0NvbnRlbnQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICAgIAot
ICAgIHBhcmVudC0+cmVwbGFjZUNoaWxkKGZyYWdtZW50LnJlbGVhc2UoKSwgdGhpcywgZWMpOwot
ICAgIFJlZlB0cjxOb2RlPiBub2RlID0gbmV4dCA/IG5leHQtPnByZXZpb3VzU2libGluZygpIDog
bnVsbHB0cjsKLSAgICBpZiAoIWVjICYmIGlzPFRleHQ+KG5vZGUuZ2V0KCkpKQotICAgICAgICBt
ZXJnZVdpdGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKm5vZGUpLCBlYyk7Ci0gICAgaWYg
KCFlYyAmJiBpczxUZXh0PihwcmV2LmdldCgpKSkKLSAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHRO
b2RlKGRvd25jYXN0PFRleHQ+KCpwcmV2KSwgZWMpOwotfQotCiBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4gSFRNTEVsZW1lbnQ6OnRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaAkocmV2aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsNiBAQAogCiAgICAg
dmlydHVhbCBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIGlu
bmVySFRNTCgpIGNvbnN0OwotICAgIFN0cmluZyBvdXRlckhUTUwoKSBjb25zdDsKLSAgICB2b2lk
IHNldElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBz
ZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0
SW5uZXJUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE91
dGVyVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDkgQEAK
ICAgICAgICAgICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAK
ICAgICAvLyBFeHRlbnNpb25zCi0gICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcs
IFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUw7Ci0g
ICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlv
bl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7Ci0gICAgICAgICAgICAgW1RyZWF0TnVs
bEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmlu
ZyBvdXRlckhUTUw7Ci0gICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRl
clJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBvdXRlclRleHQ7Ci0KKyAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlubmVyVGV4dDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVyVGV4dDsKKyAgICAgICAg
ICAgICAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbGVtZW50IGluc2VydEFkamFjZW50RWxlbWVu
dChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB3aGVyZSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEVs
ZW1lbnQgZWxlbWVudCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRBZGphY2Vu
dEhUTUwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgd2hlcmUsCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJl
dmlzaW9uIDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCwxNSArMzIwLDE0IEBACiAKIEhUTUxUcmVl
QnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgp
CiAgICAgOiBtX2ZyYWdtZW50KDApCi0gICAgLCBtX2NvbnRleHRFbGVtZW50KDApCiB7CiB9CiAK
IEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5n
Q29udGV4dChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgOiBtX2ZyYWdtZW50KCZmcmFnbWVudCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQo
Y29udGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFmcmFnbWVudC5oYXNDaGlsZE5vZGVzKCkp
OworICAgIG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW0gPSBIVE1MU3RhY2tJdGVtOjpjcmVhdGUo
Y29udGV4dEVsZW1lbnQsIEhUTUxTdGFja0l0ZW06Okl0ZW1Gb3JDb250ZXh0RWxlbWVudCk7CiB9
CiAKIEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6fkZyYWdtZW50UGFy
c2luZ0NvbnRleHQoKQpAQCAtMzU2LDcgKzM1NSw3IEBACiAKICAgICBpZiAobV9wYXJzZXIudG9r
ZW5pemVyKCkpIHsKICAgICAgICAgYm9vbCBpbkZvcmVpZ25Db250ZW50ID0gIW1fdHJlZS5pc0Vt
cHR5KCkKLSAgICAgICAgICAgICYmICFtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5pc0luSFRN
TE5hbWVzcGFjZSgpCisgICAgICAgICAgICAmJiAhYWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCkt
PmlzSW5IVE1MTmFtZXNwYWNlKCkKICAgICAgICAgICAgICYmICFIVE1MRWxlbWVudFN0YWNrOjpp
c0hUTUxJbnRlZ3JhdGlvblBvaW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkpCiAgICAgICAg
ICAgICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludCht
X3RyZWUuY3VycmVudFN0YWNrSXRlbSgpKTsKIApAQCAtMTYxNyw3ICsxNjE2LDcgQEAKICAgICAg
ICAgICAgIGJvb2wgc2hvdWxkQ3JlYXRlSXRlbSA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAg
IGlmIChzaG91bGRDcmVhdGVJdGVtKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBIVE1MU3RhY2tJ
dGVtOjpjcmVhdGUobV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQoKSwgSFRNTFN0YWNr
SXRlbTo6SXRlbUZvckNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpdGVtID0gbV9m
cmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKTsKICAgICAgICAgfQogI2lm
IEVOQUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZSh0
ZW1wbGF0ZVRhZykpCkBAIC0yODQwLDE2ICsyODM5LDI3IEBACiAKICAgICBzZXRJbnNlcnRpb25N
b2RlKEluc2VydGlvbk1vZGU6OlRleHQpOwogfQorICAgIAorLy8gaHR0cDovL3d3dy53aGF0d2cu
b3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRqdXN0ZWQtY3VycmVudC1ub2RlCitI
VE1MU3RhY2tJdGVtKiBIVE1MVHJlZUJ1aWxkZXI6OmFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSgp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3RyZWUuaXNFbXB0eSgpKTsKKyAgICBpZiAoaXNQYXJz
aW5nRnJhZ21lbnQoKSAmJiBtX3RyZWUub3BlbkVsZW1lbnRzKCktPmhhc09ubHlPbmVFbGVtZW50
KCkpCisgICAgICAgIHJldHVybiBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudFN0YWNr
SXRlbSgpOworICAgICAgICAKKyAgICByZXR1cm4gbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKTsK
K30KIAorCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13
b3JrL211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI3RyZWUtY29uc3RydWN0aW9uCiBi
b29sIEhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChB
dG9taWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIGlmIChtX3RyZWUuaXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTFN0YWNrSXRlbSogaXRlbSA9IG1fdHJlZS5jdXJy
ZW50U3RhY2tJdGVtKCk7Ci0gICAgaWYgKGl0ZW0tPmlzSW5IVE1MTmFtZXNwYWNlKCkpCisgICAg
SFRNTFN0YWNrSXRlbSogYWRqdXN0ZWRDdXJyZW50Tm9kZSA9IGFkanVzdGVkQ3VycmVudFN0YWNr
SXRlbSgpOworICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5pc0luSFRNTE5hbWVzcGFjZSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0
aE1MVGV4dEludGVncmF0aW9uUG9pbnQoaXRlbSkpIHsKKyAgICBpZiAoSFRNTEVsZW1lbnRTdGFj
azo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludChhZGp1c3RlZEN1cnJlbnROb2RlKSkgewog
ICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnCiAgICAgICAg
ICAgICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjptZ2x5cGhUYWcKICAgICAgICAg
ICAgICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0aE1MTmFtZXM6Om1hbGlnbm1hcmtUYWcpCkBAIC0y
ODU3LDExICsyODY3LDExIEBACiAgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tl
bjo6Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAo
aXRlbS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvbl94bWxUYWcpCisgICAgaWYg
KGFkanVzdGVkQ3VycmVudE5vZGUtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25f
eG1sVGFnKQogICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcK
ICAgICAgICAgJiYgdG9rZW4tPm5hbWUoKSA9PSBTVkdOYW1lczo6c3ZnVGFnKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0aW9u
UG9pbnQoaXRlbSkpIHsKKyAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRp
b25Qb2ludChhZGp1c3RlZEN1cnJlbnROb2RlKSkgewogICAgICAgICBpZiAodG9rZW4tPnR5cGUo
KSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKQEAgLTI4NzQs
NiArMjg4NCw4IEBACiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVp
Z25Db250ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CisgICAgSFRNTFN0YWNrSXRlbSog
YWRqdXN0ZWRDdXJyZW50Tm9kZSA9IGFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSgpOworICAgIAog
ICAgIHN3aXRjaCAodG9rZW4tPnR5cGUoKSkgewogICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRp
YWxpemVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5MjcsNyArMjkzOSw3
IEBACiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY3VycmVudE5hbWVz
cGFjZSA9IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVSSSgpOworICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIGN1cnJlbnROYW1lc3BhY2UgPSBhZGp1c3RlZEN1cnJlbnRO
b2RlLT5uYW1lc3BhY2VVUkkoKTsKICAgICAgICAgaWYgKGN1cnJlbnROYW1lc3BhY2UgPT0gTWF0
aE1MTmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIGFkanVzdE1hdGhNTEF0
dHJpYnV0ZXMoKnRva2VuKTsKICAgICAgICAgaWYgKGN1cnJlbnROYW1lc3BhY2UgPT0gU1ZHTmFt
ZXM6OnN2Z05hbWVzcGFjZVVSSSkgewpAQCAtMjkzOSw3ICsyOTUxLDcgQEAKICAgICAgICAgYnJl
YWs7CiAgICAgfQogICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6IHsKLSAgICAgICAgaWYgKG1f
dHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdO
YW1lc3BhY2VVUkkpCisgICAgICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5uYW1lc3BhY2VV
UkkoKSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgYWRqdXN0U1ZH
VGFnTmFtZUNhc2UoKnRva2VuKTsKIAogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBTVkdO
YW1lczo6c2NyaXB0VGFnICYmIG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUo
U1ZHTmFtZXM6OnNjcmlwdFRhZykpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5oCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiAr
MzIsNyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50U3RhY2suaCIKICNpbmNsdWRlICJIVE1MRm9y
bWF0dGluZ0VsZW1lbnRMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlck9wdGlvbnMuaCIKKyNp
bmNsdWRlICJIVE1MU3RhY2tJdGVtLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBA
IC0xNzAsNiArMTcxLDggQEAKIAogICAgIGlubGluZSBib29sIHNob3VsZFByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKik7CiAgICAgdm9pZCBwcm9jZXNzVG9rZW5J
bkZvcmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiopOworICAgIAorICAgIGlubGluZSBIVE1M
U3RhY2tJdGVtKiBhZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKSBjb25zdDsKIAogICAgIFZlY3Rv
cjxBdHRyaWJ1dGU+IGF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2VuKik7
CiAKQEAgLTIwMSwxMSArMjA0LDEyIEBACiAgICAgICAgIH5GcmFnbWVudFBhcnNpbmdDb250ZXh0
KCk7CiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYWdtZW50OyB9Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3Qg
eyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50OyB9CisgICAgICAg
IEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBBU1NFUlQobV9mcmFnbWVudCk7IHJl
dHVybiBtX2NvbnRleHRFbGVtZW50U3RhY2tJdGVtLT5lbGVtZW50KCk7IH0KKyAgICAgICAgSFRN
TFN0YWNrSXRlbSogY29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKSBjb25zdCB7IEFTU0VSVChtX2Zy
YWdtZW50KTsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW0uZ2V0KCk7IH0KIAogICAg
IHByaXZhdGU6CiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7Ci0gICAgICAg
IEVsZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgIFJlZlB0cjxIVE1MU3RhY2tJdGVt
PiBtX2NvbnRleHRFbGVtZW50U3RhY2tJdGVtOwogICAgIH07CiAKICAgICBib29sIG1fZnJhbWVz
ZXRPazsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242353</attachid>
            <date>2014-12-01 15:08:27 -0800</date>
            <delta_ts>2014-12-01 16:47:46 -0800</delta_ts>
            <desc>[WIP] fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>27536</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3NjYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE0LTEyLTAxICBTeWx2YWluIEdhbGluZWF1
ICA8Z2FsaW5lYXVAYWRvYmUuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9tLXN0YXRp
Yy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nOiBBZGRlZC4K
KyAgICAgICAgKiBzdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIHN2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRtbDogQWRkZWQu
CisKIDIwMTQtMTItMDEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAg
ICAgICAgaHR0cCB0ZXN0cyBzaG91bGQgbm90IHVzZSBzaGFyZWQgdGVtcG9yYXJ5IGZpbGVzLCBw
YXJ0IDMKSW5kZXg6IExheW91dFRlc3RzL2pzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1p
bi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2Rv
bS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1m
b3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzcsOSArMzcs
NyBAQAogUEFTUyBhWyJ3ZWJraXRkcm9wem9uZSJdIGlzIAogUEFTUyBhWyJoaWRkZW4iXSBpcyBm
YWxzZQogUEFTUyBhWyJhY2Nlc3NLZXkiXSBpcyAKLVBBU1MgYVsiaW5uZXJIVE1MIl0gaXMgbmVy
Z2V0CiBQQVNTIGFbImlubmVyVGV4dCJdIGlzIG5lcmdldAotUEFTUyBhWyJvdXRlckhUTUwiXSBp
cyA8YSBpZD0iZm9vIiBocmVmPSJiYXIiPm5lcmdldDwvYT4KIFBBU1MgYVsib3V0ZXJUZXh0Il0g
aXMgbmVyZ2V0CiBQQVNTIGFbImNoaWxkcmVuIl0gaXMgW29iamVjdCBIVE1MQ29sbGVjdGlvbl0K
IFBBU1MgYVsiY29udGVudEVkaXRhYmxlIl0gaXMgaW5oZXJpdApAQCAtNTAsNyArNDgsNyBAQAog
UEFTUyBhWyJzdHlsZSJdIGlzIFtvYmplY3QgQ1NTU3R5bGVEZWNsYXJhdGlvbl0KIFBBU1MgYVsi
aWQiXSBpcyBmb28KIFBBU1MgYVsib2Zmc2V0TGVmdCJdIGlzIDgKLVBBU1MgYVsib2Zmc2V0VG9w
Il0gaXMgNzg5CitQQVNTIGFbIm9mZnNldFRvcCJdIGlzIDc1OQogUEFTUyBhWyJvZmZzZXRXaWR0
aCJdIGlzIDM5CiBQQVNTIGFbIm9mZnNldEhlaWdodCJdIGlzIDE4CiBQQVNTIGFbImNsaWVudExl
ZnQiXSBpcyAwCkBAIC02Miw2ICs2MCw4IEBACiBQQVNTIGFbInNjcm9sbFdpZHRoIl0gaXMgMAog
UEFTUyBhWyJzY3JvbGxIZWlnaHQiXSBpcyAwCiBQQVNTIGFbIm9mZnNldFBhcmVudCJdIGlzIFtv
YmplY3QgSFRNTEJvZHlFbGVtZW50XQorUEFTUyBhWyJpbm5lckhUTUwiXSBpcyBuZXJnZXQKK1BB
U1MgYVsib3V0ZXJIVE1MIl0gaXMgPGEgaWQ9ImZvbyIgaHJlZj0iYmFyIj5uZXJnZXQ8L2E+CiBQ
QVNTIGFbImNsYXNzTmFtZSJdIGlzIAogUEFTUyBhWyJjbGFzc0xpc3QiXSBpcyAKIFBBU1MgYVsi
ZGF0YXNldCJdIGlzIFtvYmplY3QgRE9NU3RyaW5nTWFwXQpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnBuZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1hcmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWlt
ZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC1leHBlY3RlZC5wbmcJKHJldmlzaW9uIDE3NjU5MikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcJKHdvcmtpbmcgY29w
eSkKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4t
aHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmcKX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOm1p
bWUtdHlwZQojIyAtMCwwICsxICMjCithcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0
cmlidXRlLWxlbmd0aC1wYXJzaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVuZ3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAxNzY1OTIpCisrKyBMYXlvdXRUZXN0cy9zdmcvY3NzL3N2Zy1hdHRyaWJ1dGUtbGVu
Z3RoLXBhcnNpbmctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNCBAQAor
VGVzdAogVGVzdCBDU1MgcGFyc2luZyBvbiBTVkcgcHJlc2VudGF0aW9uIGF0dHJpYnV0ZXMuCiAK
IE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KSW5kZXg6IExheW91dFRlc3RzL3N2Zy9pbi1odG1s
L3N2Zy1pbm5lci1odG1sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9z
dmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyIEBACitQQVNTIDxwYXRoIGQ9Ik0gMCAwIEwgMjU5IDAgMjU5
IDE0OCAwIDE0OCB6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iIzAwZmYw
MCI+PC9wYXRoPgorCkluZGV4OiBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRt
bC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1o
dG1sLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5u
ZXItaHRtbC5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAg
IHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAg
ICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKyAgICA8c3ZnIHg9IjBweCIgeT0iMHB4IiB3aWR0
aD0iNDAwcHgiIGhlaWdodD0iMzAwcHgiPgorICAgICAgICAgICAgPGRlZnMgaWQ9InN2Zy1kZWZz
Ij48L2RlZnM+CisgICAgICAgICAgICA8cmVjdCBmaWxsPSJ1cmwoI3BhdHRlcm4pIiBoZWlnaHQ9
IjE0OCIgd2lkdGg9IjI1OSIgeT0iMSIgeD0iMSIgc3Ryb2tlPSIjMDAwMDAwIiAvPgorICAgIDwv
c3ZnPgorICAgIDxzY3JpcHQ+CisgICAgICAgIHZhciBkZWZzID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3N2Zy1kZWZzJyk7CisKKyAgICAgICAgdmFyIG5ld1BhdHRlcm4gPSAnPHBhdHRlcm4g
aWQ9InN2Zy1wYXR0ZXJuIiB3aWR0aD0iMjU5IiBoZWlnaHQ9IjE0OCIgcGF0dGVyblVuaXRzPSJ1
c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTSAwIDAgTCAyNTkgMCAyNTkgMTQ4IDAgMTQ4IHoiIHN0
cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxIiBmaWxsPSIjMDBmZjAwIj48L3BhdGg+PC9wYXR0
ZXJuPic7CisKKyAgICAgICAgZGVmcy5pbm5lckhUTUwgPSBuZXdQYXR0ZXJuOworCisgICAgICAg
IHZhciB2ZXJpZnkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3ZnLXBhdHRlcm4nKTsKKyAg
ICAgICAgdGVzdFBhc3NlZCh2ZXJpZnkuaW5uZXJIVE1MKTsKKyAgICA8L3NjcmlwdD4KKzwvYm9k
eT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NzY2MDQpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MTcgKzEsNDYgQEAKLTIwMTQtMTItMDEgIEJhcnRsb21pZWogR2FqZGEgIDxiLmdhamRhQHNhbXN1
bmcuY29tPgorMjAxNC0xMi0wMSAgU3lsdmFpbiBHYWxpbmVhdSAgPGdhbGluZWF1QGFkb2JlLmNv
bT4KIAotICAgICAgICBbTVNFXSBGaXggbm90IGFsd2F5cyBjYWxsaW5nIG1lZGlhUGxheWVyIHNl
ZWsuCi0gICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzkx
MzkKKyAgICAgICAgTm8gc3VwcG9ydCBmb3IgaW5uZXJIVE1MIG9uIFNWR0VsZW1lbnQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNjkwMwogCi0gICAg
ICAgIFJldmlld2VkIGJ5IEplciBOb2JsZS4KKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCiAKLSAgICAgICAgT3JpZ2luYWwgY29tbWVudCBzdGF0ZXMgdGhhdCBtZWRpYSBzb3Vy
Y2Ugc2hhbGwgYWx3YXlzIGJlIG5vdGlmaWVkIG9mIHNlZWsgaWYgaXQncyBub3QgY2xvc2VkLgor
ICAgICAgICBUd28gcGFydHMgdG8gdGhpcyBwYXRjaDoKKyAgICAgICAgMS4gTW92ZSBpbm5lckhU
TUwvb3V0ZXJIVE1MIHRvIEVsZW1lbnQgc28gU1ZHIGVsZW1lbnRzIGNhbiBpbmhlcml0IHRoZW0s
IHBlciBodHRwczovL2R2Y3MudzMub3JnL2hnL2lubmVyaHRtbC9yYXctZmlsZS90aXAvaW5kZXgu
aHRtbCNpbm5lcmh0bWwKKyAgICAgICAgMi4gTWFrZSBzdXJlIGZyYWdtZW50IGluc2VydGlvbiBp
cyBwcm9jZXNzZWQgcmVsYXRpdmUgdG8gdGhlIHByb3BlciBub2RlLCBwZXIgaHR0cDovL3d3dy53
aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRqdXN0ZWQtY3VycmVudC1u
b2RlCiAKLSAgICAgICAgTm8gbmV3IHRlc3RzIG5lZWRlZC4KKyAgICAgICAgVGhlIGxhdHRlciBw
YXJ0IHdhcyBwb3J0ZWQgb3ZlciBmcm9tIEJsaW5rLiAKIAotICAgICAgICAqIGh0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpzZWVr
VGltZXJGaXJlZCk6CisgICAgICAgIFRlc3Q6IHN2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLmh0
bWwKIAorICAgICAgICAqIGJpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNlcy5oOiBNb3Zl
IGlubmVySFRNTC9vdXRlckhUTUwgdG8gRWxlbWVudAorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZSk6IEhl
bHBlciB1c2VkIGJ5IEVsZW1lbnQ6OmlubmVySFRNTC9vdXRlckhUTUwgYXMgd2VsbCBhcyBIVE1M
RWxlbWVudDo6aW5uZXJUZXh0L291dGVyVGV4dDsgbW92ZWQgdG8gRWxlbWVudCBhcyBwcm90ZWN0
ZWQgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5uZXJIVE1MKTogTW92ZWQg
ZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om91dGVySFRNTCk6
IE1vdmVkIGZyb20gSFRNTEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRP
dXRlckhUTUwpOiBNb3ZlZCBmcm9tIEhUTUxFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SW5uZXJIVE1MKTogTW92ZWQgZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOiAKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aW5uZXJI
VE1MKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpvdXRlckhUTUwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZVdpdGhOZXh0VGV4dE5vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQpOiBubyBtb3JlIG1fY29udGV4dEVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUpOiByZWFkIG5hbWVz
cGFjZSBmcm9tIGFkanVzdGVkIGN1cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6IHVzZSBjb250ZXh0
RWxlbWVudFN0YWNrSXRlbSBmb3IgaW5zZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjphZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0pOiBjb21wdXRlIGFkanVzdGVkIGN1
cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJv
Y2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCk6IHVzZSBhZGp1c3RlZCBjdXJyZW50IG5vZGUgZm9y
IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQpOiB1c2UgYWRqdXN0ZWQgY3VycmVudCBub2RlIHRvIHJlYWQgbmFt
ZXNwYWNlLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpjb250
ZXh0RWxlbWVudCk6IERlbGV0ZWQuIFJlYWQgZnJvbSBjb250ZXh0RWxlbWVudFN0YWNrSXRlbS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dDo6Y29udGV4dEVsZW1lbnRTdGFja0l0ZW0pOiBBZGRlZC4KKwogMjAxNC0xMi0wMSAgVGltIEhv
cnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgeWVs
bG93IGhpZ2hsaWdodCBmb3IgV2ViS2l0MSBkYXRhIGRldGVjdG9ycwpAQCAtMTAyLDQxICsxMzEs
NiBAQAogICAgICAgICAgIE1hcmsgU3R5bGVCdWlsZGVyQ3VzdG9tIGNsYXNzIGFzIGEgZnJpZW5k
LCBzaW1pbGFybHkgdG8gd2hhdCB3YXMKICAgICAgICAgICBhbHJlYWR5IGRvbmUgZm9yIERlcHJl
Y2F0ZWRTdHlsZUJ1aWxkZXIgYW5kIFN0eWxlUmVzb2x2ZXIuCiAKLTIwMTQtMTEtMTcgIE9saXZl
ciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KLQotICAgICAgICBNYWtlIHN1cmUgcmFuZ2UgYmFz
ZWQgaXRlcmF0aW9uIG9mIFZlY3Rvcjw+IHN0aWxsIHJlY2VpdmVzIGJvdW5kcyBjaGVja2luZwot
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODIxCi0K
LSAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBMYW0uCi0KLSAgICAgICAgVGhlcmUgYXJlIGEgZmV3
IHVzZXMgb2YgYmVnaW4oKS9lbmQoKSB0aGF0IGV4cGxpY2l0bHkgcmVxdWlyZSBwb2ludGVycywK
LSAgICAgICAgc28gd2UgdXNlIGdldFB0cigpIHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgcG9p
bnRlciBnZW5lcmljYWxseS4KLQotICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZS5jcHA6Ci0gICAgICAgIChXZWJDb3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJp
YWxpemVTdHJpbmcpOgotICAgICAgICAqIGVkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6aXNCYWRNYXRjaCk6Ci0gICAgICAgICogcGFnZS9t
YWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxlci5tbToKLSAgICAgICAgKFdlYkNvcmU6OlNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxkU2VsZWN0aW9uSGlnaGxpZ2h0KToKLSAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50ZWRGb250RGF0YS5jcHA6Ci0gICAgICAgIChXZWJD
b3JlOjpTZWdtZW50ZWRGb250RGF0YTo6Zm9udERhdGFGb3JDaGFyYWN0ZXIpOgotICAgICAgICAo
V2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6OmNvbnRhaW5zQ2hhcmFjdGVyKToKLSAgICAgICAg
KFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRhOjppc0xvYWRpbmcpOgotICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6OmNvbnZl
cnRXT0ZGVG9TZm50KToKLSAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKLSAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKToKLSAgICAgICAgKiByZW5k
ZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9zaXRpb24uY3BwOgotICAgICAgICAoV2ViQ29yZTo6
Zmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9zaXRpb24pOgotICAgICAgICAoV2ViQ29yZTo6R3Jp
ZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVSb3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9z
aXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlvbik6Ci0gICAgICAgICogc3ZnL1NWR0ZvbnRFbGVt
ZW50LmNwcDoKLSAgICAgICAgKFdlYkNvcmU6Omtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdzQW5kR2x5
cGhzKToKLSAgICAgICAgKiBzdmcvU1ZHUGF0aEJ5dGVTdHJlYW0uaDoKLSAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhCeXRlU3RyZWFtOjphcHBlbmQpOgotICAgICAgICAqIHhtbC9YUGF0aE5vZGVT
ZXQuaDoKLSAgICAgICAgKFdlYkNvcmU6OlhQYXRoOjpOb2RlU2V0OjpiZWdpbik6Ci0gICAgICAg
IChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6ZW5kKToKLQogMjAxNC0xMS0yOSAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIEZpeCBhIGJ1aWxkIHdh
cm5pbmcgd2hlbiBDU1NfU0NST0xMX1NOQVAgaXMgZW5hYmxlZApAQCAtMzg3OSw2ICszODczLDQx
IEBACiAgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RPcHRpb24u
Y3BwOgogICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lbnVMaXN0T3B0aW9uOjplbGVt
ZW50UmVjdCk6CiAKKzIwMTQtMTEtMTcgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4K
KworICAgICAgICBNYWtlIHN1cmUgcmFuZ2UgYmFzZWQgaXRlcmF0aW9uIG9mIFZlY3Rvcjw+IHN0
aWxsIHJlY2VpdmVzIGJvdW5kcyBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4ODIxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFyayBM
YW0uCisKKyAgICAgICAgVGhlcmUgYXJlIGEgZmV3IHVzZXMgb2YgYmVnaW4oKS9lbmQoKSB0aGF0
IGV4cGxpY2l0bHkgcmVxdWlyZSBwb2ludGVycywKKyAgICAgICAgc28gd2UgdXNlIGdldFB0cigp
IHRvIGV4dHJhY3QgdGhlIHVuZGVybHlpbmcgcG9pbnRlciBnZW5lcmljYWxseS4KKworICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDbG9uZURlc2VyaWFsaXplcjo6ZGVzZXJpYWxpemVTdHJpbmcpOgorICAgICAgICAqIGVk
aXRpbmcvVGV4dEl0ZXJhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlYXJjaEJ1ZmZlcjo6
aXNCYWRNYXRjaCk6CisgICAgICAgICogcGFnZS9tYWMvU2VydmljZXNPdmVybGF5Q29udHJvbGxl
ci5tbToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VzT3ZlcmxheUNvbnRyb2xsZXI6OmJ1aWxk
U2VsZWN0aW9uSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TZWdtZW50
ZWRGb250RGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRGb250RGF0YTo6Zm9u
dERhdGFGb3JDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U2VnbWVudGVkRm9udERhdGE6
OmNvbnRhaW5zQ2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZEZvbnREYXRh
Ojppc0xvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL1dPRkZGaWxlRm9ybWF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRXT0ZGVG9TZm50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckJveDo6cGFp
bnRGaWxsTGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvR3JpZFJlc29sdmVkUG9z
aXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3ROYW1lZEdyaWRMaW5lQmVmb3JlUG9z
aXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R3JpZFJlc29sdmVkUG9zaXRpb246OnJlc29sdmVS
b3dFbmRDb2x1bW5FbmROYW1lZEdyaWRMaW5lUG9zaXRpb25BZ2FpbnN0T3Bwb3NpdGVQb3NpdGlv
bik6CisgICAgICAgICogc3ZnL1NWR0ZvbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Omtlcm5pbmdGb3JQYWlyT2ZTdHJpbmdzQW5kR2x5cGhzKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0
aEJ5dGVTdHJlYW0uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhCeXRlU3RyZWFtOjphcHBl
bmQpOgorICAgICAgICAqIHhtbC9YUGF0aE5vZGVTZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhQ
YXRoOjpOb2RlU2V0OjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpYUGF0aDo6Tm9kZVNldDo6
ZW5kKToKKwogMjAxNC0xMS0xNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNv
bT4KIAogICAgICAgICBGaXggYSBzbWFsbCBpbmRlbnRhdGlvbiBtaXN0YWtlIGluIFNlbGVjdG9y
Q29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVOdGhGaWx0ZXJUZXN0CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1B1YmxpY0RPTUludGVyZmFjZXMuaAkocmV2aXNpb24g
MTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZh
Y2VzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsOCBAQAogQHByb3BlcnR5IChyZWFk
b25seSkgaW50IGNsaWVudExlZnQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNSk7CiBAcHJvcGVy
dHkgKHJlYWRvbmx5KSBpbnQgY2xpZW50VG9wIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwog
QHByb3BlcnR5IChyZWFkb25seSwgY29weSkgTlNTdHJpbmcgKmlubmVyVGV4dCBXRUJLSVRfQVZB
SUxBQkxFX01BQygxMF81KTsKK0Bwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmlubmVySFRNTDsK
K0Bwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKm91dGVySFRNTDsKIEBwcm9wZXJ0eSAocmVhZG9u
bHksIHN0cm9uZykgRE9NRWxlbWVudCAqZmlyc3RFbGVtZW50Q2hpbGQgV0VCS0lUX0FWQUlMQUJM
RV9NQUMoMTBfNik7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKmxh
c3RFbGVtZW50Q2hpbGQgV0VCS0lUX0FWQUlMQUJMRV9NQUMoMTBfNik7CiBAcHJvcGVydHkgKHJl
YWRvbmx5LCBzdHJvbmcpIERPTUVsZW1lbnQgKnByZXZpb3VzRWxlbWVudFNpYmxpbmcgV0VCS0lU
X0FWQUlMQUJMRV9NQUMoMTBfNik7CkBAIC00NzYsOSArNDc4LDcgQEAKIEBwcm9wZXJ0eSAoY29w
eSkgTlNTdHJpbmcgKmlkTmFtZTsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmxhbmc7CiBA
cHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpkaXI7Ci1AcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5n
ICppbm5lckhUTUw7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICppbm5lclRleHQ7Ci1AcHJv
cGVydHkgKGNvcHkpIE5TU3RyaW5nICpvdXRlckhUTUw7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3Ry
aW5nICpvdXRlclRleHQ7CiBAcHJvcGVydHkgKHJlYWRvbmx5LCBzdHJvbmcpIERPTUhUTUxDb2xs
ZWN0aW9uICpjaGlsZHJlbjsKIEBwcm9wZXJ0eSAoY29weSkgTlNTdHJpbmcgKmNvbnRlbnRFZGl0
YWJsZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NjU5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNiArNTQs
NyBAQAogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKICNpbmNsdWRlICJIVE1MU2VsZWN0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUYWJsZVJvd3NDb2xsZWN0aW9uLmgiCisjaW5jbHVk
ZSAiSFRNTFRlbXBsYXRlRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc2VydGlvblBvaW50LmgiCiAj
aW5jbHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRl
cmVzdEdyb3VwLmgiCkBAIC04MSw2ICs4Miw3IEBACiAjaW5jbHVkZSAiWE1MTlNOYW1lcy5oIgog
I2luY2x1ZGUgIlhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKKyNpbmNsdWRl
ICJtYXJrdXAuaCIKICNpbmNsdWRlIDx3dGYvQml0VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL0N1
cnJlbnRUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpAQCAtMjAyMiw3ICsy
MDI0LDY4IEBACiAgICAgRXZlbnREaXNwYXRjaGVyOjpkaXNwYXRjaEV2ZW50KHRoaXMsIGV2ZW50
LnJlbGVhc2UoKSk7CiB9CiAKK3ZvaWQgRWxlbWVudDo6bWVyZ2VXaXRoTmV4dFRleHROb2RlKFRl
eHQmIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIE5vZGUqIG5leHQgPSBub2RlLm5l
eHRTaWJsaW5nKCk7CisgICAgaWYgKCFpczxUZXh0PihuZXh0KSkKKyAgICAgICAgcmV0dXJuOwog
CisgICAgUmVmPFRleHQ+IHRleHROb2RlKG5vZGUpOworICAgIFJlZjxUZXh0PiB0ZXh0TmV4dChk
b3duY2FzdDxUZXh0PigqbmV4dCkpOworICAgIHRleHROb2RlLT5hcHBlbmREYXRhKHRleHROZXh0
LT5kYXRhKCksIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybjsKKyAgICB0ZXh0TmV4
dC0+cmVtb3ZlKGVjKTsKK30KKworU3RyaW5nIEVsZW1lbnQ6OmlubmVySFRNTCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCgqdGhpcywgQ2hpbGRyZW5Pbmx5KTsKK30KKworU3Ry
aW5nIEVsZW1lbnQ6Om91dGVySFRNTCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNyZWF0ZU1hcmt1
cCgqdGhpcyk7Cit9CisKK3ZvaWQgRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYg
aHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgRWxlbWVudCogcCA9IHBhcmVudEVsZW1l
bnQoKTsKKyAgICBpZiAoIWlzPEhUTUxFbGVtZW50PihwKSkgeworICAgICAgICBlYyA9IE5PX01P
RElGSUNBVElPTl9BTExPV0VEX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBSZWZQ
dHI8SFRNTEVsZW1lbnQ+IHBhcmVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihwKTsKKyAgICBS
ZWZQdHI8Tm9kZT4gcHJldiA9IHByZXZpb3VzU2libGluZygpOworICAgIFJlZlB0cjxOb2RlPiBu
ZXh0ID0gbmV4dFNpYmxpbmcoKTsKKworICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFn
bWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgcGFyZW50LmdldCgp
LCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBwYXJlbnQtPnJlcGxhY2VDaGlsZChmcmFnbWVudC5yZWxlYXNlKCksIHRo
aXMsIGVjKTsKKyAgICBSZWZQdHI8Tm9kZT4gbm9kZSA9IG5leHQgPyBuZXh0LT5wcmV2aW91c1Np
YmxpbmcoKSA6IG51bGxwdHI7CisgICAgaWYgKCFlYyAmJiBpczxUZXh0Pihub2RlLmdldCgpKSkK
KyAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHROb2RlKGRvd25jYXN0PFRleHQ+KCpub2RlKSwgZWMp
OworICAgIGlmICghZWMgJiYgaXM8VGV4dD4ocHJldi5nZXQoKSkpCisgICAgICAgIG1lcmdlV2l0
aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0PigqcHJldiksIGVjKTsKK30KKworCit2b2lkIEVs
ZW1lbnQ6OnNldElubmVySFRNTChjb25zdCBTdHJpbmcmIGh0bWwsIEV4Y2VwdGlvbkNvZGUmIGVj
KQoreworICAgIGlmIChSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQgPSBjcmVhdGVG
cmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIHRoaXMsIEFsbG93U2NyaXB0aW5nQ29udGVu
dCwgZWMpKSB7CisgICAgICAgIENvbnRhaW5lck5vZGUqIGNvbnRhaW5lciA9IHRoaXM7CisKKyNp
ZiBFTkFCTEUoVEVNUExBVEVfRUxFTUVOVCkKKyAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVs
ZW1lbnQ+KCp0aGlzKSkKKyAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvd25jYXN0PEhUTUxUZW1w
bGF0ZUVsZW1lbnQ+KCp0aGlzKS5jb250ZW50KCk7CisjZW5kaWYKKworICAgICAgICByZXBsYWNl
Q2hpbGRyZW5XaXRoRnJhZ21lbnQoKmNvbnRhaW5lciwgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7
CisgICAgfQorfQorCiBTdHJpbmcgRWxlbWVudDo6aW5uZXJUZXh0KCkKIHsKICAgICAvLyBXZSBu
ZWVkIHRvIHVwZGF0ZSBsYXlvdXQsIHNpbmNlIHBsYWluVGV4dCB1c2VzIGxpbmUgYm94ZXMgaW4g
dGhlIHJlbmRlciB0cmVlLgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAxNzY1OTIp
CisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTUs
NiArMzk1LDEwIEBACiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29s
IHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAgdmlydHVhbCB2b2lkIGJsdXIoKTsKIAor
ICAgIFN0cmluZyBpbm5lckhUTUwoKSBjb25zdDsKKyAgICBTdHJpbmcgb3V0ZXJIVE1MKCkgY29u
c3Q7CisgICAgdm9pZCBzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYp
OworICAgIHZvaWQgc2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgaW5uZXJUZXh0KCk7CiAgICAgU3RyaW5nIG91dGVy
VGV4dCgpOwogIApAQCAtNTcyLDYgKzU3Niw4IEBACiAgICAgLy8gcGFyc2VBdHRyaWJ1dGUgKGNh
bGxlZCB2aWEgc2V0QXR0cmlidXRlKCkpIGFuZAogICAgIC8vIHN2Z0F0dHJpYnV0ZUNoYW5nZWQg
KGNhbGxlZCB3aGVuIGVsZW1lbnQuY2xhc3NOYW1lLmJhc2VWYWx1ZSBpcyBzZXQpCiAgICAgdm9p
ZCBjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmlu
Zyk7CisgICAgCisgICAgc3RhdGljIHZvaWQgbWVyZ2VXaXRoTmV4dFRleHROb2RlKFRleHQmIG5v
ZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKTsKIAogcHJpdmF0ZToKICAgICBib29sIGlzVGV4dE5vZGUo
KSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDE3NjU5MikKKysr
IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTA4LDYg
KzEwOCw5IEBACiAKICAgICAvLyBIVE1MIDUKICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIG5hbWUpOworICAg
IFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0
ZSBET01TdHJpbmcgaW5uZXJIVE1MOworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0
ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgb3V0ZXJIVE1MOworICAgICAg
ICAgICAgIAogCiAgICAgW1JlZmxlY3Q9Y2xhc3NdIGF0dHJpYnV0ZSBET01TdHJpbmcgY2xhc3NO
YW1lOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01Ub2tlbkxpc3QgY2xhc3NMaXN0OwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAJKHJldmlzaW9uIDE3NjU5MikKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OCw3
ICs0OCw2IEBACiAjaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgotI2luY2x1ZGUgIkhUTUxUZW1w
bGF0ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgog
I2luY2x1ZGUgIk5vZGVUcmF2ZXJzYWwuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCkBA
IC00MTQsNjUgKzQxMyw2IEBACiAgICAgfQogfQogCi1TdHJpbmcgSFRNTEVsZW1lbnQ6OmlubmVy
SFRNTCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGNyZWF0ZU1hcmt1cCgqdGhpcywgQ2hpbGRyZW5P
bmx5KTsKLX0KLQotU3RyaW5nIEhUTUxFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAotewotICAg
IHJldHVybiBjcmVhdGVNYXJrdXAoKnRoaXMpOwotfQotCi12b2lkIEhUTUxFbGVtZW50OjpzZXRJ
bm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBp
ZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJhZ21lbnRGb3JJ
bm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQsIGVjKSkgewot
ICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0aGlzOwotI2lmIEVOQUJMRShURU1Q
TEFURV9FTEVNRU5UKQotICAgICAgICBpZiAoaXM8SFRNTFRlbXBsYXRlRWxlbWVudD4oKnRoaXMp
KQotICAgICAgICAgICAgY29udGFpbmVyID0gZG93bmNhc3Q8SFRNTFRlbXBsYXRlRWxlbWVudD4o
KnRoaXMpLmNvbnRlbnQoKTsKLSNlbmRpZgotICAgICAgICByZXBsYWNlQ2hpbGRyZW5XaXRoRnJh
Z21lbnQoKmNvbnRhaW5lciwgZnJhZ21lbnQucmVsZWFzZSgpLCBlYyk7Ci0gICAgfQotfQotCi1z
dGF0aWMgdm9pZCBtZXJnZVdpdGhOZXh0VGV4dE5vZGUoVGV4dCYgbm9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCi17Ci0gICAgTm9kZSogbmV4dCA9IG5vZGUubmV4dFNpYmxpbmcoKTsKLSAgICBpZiAo
IWlzPFRleHQ+KG5leHQpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWY8VGV4dD4gdGV4dE5v
ZGUobm9kZSk7Ci0gICAgUmVmPFRleHQ+IHRleHROZXh0KGRvd25jYXN0PFRleHQ+KCpuZXh0KSk7
Ci0gICAgdGV4dE5vZGUtPmFwcGVuZERhdGEodGV4dE5leHQtPmRhdGEoKSwgZWMpOwotICAgIGlm
IChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIHRleHROZXh0LT5yZW1vdmUoZWMpOwotfQotCi12
b2lkIEhUTUxFbGVtZW50OjpzZXRPdXRlckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBFbGVtZW50KiBwID0gcGFyZW50RWxlbWVudCgpOwotICAgIGlm
ICghaXM8SFRNTEVsZW1lbnQ+KHApKSB7Ci0gICAgICAgIGVjID0gTk9fTU9ESUZJQ0FUSU9OX0FM
TE9XRURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFJlZlB0cjxIVE1MRWxlbWVu
dD4gcGFyZW50ID0gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KHApOwotICAgIFJlZlB0cjxOb2RlPiBw
cmV2ID0gcHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgUmVmUHRyPE5vZGU+IG5leHQgPSBuZXh0U2li
bGluZygpOwotCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRl
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChodG1sLCBwYXJlbnQuZ2V0KCksIEFsbG93U2NyaXB0
aW5nQ29udGVudCwgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotICAgICAgCi0g
ICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlzLCBlYyk7Ci0g
ICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBuZXh0ID8gbmV4dC0+cHJldmlvdXNTaWJsaW5nKCkgOiBu
dWxscHRyOwotICAgIGlmICghZWMgJiYgaXM8VGV4dD4obm9kZS5nZXQoKSkpCi0gICAgICAgIG1l
cmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0Pigqbm9kZSksIGVjKTsKLSAgICBpZiAo
IWVjICYmIGlzPFRleHQ+KHByZXYuZ2V0KCkpKQotICAgICAgICBtZXJnZVdpdGhOZXh0VGV4dE5v
ZGUoZG93bmNhc3Q8VGV4dD4oKnByZXYpLCBlYyk7Ci19Ci0KIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBIVE1MRWxlbWVudDo6dGV4dFRvRnJhZ21lbnQoY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQg
PSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5oCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDEwICs0OCw2IEBACiAKICAgICB2
aXJ0dWFsIHNob3J0IHRhYkluZGV4KCkgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBTdHJpbmcgaW5u
ZXJIVE1MKCkgY29uc3Q7Ci0gICAgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0OwotICAgIHZvaWQg
c2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2b2lkIHNl
dE91dGVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBzZXRJ
bm5lclRleHQoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0T3V0
ZXJUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5pZGwJKHJldmlzaW9uIDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEVsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zOCwxMSArMzgsOSBAQAog
ICAgICAgICAgICAgIFtSZWZsZWN0XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFjY2Vzc0tleTsKIAog
ICAgIC8vIEV4dGVuc2lvbnMKLSAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywg
U2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVySFRNTDsKLSAg
ICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9u
XSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKLSAgICAgICAgICAgICBbVHJlYXROdWxs
QXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IG91dGVySFRNTDsKLSAgICAgICAgICAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVyVGV4dDsKLQorICAgIFtU
cmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJSYWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBE
T01TdHJpbmcgaW5uZXJUZXh0OworICAgIFtUcmVhdE51bGxBcz1OdWxsU3RyaW5nLCBTZXR0ZXJS
YWlzZXNFeGNlcHRpb25dIGF0dHJpYnV0ZSBET01TdHJpbmcgb3V0ZXJUZXh0OworICAgICAgICAg
ICAgIAogICAgIFtSYWlzZXNFeGNlcHRpb25dIEVsZW1lbnQgaW5zZXJ0QWRqYWNlbnRFbGVtZW50
KFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRE9NU3RyaW5nIHdoZXJlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFtEZWZhdWx0PVVuZGVmaW5lZF0gb3B0aW9uYWwgRWxl
bWVudCBlbGVtZW50KTsKICAgICBbUmFpc2VzRXhjZXB0aW9uXSB2b2lkIGluc2VydEFkamFjZW50
SFRNTChbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB3aGVyZSwKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAkocmV2
aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIwLDE1ICszMjAsMTQgQEAKIAogSFRNTFRyZWVC
dWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdDb250ZXh0KCkK
ICAgICA6IG1fZnJhZ21lbnQoMCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoMCkKIHsKIH0KIAog
SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0OjpGcmFnbWVudFBhcnNpbmdD
b250ZXh0KERvY3VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBFbGVtZW50KiBjb250ZXh0RWxlbWVu
dCkKICAgICA6IG1fZnJhZ21lbnQoJmZyYWdtZW50KQotICAgICwgbV9jb250ZXh0RWxlbWVudChj
b250ZXh0RWxlbWVudCkKIHsKICAgICBBU1NFUlQoIWZyYWdtZW50Lmhhc0NoaWxkTm9kZXMoKSk7
CisgICAgbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbSA9IEhUTUxTdGFja0l0ZW06OmNyZWF0ZShj
b250ZXh0RWxlbWVudCwgSFRNTFN0YWNrSXRlbTo6SXRlbUZvckNvbnRleHRFbGVtZW50KTsKIH0K
IAogSFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojp+RnJhZ21lbnRQYXJz
aW5nQ29udGV4dCgpCkBAIC0zNTYsNyArMzU1LDcgQEAKIAogICAgIGlmIChtX3BhcnNlci50b2tl
bml6ZXIoKSkgewogICAgICAgICBib29sIGluRm9yZWlnbkNvbnRlbnQgPSAhbV90cmVlLmlzRW1w
dHkoKQotICAgICAgICAgICAgJiYgIW1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmlzSW5IVE1M
TmFtZXNwYWNlKCkKKyAgICAgICAgICAgICYmICFhZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKS0+
aXNJbkhUTUxOYW1lc3BhY2UoKQogICAgICAgICAgICAgJiYgIUhUTUxFbGVtZW50U3RhY2s6Omlz
SFRNTEludGVncmF0aW9uUG9pbnQobV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKSkKICAgICAgICAg
ICAgICYmICFIVE1MRWxlbWVudFN0YWNrOjppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KG1f
dHJlZS5jdXJyZW50U3RhY2tJdGVtKCkpOwogCkBAIC0xNjE3LDcgKzE2MTYsNyBAQAogICAgICAg
ICAgICAgYm9vbCBzaG91bGRDcmVhdGVJdGVtID0gdHJ1ZTsKICNlbmRpZgogICAgICAgICAgICAg
aWYgKHNob3VsZENyZWF0ZUl0ZW0pCi0gICAgICAgICAgICAgICAgaXRlbSA9IEhUTUxTdGFja0l0
ZW06OmNyZWF0ZShtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudCgpLCBIVE1MU3RhY2tJ
dGVtOjpJdGVtRm9yQ29udGV4dEVsZW1lbnQpOworICAgICAgICAgICAgICAgIGl0ZW0gPSBtX2Zy
YWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudFN0YWNrSXRlbSgpOwogICAgICAgICB9CiAjaWYg
RU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCiAgICAgICAgIGlmIChpdGVtLT5oYXNUYWdOYW1lKHRl
bXBsYXRlVGFnKSkKQEAgLTI4NDAsMTYgKzI4MzksMjcgQEAKIAogICAgIHNldEluc2VydGlvbk1v
ZGUoSW5zZXJ0aW9uTW9kZTo6VGV4dCk7CiB9CisgICAgCisvLyBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNhZGp1c3RlZC1jdXJyZW50LW5vZGUKK0hU
TUxTdGFja0l0ZW0qIEhUTUxUcmVlQnVpbGRlcjo6YWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQoIW1fdHJlZS5pc0VtcHR5KCkpOworICAgIGlmIChpc1BhcnNp
bmdGcmFnbWVudCgpICYmIG1fdHJlZS5vcGVuRWxlbWVudHMoKS0+aGFzT25seU9uZUVsZW1lbnQo
KSkKKyAgICAgICAgcmV0dXJuIG1fZnJhZ21lbnRDb250ZXh0LmNvbnRleHRFbGVtZW50U3RhY2tJ
dGVtKCk7CisgICAgICAgIAorICAgIHJldHVybiBtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpOwor
fQogCisKIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdv
cmsvbXVsdGlwYWdlL3RyZWUtY29uc3RydWN0aW9uLmh0bWwjdHJlZS1jb25zdHJ1Y3Rpb24KIGJv
b2wgSFRNTFRyZWVCdWlsZGVyOjpzaG91bGRQcm9jZXNzVG9rZW5JbkZvcmVpZ25Db250ZW50KEF0
b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CiAgICAgaWYgKG1fdHJlZS5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBIVE1MU3RhY2tJdGVtKiBpdGVtID0gbV90cmVlLmN1cnJl
bnRTdGFja0l0ZW0oKTsKLSAgICBpZiAoaXRlbS0+aXNJbkhUTUxOYW1lc3BhY2UoKSkKKyAgICBI
VE1MU3RhY2tJdGVtKiBhZGp1c3RlZEN1cnJlbnROb2RlID0gYWRqdXN0ZWRDdXJyZW50U3RhY2tJ
dGVtKCk7CisgICAgaWYgKGFkanVzdGVkQ3VycmVudE5vZGUtPmlzSW5IVE1MTmFtZXNwYWNlKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRo
TUxUZXh0SW50ZWdyYXRpb25Qb2ludChpdGVtKSkgeworICAgIGlmIChIVE1MRWxlbWVudFN0YWNr
Ojppc01hdGhNTFRleHRJbnRlZ3JhdGlvblBvaW50KGFkanVzdGVkQ3VycmVudE5vZGUpKSB7CiAg
ICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcKICAgICAgICAg
ICAgICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0aE1MTmFtZXM6Om1nbHlwaFRhZwogICAgICAgICAg
ICAgJiYgdG9rZW4tPm5hbWUoKSAhPSBNYXRoTUxOYW1lczo6bWFsaWdubWFya1RhZykKQEAgLTI4
NTcsMTEgKzI4NjcsMTEgQEAKICAgICAgICAgaWYgKHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2Vu
OjpDaGFyYWN0ZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQotICAgIGlmIChp
dGVtLT5oYXNUYWdOYW1lKE1hdGhNTE5hbWVzOjphbm5vdGF0aW9uX3htbFRhZykKKyAgICBpZiAo
YWRqdXN0ZWRDdXJyZW50Tm9kZS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvbl94
bWxUYWcpCiAgICAgICAgICYmIHRva2VuLT50eXBlKCkgPT0gSFRNTFRva2VuOjpTdGFydFRhZwog
ICAgICAgICAmJiB0b2tlbi0+bmFtZSgpID09IFNWR05hbWVzOjpzdmdUYWcpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Q
b2ludChpdGVtKSkgeworICAgIGlmIChIVE1MRWxlbWVudFN0YWNrOjppc0hUTUxJbnRlZ3JhdGlv
blBvaW50KGFkanVzdGVkQ3VycmVudE5vZGUpKSB7CiAgICAgICAgIGlmICh0b2tlbi0+dHlwZSgp
ID09IEhUTUxUb2tlbjo6U3RhcnRUYWcpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6Q2hhcmFjdGVyKQpAQCAtMjg3NCw2
ICsyODg0LDggQEAKIAogdm9pZCBIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tlbkluRm9yZWln
bkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKiB0b2tlbikKIHsKKyAgICBIVE1MU3RhY2tJdGVtKiBh
ZGp1c3RlZEN1cnJlbnROb2RlID0gYWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCk7CisgICAgCiAg
ICAgc3dpdGNoICh0b2tlbi0+dHlwZSgpKSB7CiAgICAgY2FzZSBIVE1MVG9rZW46OlVuaW5pdGlh
bGl6ZWQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMjkyNyw3ICsyOTM5LDcg
QEAKICAgICAgICAgICAgIHByb2Nlc3NTdGFydFRhZyh0b2tlbik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBjdXJyZW50TmFtZXNw
YWNlID0gbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bmFtZXNwYWNlVVJJKCk7CisgICAgICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgY3VycmVudE5hbWVzcGFjZSA9IGFkanVzdGVkQ3VycmVudE5v
ZGUtPm5hbWVzcGFjZVVSSSgpOwogICAgICAgICBpZiAoY3VycmVudE5hbWVzcGFjZSA9PSBNYXRo
TUxOYW1lczo6bWF0aG1sTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgYWRqdXN0TWF0aE1MQXR0
cmlidXRlcygqdG9rZW4pOwogICAgICAgICBpZiAoY3VycmVudE5hbWVzcGFjZSA9PSBTVkdOYW1l
czo6c3ZnTmFtZXNwYWNlVVJJKSB7CkBAIC0yOTM5LDcgKzI5NTEsNyBAQAogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBIVE1MVG9rZW46OkVuZFRhZzogewotICAgICAgICBpZiAobV90
cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+bmFtZXNwYWNlVVJJKCkgPT0gU1ZHTmFtZXM6OnN2Z05h
bWVzcGFjZVVSSSkKKyAgICAgICAgaWYgKGFkanVzdGVkQ3VycmVudE5vZGUtPm5hbWVzcGFjZVVS
SSgpID09IFNWR05hbWVzOjpzdmdOYW1lc3BhY2VVUkkpCiAgICAgICAgICAgICBhZGp1c3RTVkdU
YWdOYW1lQ2FzZSgqdG9rZW4pOwogCiAgICAgICAgIGlmICh0b2tlbi0+bmFtZSgpID09IFNWR05h
bWVzOjpzY3JpcHRUYWcgJiYgbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKS0+aGFzVGFnTmFtZShT
VkdOYW1lczo6c2NyaXB0VGFnKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFRyZWVCdWlsZGVyLmgJKHJldmlzaW9uIDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICsz
Miw3IEBACiAjaW5jbHVkZSAiSFRNTEVsZW1lbnRTdGFjay5oIgogI2luY2x1ZGUgIkhUTUxGb3Jt
YXR0aW5nRWxlbWVudExpc3QuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VyT3B0aW9ucy5oIgorI2lu
Y2x1ZGUgIkhUTUxTdGFja0l0ZW0uaCIKICNpbmNsdWRlICJIVE1MVG9rZW5pemVyLmgiCiAjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KQEAg
LTE3MCw2ICsxNzEsOCBAQAogCiAgICAgaW5saW5lIGJvb2wgc2hvdWxkUHJvY2Vzc1Rva2VuSW5G
b3JlaWduQ29udGVudChBdG9taWNIVE1MVG9rZW4qKTsKICAgICB2b2lkIHByb2Nlc3NUb2tlbklu
Rm9yZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKik7CisgICAgCisgICAgaW5saW5lIEhUTUxT
dGFja0l0ZW0qIGFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSgpIGNvbnN0OwogCiAgICAgVmVjdG9y
PEF0dHJpYnV0ZT4gYXR0cmlidXRlc0ZvcklzaW5kZXhJbnB1dChBdG9taWNIVE1MVG9rZW4qKTsK
IApAQCAtMjAxLDExICsyMDQsMTIgQEAKICAgICAgICAgfkZyYWdtZW50UGFyc2luZ0NvbnRleHQo
KTsKIAogICAgICAgICBEb2N1bWVudEZyYWdtZW50KiBmcmFnbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fZnJhZ21lbnQ7IH0KLSAgICAgICAgRWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7
IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnQ7IH0KKyAgICAgICAg
RWxlbWVudCogY29udGV4dEVsZW1lbnQoKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdtZW50KTsgcmV0
dXJuIG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW0tPmVsZW1lbnQoKTsgfQorICAgICAgICBIVE1M
U3RhY2tJdGVtKiBjb250ZXh0RWxlbWVudFN0YWNrSXRlbSgpIGNvbnN0IHsgQVNTRVJUKG1fZnJh
Z21lbnQpOyByZXR1cm4gbV9jb250ZXh0RWxlbWVudFN0YWNrSXRlbS5nZXQoKTsgfQogCiAgICAg
cHJpdmF0ZToKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogbV9mcmFnbWVudDsKLSAgICAgICAg
RWxlbWVudCogbV9jb250ZXh0RWxlbWVudDsKKyAgICAgICAgUmVmUHRyPEhUTUxTdGFja0l0ZW0+
IG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW07CiAgICAgfTsKIAogICAgIGJvb2wgbV9mcmFtZXNl
dE9rOwo=
</data>
<flag name="review"
          id="267235"
          type_id="1"
          status="-"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>242361</attachid>
            <date>2014-12-01 16:47:46 -0800</date>
            <delta_ts>2014-12-02 02:49:50 -0800</delta_ts>
            <desc>[WIP] fix.patch</desc>
            <filename>fix.patch</filename>
            <type>text/plain</type>
            <size>23544</size>
            <attacher name="Sylvain Galineau">galineau</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3NjYwNCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE0LTEyLTAxICBTeWx2YWluIEdhbGluZWF1
ICA8Z2FsaW5lYXVAYWRvYmUuY29tPgorCisgICAgTWlzc2luZyBzdXBwb3J0IGZvciBpbm5lckhU
TUwgb24gU1ZHRWxlbWVudAorICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMzY5MDMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIGpzL2RvbS9kb20tc3RhdGljLXByb3BlcnR5LWZvci1pbi1pdGVyYXRpb24tZXhwZWN0
ZWQudHh0OiBUaGUgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaXMgZGlmZmVyZW50IG5vdyB0
aGF0IGlubmVyL291dGVySFRNTCBhcmUgaW5oZXJpdGVkIGZyb20gRWxlbWVudAorICAgICAgICAq
IHBsYXRmb3JtL21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC5wbmc6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2luZy1leHBl
Y3RlZC50eHQ6CisgICAgICAgIE5vdyB0aGF0IGlubmVySFRNTCB3b3JrcywgdGhlIG91dHB1dCBz
aG91bGQgc3RhcnQgd2l0aCAnVGVzdCcKKyAgICAgICAgKiBzdmcvaW4taHRtbC9zdmctaW5uZXIt
aHRtbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2Zy9pbi1odG1sL3N2Zy1pbm5l
ci1odG1sLmh0bWw6IEFkZGVkLgorCiAyMDE0LTEyLTAxICBBbGV4ZXkgUHJvc2t1cnlha292ICA8
YXBAYXBwbGUuY29tPgogCiAgICAgICAgIGh0dHAgdGVzdHMgc2hvdWxkIG5vdCB1c2Ugc2hhcmVk
IHRlbXBvcmFyeSBmaWxlcywgcGFydCAzCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0
YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9qcy9kb20vZG9tLXN0YXRpYy1wcm9wZXJ0eS1mb3ItaW4taXRlcmF0aW9u
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTc2NTkyKQorKysgTGF5b3V0VGVzdHMvanMvZG9tL2Rv
bS1zdGF0aWMtcHJvcGVydHktZm9yLWluLWl0ZXJhdGlvbi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTM3LDkgKzM3LDcgQEAKIFBBU1MgYVsid2Via2l0ZHJvcHpvbmUiXSBpcyAKIFBB
U1MgYVsiaGlkZGVuIl0gaXMgZmFsc2UKIFBBU1MgYVsiYWNjZXNzS2V5Il0gaXMgCi1QQVNTIGFb
ImlubmVySFRNTCJdIGlzIG5lcmdldAogUEFTUyBhWyJpbm5lclRleHQiXSBpcyBuZXJnZXQKLVBB
U1MgYVsib3V0ZXJIVE1MIl0gaXMgPGEgaWQ9ImZvbyIgaHJlZj0iYmFyIj5uZXJnZXQ8L2E+CiBQ
QVNTIGFbIm91dGVyVGV4dCJdIGlzIG5lcmdldAogUEFTUyBhWyJjaGlsZHJlbiJdIGlzIFtvYmpl
Y3QgSFRNTENvbGxlY3Rpb25dCiBQQVNTIGFbImNvbnRlbnRFZGl0YWJsZSJdIGlzIGluaGVyaXQK
QEAgLTUwLDcgKzQ4LDcgQEAKIFBBU1MgYVsic3R5bGUiXSBpcyBbb2JqZWN0IENTU1N0eWxlRGVj
bGFyYXRpb25dCiBQQVNTIGFbImlkIl0gaXMgZm9vCiBQQVNTIGFbIm9mZnNldExlZnQiXSBpcyA4
Ci1QQVNTIGFbIm9mZnNldFRvcCJdIGlzIDc4OQorUEFTUyBhWyJvZmZzZXRUb3AiXSBpcyA3NTkK
IFBBU1MgYVsib2Zmc2V0V2lkdGgiXSBpcyAzOQogUEFTUyBhWyJvZmZzZXRIZWlnaHQiXSBpcyAx
OAogUEFTUyBhWyJjbGllbnRMZWZ0Il0gaXMgMApAQCAtNjIsNiArNjAsOCBAQAogUEFTUyBhWyJz
Y3JvbGxXaWR0aCJdIGlzIDAKIFBBU1MgYVsic2Nyb2xsSGVpZ2h0Il0gaXMgMAogUEFTUyBhWyJv
ZmZzZXRQYXJlbnQiXSBpcyBbb2JqZWN0IEhUTUxCb2R5RWxlbWVudF0KK1BBU1MgYVsiaW5uZXJI
VE1MIl0gaXMgbmVyZ2V0CitQQVNTIGFbIm91dGVySFRNTCJdIGlzIDxhIGlkPSJmb28iIGhyZWY9
ImJhciI+bmVyZ2V0PC9hPgogUEFTUyBhWyJjbGFzc05hbWUiXSBpcyAKIFBBU1MgYVsiY2xhc3NM
aXN0Il0gaXMgCiBQQVNTIGFbImRhdGFzZXQiXSBpcyBbb2JqZWN0IERPTVN0cmluZ01hcF0KSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1l
eHBlY3RlZC5wbmcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQpDYW5ub3QgZGlzcGxheTogZmlsZSBtYXJrZWQgYXMgYSBi
aW5hcnkgdHlwZS4Kc3ZuOm1pbWUtdHlwZSA9IGFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbQpJbmRl
eDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3N2Zy9pbi1odG1sL3N2Zy1pbm5lci1odG1sLWV4
cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2lu
LWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nCShyZXZpc2lvbiAxNzY1OTIpCisrKyBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0
ZWQucG5nCSh3b3JraW5nIGNvcHkpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQucG5nCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjptaW1lLXR5cGUKIyMgLTAsMCArMSAjIworYXBwbGljYXRpb24vb2N0
ZXQtc3RyZWFtClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IExheW91dFRl
c3RzL3N2Zy9jc3Mvc3ZnLWF0dHJpYnV0ZS1sZW5ndGgtcGFyc2luZy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2Nzcy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJz
aW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTc2NTkyKQorKysgTGF5b3V0VGVzdHMvc3ZnL2Nz
cy9zdmctYXR0cmlidXRlLWxlbmd0aC1wYXJzaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQgQEAKK1Rlc3QKIFRlc3QgQ1NTIHBhcnNpbmcgb24gU1ZHIHByZXNlbnRh
dGlvbiBhdHRyaWJ1dGVzLgogCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCkluZGV4OiBMYXlv
dXRUZXN0cy9zdmcvaW4taHRtbC9zdmctaW5uZXItaHRtbC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwt
ZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMiBAQAorUEFTUyA8cGF0aCBk
PSJNIDAgMCBMIDI1OSAwIDI1OSAxNDggMCAxNDggeiIgc3Ryb2tlPSIjZmZmIiBzdHJva2Utd2lk
dGg9IjEiIGZpbGw9IiMwMGZmMDAiPjwvcGF0aD4KKwpJbmRleDogTGF5b3V0VGVzdHMvc3ZnL2lu
LWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9zdmcv
aW4taHRtbC9zdmctaW5uZXItaHRtbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
c3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDI1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikKKyAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+CisgICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+CisgICAgPHN2ZyB4
PSIwcHgiIHk9IjBweCIgd2lkdGg9IjQwMHB4IiBoZWlnaHQ9IjMwMHB4Ij4KKyAgICAgICAgICAg
IDxkZWZzIGlkPSJzdmctZGVmcyI+PC9kZWZzPgorICAgICAgICAgICAgPHJlY3QgZmlsbD0idXJs
KCNwYXR0ZXJuKSIgaGVpZ2h0PSIxNDgiIHdpZHRoPSIyNTkiIHk9IjEiIHg9IjEiIHN0cm9rZT0i
IzAwMDAwMCIgLz4KKyAgICA8L3N2Zz4KKyAgICA8c2NyaXB0PgorICAgICAgICB2YXIgZGVmcyA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdmctZGVmcycpOworCisgICAgICAgIHZhciBuZXdQ
YXR0ZXJuID0gJzxwYXR0ZXJuIGlkPSJzdmctcGF0dGVybiIgd2lkdGg9IjI1OSIgaGVpZ2h0PSIx
NDgiIHBhdHRlcm5Vbml0cz0idXNlclNwYWNlT25Vc2UiPjxwYXRoIGQ9Ik0gMCAwIEwgMjU5IDAg
MjU5IDE0OCAwIDE0OCB6IiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iMSIgZmlsbD0iIzAw
ZmYwMCI+PC9wYXRoPjwvcGF0dGVybj4nOworCisgICAgICAgIGRlZnMuaW5uZXJIVE1MID0gbmV3
UGF0dGVybjsKKworICAgICAgICB2YXIgdmVyaWZ5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N2Zy1wYXR0ZXJuJyk7CisgICAgICAgIHRlc3RQYXNzZWQodmVyaWZ5LmlubmVySFRNTCk7Cisg
ICAgPC9zY3JpcHQ+Cis8L2JvZHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTc2NjA0KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMTQtMTItMDEgIFN5bHZhaW4gR2FsaW5l
YXUgIDxnYWxpbmVhdUBhZG9iZS5jb20+CisKKyAgICAgICAgTWlzc2luZyBzdXBwb3J0IGZvciBp
bm5lckhUTUwgb24gU1ZHRWxlbWVudAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM2OTAzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgVHdvIHBhcnRzIHRvIHRoaXMgcGF0Y2g6CisgICAgICAgIDEuIE1vdmUg
aW5uZXJIVE1ML291dGVySFRNTCB0byBFbGVtZW50IHNvIFNWRyBlbGVtZW50cyBjYW4gaW5oZXJp
dCB0aGVtLCBwZXIgaHR0cHM6Ly9kdmNzLnczLm9yZy9oZy9pbm5lcmh0bWwvcmF3LWZpbGUvdGlw
L2luZGV4Lmh0bWwjaW5uZXJodG1sCisgICAgICAgIDIuIE1ha2Ugc3VyZSBmcmFnbWVudCBpbnNl
cnRpb24gaXMgcHJvY2Vzc2VkIHJlbGF0aXZlIHRvIHRoZSBwcm9wZXIgbm9kZSwgcGVyIGh0dHA6
Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsvI2FkanVzdGVkLWN1
cnJlbnQtbm9kZQorCisgICAgICAgIFRoZSBsYXR0ZXIgcGFydCB3YXMgcG9ydGVkIG92ZXIgZnJv
bSBCbGluay4gCisKKyAgICAgICAgVGVzdDogc3ZnL2luLWh0bWwvc3ZnLWlubmVyLWh0bWwuaHRt
bAorCisgICAgICAgICogYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmg6IE1vdmUg
aW5uZXJIVE1ML291dGVySFRNTCB0byBFbGVtZW50LgorICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZSk6IEhl
bHBlciB1c2VkIGJ5IEVsZW1lbnQ6OmlubmVySFRNTC9vdXRlckhUTUwgYXMgd2VsbCBhcyBIVE1M
RWxlbWVudDo6aW5uZXJUZXh0L291dGVyVGV4dDsgbW92ZWQgdG8gRWxlbWVudCBhcyBwcm90ZWN0
ZWQgc3RhdGljLgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aW5uZXJIVE1MKTogTW92ZWQg
ZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Om91dGVySFRNTCk6
IE1vdmVkIGZyb20gSFRNTEVsZW1lbnQuCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRP
dXRlckhUTUwpOiBNb3ZlZCBmcm9tIEhUTUxFbGVtZW50LgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6c2V0SW5uZXJIVE1MKTogTW92ZWQgZnJvbSBIVE1MRWxlbWVudC4KKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOiAKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogaHRt
bC9IVE1MRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRWxlbWVudDo6aW5uZXJI
VE1MKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50OjpvdXRlckhUTUwp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldElubmVySFRNTCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjptZXJnZVdpdGhOZXh0VGV4dE5vZGUpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OnNldE91dGVySFRNTCk6IERlbGV0
ZWQuCisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEVs
ZW1lbnQuaWRsOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkZyYWdtZW50UGFyc2luZ0NvbnRleHQ6
OkZyYWdtZW50UGFyc2luZ0NvbnRleHQpOiBubyBtb3JlIG1fY29udGV4dEVsZW1lbnQuCisgICAg
ICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OmNvbnN0cnVjdFRyZWUpOiByZWFkIG5hbWVz
cGFjZSBmcm9tIGFkanVzdGVkIGN1cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxU
cmVlQnVpbGRlcjo6cmVzZXRJbnNlcnRpb25Nb2RlQXBwcm9wcmlhdGVseSk6IHVzZSBjb250ZXh0
RWxlbWVudFN0YWNrSXRlbSBmb3IgaW5zZXJ0aW9uLgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRy
ZWVCdWlsZGVyOjphZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0pOiBjb21wdXRlIGFkanVzdGVkIGN1
cnJlbnQgbm9kZS4KKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJv
Y2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudCk6IHVzZSBhZGp1c3RlZCBjdXJyZW50IG5vZGUgZm9y
IGNvbnRleHQuCisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NUb2tl
bkluRm9yZWlnbkNvbnRlbnQpOiB1c2UgYWRqdXN0ZWQgY3VycmVudCBub2RlIHRvIHJlYWQgbmFt
ZXNwYWNlLgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5oOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTFRyZWVCdWlsZGVyOjpGcmFnbWVudFBhcnNpbmdDb250ZXh0Ojpjb250
ZXh0RWxlbWVudCk6IERlbGV0ZWQuIFJlYWQgZnJvbSBjb250ZXh0RWxlbWVudFN0YWNrSXRlbS4K
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4
dDo6Y29udGV4dEVsZW1lbnRTdGFja0l0ZW0pOiBBZGRlZC4KKwogMjAxNC0xMi0wMSAgQmFydGxv
bWllaiBHYWpkYSAgPGIuZ2FqZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW01TRV0gRml4IG5v
dCBhbHdheXMgY2FsbGluZyBtZWRpYVBsYXllciBzZWVrLgpJbmRleDogU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9QdWJsaWNET01JbnRlcmZhY2VzLmgJKHJldmlzaW9uIDE3
NjU5MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL29iamMvUHVibGljRE9NSW50ZXJmYWNl
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTUsNiArMTk1LDggQEAKIEBwcm9wZXJ0eSAocmVhZG9u
bHkpIGludCBjbGllbnRMZWZ0IFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzUpOwogQHByb3BlcnR5
IChyZWFkb25seSkgaW50IGNsaWVudFRvcCBXRUJLSVRfQVZBSUxBQkxFX01BQygxMF81KTsKIEBw
cm9wZXJ0eSAocmVhZG9ubHksIGNvcHkpIE5TU3RyaW5nICppbm5lclRleHQgV0VCS0lUX0FWQUlM
QUJMRV9NQUMoMTBfNSk7CitAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICppbm5lckhUTUw7CitA
cHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpvdXRlckhUTUw7CiBAcHJvcGVydHkgKHJlYWRvbmx5
LCBzdHJvbmcpIERPTUVsZW1lbnQgKmZpcnN0RWxlbWVudENoaWxkIFdFQktJVF9BVkFJTEFCTEVf
TUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01FbGVtZW50ICpsYXN0
RWxlbWVudENoaWxkIFdFQktJVF9BVkFJTEFCTEVfTUFDKDEwXzYpOwogQHByb3BlcnR5IChyZWFk
b25seSwgc3Ryb25nKSBET01FbGVtZW50ICpwcmV2aW91c0VsZW1lbnRTaWJsaW5nIFdFQktJVF9B
VkFJTEFCTEVfTUFDKDEwXzYpOwpAQCAtNDc2LDkgKzQ3OCw3IEBACiBAcHJvcGVydHkgKGNvcHkp
IE5TU3RyaW5nICppZE5hbWU7CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpsYW5nOwogQHBy
b3BlcnR5IChjb3B5KSBOU1N0cmluZyAqZGlyOwotQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAq
aW5uZXJIVE1MOwogQHByb3BlcnR5IChjb3B5KSBOU1N0cmluZyAqaW5uZXJUZXh0OwotQHByb3Bl
cnR5IChjb3B5KSBOU1N0cmluZyAqb3V0ZXJIVE1MOwogQHByb3BlcnR5IChjb3B5KSBOU1N0cmlu
ZyAqb3V0ZXJUZXh0OwogQHByb3BlcnR5IChyZWFkb25seSwgc3Ryb25nKSBET01IVE1MQ29sbGVj
dGlvbiAqY2hpbGRyZW47CiBAcHJvcGVydHkgKGNvcHkpIE5TU3RyaW5nICpjb250ZW50RWRpdGFi
bGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcg
QEAKICNpbmNsdWRlICJIVE1MUGFyc2VySWRpb21zLmgiCiAjaW5jbHVkZSAiSFRNTFNlbGVjdEVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGFibGVSb3dzQ29sbGVjdGlvbi5oIgorI2luY2x1ZGUg
IkhUTUxUZW1wbGF0ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNlcnRpb25Qb2ludC5oIgogI2lu
Y2x1ZGUgIktleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJNdXRhdGlvbk9ic2VydmVySW50ZXJl
c3RHcm91cC5oIgpAQCAtODEsNiArODIsNyBAQAogI2luY2x1ZGUgIlhNTE5TTmFtZXMuaCIKICNp
bmNsdWRlICJYTUxOYW1lcy5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiCisjaW5jbHVkZSAi
bWFya3VwLmgiCiAjaW5jbHVkZSA8d3RmL0JpdFZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTIwMjIsNyArMjAy
NCw2OCBAQAogICAgIEV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hFdmVudCh0aGlzLCBldmVudC5y
ZWxlYXNlKCkpOwogfQogCit2b2lkIEVsZW1lbnQ6Om1lcmdlV2l0aE5leHRUZXh0Tm9kZShUZXh0
JiBub2RlLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBOb2RlKiBuZXh0ID0gbm9kZS5uZXh0
U2libGluZygpOworICAgIGlmICghaXM8VGV4dD4obmV4dCkpCisgICAgICAgIHJldHVybjsKIAor
ICAgIFJlZjxUZXh0PiB0ZXh0Tm9kZShub2RlKTsKKyAgICBSZWY8VGV4dD4gdGV4dE5leHQoZG93
bmNhc3Q8VGV4dD4oKm5leHQpKTsKKyAgICB0ZXh0Tm9kZS0+YXBwZW5kRGF0YSh0ZXh0TmV4dC0+
ZGF0YSgpLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47CisgICAgdGV4dE5leHQt
PnJlbW92ZShlYyk7Cit9CisKK1N0cmluZyBFbGVtZW50Ojppbm5lckhUTUwoKSBjb25zdAorewor
ICAgIHJldHVybiBjcmVhdGVNYXJrdXAoKnRoaXMsIENoaWxkcmVuT25seSk7Cit9CisKK1N0cmlu
ZyBFbGVtZW50OjpvdXRlckhUTUwoKSBjb25zdAoreworICAgIHJldHVybiBjcmVhdGVNYXJrdXAo
KnRoaXMpOworfQorCit2b2lkIEVsZW1lbnQ6OnNldE91dGVySFRNTChjb25zdCBTdHJpbmcmIGh0
bWwsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIEVsZW1lbnQqIHAgPSBwYXJlbnRFbGVtZW50
KCk7CisgICAgaWYgKCFpczxIVE1MRWxlbWVudD4ocCkpIHsKKyAgICAgICAgZWMgPSBOT19NT0RJ
RklDQVRJT05fQUxMT1dFRF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgUmVmUHRy
PEhUTUxFbGVtZW50PiBwYXJlbnQgPSBkb3duY2FzdDxIVE1MRWxlbWVudD4ocCk7CisgICAgUmVm
UHRyPE5vZGU+IHByZXYgPSBwcmV2aW91c1NpYmxpbmcoKTsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4
dCA9IG5leHRTaWJsaW5nKCk7CisKKyAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21l
bnQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGh0bWwsIHBhcmVudC5nZXQoKSwg
QWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYyk7CisgICAgaWYgKGVjKQorICAgICAgICByZXR1cm47
CisgICAgCisgICAgcGFyZW50LT5yZXBsYWNlQ2hpbGQoZnJhZ21lbnQucmVsZWFzZSgpLCB0aGlz
LCBlYyk7CisgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBuZXh0ID8gbmV4dC0+cHJldmlvdXNTaWJs
aW5nKCkgOiBudWxscHRyOworICAgIGlmICghZWMgJiYgaXM8VGV4dD4obm9kZS5nZXQoKSkpCisg
ICAgICAgIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShkb3duY2FzdDxUZXh0Pigqbm9kZSksIGVjKTsK
KyAgICBpZiAoIWVjICYmIGlzPFRleHQ+KHByZXYuZ2V0KCkpKQorICAgICAgICBtZXJnZVdpdGhO
ZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKnByZXYpLCBlYyk7Cit9CisKKwordm9pZCBFbGVt
ZW50OjpzZXRJbm5lckhUTUwoY29uc3QgU3RyaW5nJiBodG1sLCBFeGNlcHRpb25Db2RlJiBlYykK
K3sKKyAgICBpZiAoUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gY3JlYXRlRnJh
Z21lbnRGb3JJbm5lck91dGVySFRNTChodG1sLCB0aGlzLCBBbGxvd1NjcmlwdGluZ0NvbnRlbnQs
IGVjKSkgeworICAgICAgICBDb250YWluZXJOb2RlKiBjb250YWluZXIgPSB0aGlzOworCisjaWYg
RU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCisgICAgICAgIGlmIChpczxIVE1MVGVtcGxhdGVFbGVt
ZW50PigqdGhpcykpCisgICAgICAgICAgICBjb250YWluZXIgPSBkb3duY2FzdDxIVE1MVGVtcGxh
dGVFbGVtZW50PigqdGhpcykuY29udGVudCgpOworI2VuZGlmCisKKyAgICAgICAgcmVwbGFjZUNo
aWxkcmVuV2l0aEZyYWdtZW50KCpjb250YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwor
ICAgIH0KK30KKwogU3RyaW5nIEVsZW1lbnQ6OmlubmVyVGV4dCgpCiB7CiAgICAgLy8gV2UgbmVl
ZCB0byB1cGRhdGUgbGF5b3V0LCBzaW5jZSBwbGFpblRleHQgdXNlcyBsaW5lIGJveGVzIGluIHRo
ZSByZW5kZXIgdHJlZS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMTc2NTkyKQor
KysgU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzk1LDYg
KzM5NSwxMCBAQAogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFuY2UoYm9vbCBy
ZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBibHVyKCk7CiAKKyAg
ICBTdHJpbmcgaW5uZXJIVE1MKCkgY29uc3Q7CisgICAgU3RyaW5nIG91dGVySFRNTCgpIGNvbnN0
OworICAgIHZvaWQgc2V0SW5uZXJIVE1MKGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsK
KyAgICB2b2lkIHNldE91dGVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgU3RyaW5nIGlubmVyVGV4dCgpOwogICAgIFN0cmluZyBvdXRlclRl
eHQoKTsKICAKQEAgLTU3Miw2ICs1NzYsOCBAQAogICAgIC8vIHBhcnNlQXR0cmlidXRlIChjYWxs
ZWQgdmlhIHNldEF0dHJpYnV0ZSgpKSBhbmQKICAgICAvLyBzdmdBdHRyaWJ1dGVDaGFuZ2VkIChj
YWxsZWQgd2hlbiBlbGVtZW50LmNsYXNzTmFtZS5iYXNlVmFsdWUgaXMgc2V0KQogICAgIHZvaWQg
Y2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0b21pY1N0cmluZyYgbmV3Q2xhc3NTdHJpbmcp
OworICAgIAorICAgIHN0YXRpYyB2b2lkIG1lcmdlV2l0aE5leHRUZXh0Tm9kZShUZXh0JiBub2Rl
LCBFeGNlcHRpb25Db2RlJiBlYyk7CiAKIHByaXZhdGU6CiAgICAgYm9vbCBpc1RleHROb2RlKCkg
Y29uc3Q7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAxNzY1OTIpCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwOCw2ICsx
MDgsOSBAQAogCiAgICAgLy8gSFRNTCA1CiAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZShbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyBuYW1lKTsKKyAgICBb
VHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlubmVySFRNTDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVy
UmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVySFRNTDsKKyAgICAgICAg
ICAgICAKIAogICAgIFtSZWZsZWN0PWNsYXNzXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGNsYXNzTmFt
ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NVG9rZW5MaXN0IGNsYXNzTGlzdDsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsNyAr
NDgsNiBAQAogI2luY2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1l
cy5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKLSNpbmNsdWRlICJIVE1MVGVtcGxh
dGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuaCIKICNp
bmNsdWRlICJOb2RlVHJhdmVyc2FsLmgiCiAjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgpAQCAt
NDE0LDY1ICs0MTMsNiBAQAogICAgIH0KIH0KIAotU3RyaW5nIEhUTUxFbGVtZW50Ojppbm5lckhU
TUwoKSBjb25zdAotewotICAgIHJldHVybiBjcmVhdGVNYXJrdXAoKnRoaXMsIENoaWxkcmVuT25s
eSk7Ci19Ci0KLVN0cmluZyBIVE1MRWxlbWVudDo6b3V0ZXJIVE1MKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gY3JlYXRlTWFya3VwKCp0aGlzKTsKLX0KLQotdm9pZCBIVE1MRWxlbWVudDo6c2V0SW5u
ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYg
KFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUwoaHRtbCwgdGhpcywgQWxsb3dTY3JpcHRpbmdDb250ZW50LCBlYykpIHsKLSAg
ICAgICAgQ29udGFpbmVyTm9kZSogY29udGFpbmVyID0gdGhpczsKLSNpZiBFTkFCTEUoVEVNUExB
VEVfRUxFTUVOVCkKLSAgICAgICAgaWYgKGlzPEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0aGlzKSkK
LSAgICAgICAgICAgIGNvbnRhaW5lciA9IGRvd25jYXN0PEhUTUxUZW1wbGF0ZUVsZW1lbnQ+KCp0
aGlzKS5jb250ZW50KCk7Ci0jZW5kaWYKLSAgICAgICAgcmVwbGFjZUNoaWxkcmVuV2l0aEZyYWdt
ZW50KCpjb250YWluZXIsIGZyYWdtZW50LnJlbGVhc2UoKSwgZWMpOwotICAgIH0KLX0KLQotc3Rh
dGljIHZvaWQgbWVyZ2VXaXRoTmV4dFRleHROb2RlKFRleHQmIG5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQotewotICAgIE5vZGUqIG5leHQgPSBub2RlLm5leHRTaWJsaW5nKCk7Ci0gICAgaWYgKCFp
czxUZXh0PihuZXh0KSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmPFRleHQ+IHRleHROb2Rl
KG5vZGUpOwotICAgIFJlZjxUZXh0PiB0ZXh0TmV4dChkb3duY2FzdDxUZXh0PigqbmV4dCkpOwot
ICAgIHRleHROb2RlLT5hcHBlbmREYXRhKHRleHROZXh0LT5kYXRhKCksIGVjKTsKLSAgICBpZiAo
ZWMpCi0gICAgICAgIHJldHVybjsKLSAgICB0ZXh0TmV4dC0+cmVtb3ZlKGVjKTsKLX0KLQotdm9p
ZCBIVE1MRWxlbWVudDo6c2V0T3V0ZXJIVE1MKGNvbnN0IFN0cmluZyYgaHRtbCwgRXhjZXB0aW9u
Q29kZSYgZWMpCi17Ci0gICAgRWxlbWVudCogcCA9IHBhcmVudEVsZW1lbnQoKTsKLSAgICBpZiAo
IWlzPEhUTUxFbGVtZW50PihwKSkgewotICAgICAgICBlYyA9IE5PX01PRElGSUNBVElPTl9BTExP
V0VEX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBSZWZQdHI8SFRNTEVsZW1lbnQ+
IHBhcmVudCA9IGRvd25jYXN0PEhUTUxFbGVtZW50PihwKTsKLSAgICBSZWZQdHI8Tm9kZT4gcHJl
diA9IHByZXZpb3VzU2libGluZygpOwotICAgIFJlZlB0cjxOb2RlPiBuZXh0ID0gbmV4dFNpYmxp
bmcoKTsKLQotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IGNyZWF0ZUZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoaHRtbCwgcGFyZW50LmdldCgpLCBBbGxvd1NjcmlwdGlu
Z0NvbnRlbnQsIGVjKTsKLSAgICBpZiAoZWMpCi0gICAgICAgIHJldHVybjsKLSAgICAgIAotICAg
IHBhcmVudC0+cmVwbGFjZUNoaWxkKGZyYWdtZW50LnJlbGVhc2UoKSwgdGhpcywgZWMpOwotICAg
IFJlZlB0cjxOb2RlPiBub2RlID0gbmV4dCA/IG5leHQtPnByZXZpb3VzU2libGluZygpIDogbnVs
bHB0cjsKLSAgICBpZiAoIWVjICYmIGlzPFRleHQ+KG5vZGUuZ2V0KCkpKQotICAgICAgICBtZXJn
ZVdpdGhOZXh0VGV4dE5vZGUoZG93bmNhc3Q8VGV4dD4oKm5vZGUpLCBlYyk7Ci0gICAgaWYgKCFl
YyAmJiBpczxUZXh0PihwcmV2LmdldCgpKSkKLSAgICAgICAgbWVyZ2VXaXRoTmV4dFRleHROb2Rl
KGRvd25jYXN0PFRleHQ+KCpwcmV2KSwgZWMpOwotfQotCiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVu
dD4gSFRNTEVsZW1lbnQ6OnRleHRUb0ZyYWdtZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0g
RG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKGRvY3VtZW50KCkpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEVsZW1lbnQuaAkocmV2aXNpb24gMTc2NTkyKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00OCwxMCArNDgsNiBAQAogCiAgICAgdmly
dHVhbCBzaG9ydCB0YWJJbmRleCgpIGNvbnN0IG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIGlubmVy
SFRNTCgpIGNvbnN0OwotICAgIFN0cmluZyBvdXRlckhUTUwoKSBjb25zdDsKLSAgICB2b2lkIHNl
dElubmVySFRNTChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCBzZXRP
dXRlckhUTUwoY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgc2V0SW5u
ZXJUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIHNldE91dGVy
VGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEVsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTEVsZW1lbnQuaWRsCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxFbGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsMTEgKzM4LDkgQEAKICAg
ICAgICAgICAgICBbUmVmbGVjdF0gYXR0cmlidXRlIERPTVN0cmluZyBhY2Nlc3NLZXk7CiAKICAg
ICAvLyBFeHRlbnNpb25zCi0gICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNl
dHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBpbm5lckhUTUw7Ci0gICAg
ICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0g
YXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7Ci0gICAgICAgICAgICAgW1RyZWF0TnVsbEFz
PU51bGxTdHJpbmcsIFNldHRlclJhaXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBv
dXRlckhUTUw7Ci0gICAgICAgICAgICAgW1RyZWF0TnVsbEFzPU51bGxTdHJpbmcsIFNldHRlclJh
aXNlc0V4Y2VwdGlvbl0gYXR0cmlidXRlIERPTVN0cmluZyBvdXRlclRleHQ7Ci0KKyAgICBbVHJl
YXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFpc2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGlubmVyVGV4dDsKKyAgICBbVHJlYXROdWxsQXM9TnVsbFN0cmluZywgU2V0dGVyUmFp
c2VzRXhjZXB0aW9uXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG91dGVyVGV4dDsKKyAgICAgICAgICAg
ICAKICAgICBbUmFpc2VzRXhjZXB0aW9uXSBFbGVtZW50IGluc2VydEFkamFjZW50RWxlbWVudChb
RGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIERPTVN0cmluZyB3aGVyZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBbRGVmYXVsdD1VbmRlZmluZWRdIG9wdGlvbmFsIEVsZW1l
bnQgZWxlbWVudCk7CiAgICAgW1JhaXNlc0V4Y2VwdGlvbl0gdm9pZCBpbnNlcnRBZGphY2VudEhU
TUwoW0RlZmF1bHQ9VW5kZWZpbmVkXSBvcHRpb25hbCBET01TdHJpbmcgd2hlcmUsCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAJKHJldmlz
aW9uIDE3NjU5MikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyMCwxNSArMzIwLDE0IEBACiAKIEhUTUxUcmVlQnVp
bGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dCgpCiAg
ICAgOiBtX2ZyYWdtZW50KDApCi0gICAgLCBtX2NvbnRleHRFbGVtZW50KDApCiB7CiB9CiAKIEhU
TUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6RnJhZ21lbnRQYXJzaW5nQ29u
dGV4dChEb2N1bWVudEZyYWdtZW50JiBmcmFnbWVudCwgRWxlbWVudCogY29udGV4dEVsZW1lbnQp
CiAgICAgOiBtX2ZyYWdtZW50KCZmcmFnbWVudCkKLSAgICAsIG1fY29udGV4dEVsZW1lbnQoY29u
dGV4dEVsZW1lbnQpCiB7CiAgICAgQVNTRVJUKCFmcmFnbWVudC5oYXNDaGlsZE5vZGVzKCkpOwor
ICAgIG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW0gPSBIVE1MU3RhY2tJdGVtOjpjcmVhdGUoY29u
dGV4dEVsZW1lbnQsIEhUTUxTdGFja0l0ZW06Okl0ZW1Gb3JDb250ZXh0RWxlbWVudCk7CiB9CiAK
IEhUTUxUcmVlQnVpbGRlcjo6RnJhZ21lbnRQYXJzaW5nQ29udGV4dDo6fkZyYWdtZW50UGFyc2lu
Z0NvbnRleHQoKQpAQCAtMzU2LDcgKzM1NSw3IEBACiAKICAgICBpZiAobV9wYXJzZXIudG9rZW5p
emVyKCkpIHsKICAgICAgICAgYm9vbCBpbkZvcmVpZ25Db250ZW50ID0gIW1fdHJlZS5pc0VtcHR5
KCkKLSAgICAgICAgICAgICYmICFtX3RyZWUuY3VycmVudFN0YWNrSXRlbSgpLT5pc0luSFRNTE5h
bWVzcGFjZSgpCisgICAgICAgICAgICAmJiAhYWRqdXN0ZWRDdXJyZW50U3RhY2tJdGVtKCktPmlz
SW5IVE1MTmFtZXNwYWNlKCkKICAgICAgICAgICAgICYmICFIVE1MRWxlbWVudFN0YWNrOjppc0hU
TUxJbnRlZ3JhdGlvblBvaW50KG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCkpCiAgICAgICAgICAg
ICAmJiAhSFRNTEVsZW1lbnRTdGFjazo6aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludChtX3Ry
ZWUuY3VycmVudFN0YWNrSXRlbSgpKTsKIApAQCAtMTYxNyw3ICsxNjE2LDcgQEAKICAgICAgICAg
ICAgIGJvb2wgc2hvdWxkQ3JlYXRlSXRlbSA9IHRydWU7CiAjZW5kaWYKICAgICAgICAgICAgIGlm
IChzaG91bGRDcmVhdGVJdGVtKQotICAgICAgICAgICAgICAgIGl0ZW0gPSBIVE1MU3RhY2tJdGVt
OjpjcmVhdGUobV9mcmFnbWVudENvbnRleHQuY29udGV4dEVsZW1lbnQoKSwgSFRNTFN0YWNrSXRl
bTo6SXRlbUZvckNvbnRleHRFbGVtZW50KTsKKyAgICAgICAgICAgICAgICBpdGVtID0gbV9mcmFn
bWVudENvbnRleHQuY29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKTsKICAgICAgICAgfQogI2lmIEVO
QUJMRShURU1QTEFURV9FTEVNRU5UKQogICAgICAgICBpZiAoaXRlbS0+aGFzVGFnTmFtZSh0ZW1w
bGF0ZVRhZykpCkBAIC0yODQwLDE2ICsyODM5LDI3IEBACiAKICAgICBzZXRJbnNlcnRpb25Nb2Rl
KEluc2VydGlvbk1vZGU6OlRleHQpOwogfQorICAgIAorLy8gaHR0cDovL3d3dy53aGF0d2cub3Jn
L3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay8jYWRqdXN0ZWQtY3VycmVudC1ub2RlCitIVE1M
U3RhY2tJdGVtKiBIVE1MVHJlZUJ1aWxkZXI6OmFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKCFtX3RyZWUuaXNFbXB0eSgpKTsKKyAgICBpZiAoaXNQYXJzaW5n
RnJhZ21lbnQoKSAmJiBtX3RyZWUub3BlbkVsZW1lbnRzKCktPmhhc09ubHlPbmVFbGVtZW50KCkp
CisgICAgICAgIHJldHVybiBtX2ZyYWdtZW50Q29udGV4dC5jb250ZXh0RWxlbWVudFN0YWNrSXRl
bSgpOworICAgICAgICAKKyAgICByZXR1cm4gbV90cmVlLmN1cnJlbnRTdGFja0l0ZW0oKTsKK30K
IAorCiAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3Jr
L211bHRpcGFnZS90cmVlLWNvbnN0cnVjdGlvbi5odG1sI3RyZWUtY29uc3RydWN0aW9uCiBib29s
IEhUTUxUcmVlQnVpbGRlcjo6c2hvdWxkUHJvY2Vzc1Rva2VuSW5Gb3JlaWduQ29udGVudChBdG9t
aWNIVE1MVG9rZW4qIHRva2VuKQogewogICAgIGlmIChtX3RyZWUuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSFRNTFN0YWNrSXRlbSogaXRlbSA9IG1fdHJlZS5jdXJyZW50
U3RhY2tJdGVtKCk7Ci0gICAgaWYgKGl0ZW0tPmlzSW5IVE1MTmFtZXNwYWNlKCkpCisgICAgSFRN
TFN0YWNrSXRlbSogYWRqdXN0ZWRDdXJyZW50Tm9kZSA9IGFkanVzdGVkQ3VycmVudFN0YWNrSXRl
bSgpOworICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5pc0luSFRNTE5hbWVzcGFjZSgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzTWF0aE1M
VGV4dEludGVncmF0aW9uUG9pbnQoaXRlbSkpIHsKKyAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6
aXNNYXRoTUxUZXh0SW50ZWdyYXRpb25Qb2ludChhZGp1c3RlZEN1cnJlbnROb2RlKSkgewogICAg
ICAgICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OlN0YXJ0VGFnCiAgICAgICAgICAg
ICAmJiB0b2tlbi0+bmFtZSgpICE9IE1hdGhNTE5hbWVzOjptZ2x5cGhUYWcKICAgICAgICAgICAg
ICYmIHRva2VuLT5uYW1lKCkgIT0gTWF0aE1MTmFtZXM6Om1hbGlnbm1hcmtUYWcpCkBAIC0yODU3
LDExICsyODY3LDExIEBACiAgICAgICAgIGlmICh0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6
Q2hhcmFjdGVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KLSAgICBpZiAoaXRl
bS0+aGFzVGFnTmFtZShNYXRoTUxOYW1lczo6YW5ub3RhdGlvbl94bWxUYWcpCisgICAgaWYgKGFk
anVzdGVkQ3VycmVudE5vZGUtPmhhc1RhZ05hbWUoTWF0aE1MTmFtZXM6OmFubm90YXRpb25feG1s
VGFnKQogICAgICAgICAmJiB0b2tlbi0+dHlwZSgpID09IEhUTUxUb2tlbjo6U3RhcnRUYWcKICAg
ICAgICAgJiYgdG9rZW4tPm5hbWUoKSA9PSBTVkdOYW1lczo6c3ZnVGFnKQogICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgaWYgKEhUTUxFbGVtZW50U3RhY2s6OmlzSFRNTEludGVncmF0aW9uUG9p
bnQoaXRlbSkpIHsKKyAgICBpZiAoSFRNTEVsZW1lbnRTdGFjazo6aXNIVE1MSW50ZWdyYXRpb25Q
b2ludChhZGp1c3RlZEN1cnJlbnROb2RlKSkgewogICAgICAgICBpZiAodG9rZW4tPnR5cGUoKSA9
PSBIVE1MVG9rZW46OlN0YXJ0VGFnKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICBpZiAodG9rZW4tPnR5cGUoKSA9PSBIVE1MVG9rZW46OkNoYXJhY3RlcikKQEAgLTI4NzQsNiAr
Mjg4NCw4IEBACiAKIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNzVG9rZW5JbkZvcmVpZ25D
b250ZW50KEF0b21pY0hUTUxUb2tlbiogdG9rZW4pCiB7CisgICAgSFRNTFN0YWNrSXRlbSogYWRq
dXN0ZWRDdXJyZW50Tm9kZSA9IGFkanVzdGVkQ3VycmVudFN0YWNrSXRlbSgpOworICAgIAogICAg
IHN3aXRjaCAodG9rZW4tPnR5cGUoKSkgewogICAgIGNhc2UgSFRNTFRva2VuOjpVbmluaXRpYWxp
emVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI5MjcsNyArMjkzOSw3IEBA
CiAgICAgICAgICAgICBwcm9jZXNzU3RhcnRUYWcodG9rZW4pOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY3VycmVudE5hbWVzcGFj
ZSA9IG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVSSSgpOworICAgICAgICBj
b25zdCBBdG9taWNTdHJpbmcmIGN1cnJlbnROYW1lc3BhY2UgPSBhZGp1c3RlZEN1cnJlbnROb2Rl
LT5uYW1lc3BhY2VVUkkoKTsKICAgICAgICAgaWYgKGN1cnJlbnROYW1lc3BhY2UgPT0gTWF0aE1M
TmFtZXM6Om1hdGhtbE5hbWVzcGFjZVVSSSkKICAgICAgICAgICAgIGFkanVzdE1hdGhNTEF0dHJp
YnV0ZXMoKnRva2VuKTsKICAgICAgICAgaWYgKGN1cnJlbnROYW1lc3BhY2UgPT0gU1ZHTmFtZXM6
OnN2Z05hbWVzcGFjZVVSSSkgewpAQCAtMjkzOSw3ICsyOTUxLDcgQEAKICAgICAgICAgYnJlYWs7
CiAgICAgfQogICAgIGNhc2UgSFRNTFRva2VuOjpFbmRUYWc6IHsKLSAgICAgICAgaWYgKG1fdHJl
ZS5jdXJyZW50U3RhY2tJdGVtKCktPm5hbWVzcGFjZVVSSSgpID09IFNWR05hbWVzOjpzdmdOYW1l
c3BhY2VVUkkpCisgICAgICAgIGlmIChhZGp1c3RlZEN1cnJlbnROb2RlLT5uYW1lc3BhY2VVUkko
KSA9PSBTVkdOYW1lczo6c3ZnTmFtZXNwYWNlVVJJKQogICAgICAgICAgICAgYWRqdXN0U1ZHVGFn
TmFtZUNhc2UoKnRva2VuKTsKIAogICAgICAgICBpZiAodG9rZW4tPm5hbWUoKSA9PSBTVkdOYW1l
czo6c2NyaXB0VGFnICYmIG1fdHJlZS5jdXJyZW50U3RhY2tJdGVtKCktPmhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnNjcmlwdFRhZykpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxUcmVlQnVpbGRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxUcmVlQnVpbGRlci5oCShyZXZpc2lvbiAxNzY1OTIpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIs
NyBAQAogI2luY2x1ZGUgIkhUTUxFbGVtZW50U3RhY2suaCIKICNpbmNsdWRlICJIVE1MRm9ybWF0
dGluZ0VsZW1lbnRMaXN0LmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlck9wdGlvbnMuaCIKKyNpbmNs
dWRlICJIVE1MU3RhY2tJdGVtLmgiCiAjaW5jbHVkZSAiSFRNTFRva2VuaXplci5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CkBAIC0x
NzAsNiArMTcxLDggQEAKIAogICAgIGlubGluZSBib29sIHNob3VsZFByb2Nlc3NUb2tlbkluRm9y
ZWlnbkNvbnRlbnQoQXRvbWljSFRNTFRva2VuKik7CiAgICAgdm9pZCBwcm9jZXNzVG9rZW5JbkZv
cmVpZ25Db250ZW50KEF0b21pY0hUTUxUb2tlbiopOworICAgIAorICAgIGlubGluZSBIVE1MU3Rh
Y2tJdGVtKiBhZGp1c3RlZEN1cnJlbnRTdGFja0l0ZW0oKSBjb25zdDsKIAogICAgIFZlY3RvcjxB
dHRyaWJ1dGU+IGF0dHJpYnV0ZXNGb3JJc2luZGV4SW5wdXQoQXRvbWljSFRNTFRva2VuKik7CiAK
QEAgLTIwMSwxMSArMjA0LDEyIEBACiAgICAgICAgIH5GcmFnbWVudFBhcnNpbmdDb250ZXh0KCk7
CiAKICAgICAgICAgRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQoKSBjb25zdCB7IHJldHVybiBt
X2ZyYWdtZW50OyB9Ci0gICAgICAgIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBB
U1NFUlQobV9mcmFnbWVudCk7IHJldHVybiBtX2NvbnRleHRFbGVtZW50OyB9CisgICAgICAgIEVs
ZW1lbnQqIGNvbnRleHRFbGVtZW50KCkgY29uc3QgeyBBU1NFUlQobV9mcmFnbWVudCk7IHJldHVy
biBtX2NvbnRleHRFbGVtZW50U3RhY2tJdGVtLT5lbGVtZW50KCk7IH0KKyAgICAgICAgSFRNTFN0
YWNrSXRlbSogY29udGV4dEVsZW1lbnRTdGFja0l0ZW0oKSBjb25zdCB7IEFTU0VSVChtX2ZyYWdt
ZW50KTsgcmV0dXJuIG1fY29udGV4dEVsZW1lbnRTdGFja0l0ZW0uZ2V0KCk7IH0KIAogICAgIHBy
aXZhdGU6CiAgICAgICAgIERvY3VtZW50RnJhZ21lbnQqIG1fZnJhZ21lbnQ7Ci0gICAgICAgIEVs
ZW1lbnQqIG1fY29udGV4dEVsZW1lbnQ7CisgICAgICAgIFJlZlB0cjxIVE1MU3RhY2tJdGVtPiBt
X2NvbnRleHRFbGVtZW50U3RhY2tJdGVtOwogICAgIH07CiAKICAgICBib29sIG1fZnJhbWVzZXRP
azsK
</data>

          </attachment>
      

    </bug>

</bugzilla>