<?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>97201</bug_id>
          
          <creation_ts>2012-09-20 05:17:08 -0700</creation_ts>
          <short_desc>Add suggestionPicker to CalendarPicker</short_desc>
          <delta_ts>2012-09-23 21:38:53 -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>Forms</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>96085</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keishi Hattori">keishi</reporter>
          <assigned_to name="Keishi Hattori">keishi</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>724443</commentid>
    <comment_count>0</comment_count>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-20 05:17:08 -0700</bug_when>
    <thetext>Add suggestionPicker to CalendarPicker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725229</commentid>
    <comment_count>1</comment_count>
      <attachid>165069</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-21 00:34:00 -0700</bug_when>
    <thetext>Created attachment 165069
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725238</commentid>
    <comment_count>2</comment_count>
      <attachid>165071</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-21 00:48:52 -0700</bug_when>
    <thetext>Created attachment 165071
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725262</commentid>
    <comment_count>3</comment_count>
      <attachid>165071</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-21 01:27:37 -0700</bug_when>
    <thetext>Comment on attachment 165071
Patch

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

&gt; Source/WebCore/Resources/pagepopups/pickerCommon.js:80
&gt; + * @return {!Element}

This is nullable.

&gt; Source/WebCore/Resources/pagepopups/pickerCommon.js:82
&gt; +Node.prototype.enclosingNodeOrSelfWithClass = function(className)

Polluting the Node prototype is not good in general.
Adding this function to the Node prototype looks no benefit.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.css:20
&gt; +    background-color: #3875d7;

How did you decide this color?

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:63
&gt; + * @param {!String} title

The typename should be &quot;string&quot;, not &quot;String&quot;

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:90
&gt; +    var entryElement = createElement(&quot;div&quot;, &quot;suggestion-entry&quot;);

The class name should be &quot;suggestion-entry-or-action&quot; or something.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:102
&gt; +    this._containerElement = createElement(&quot;div&quot;, &quot;suggestion-list&quot;);

nit: because it&apos;s a list, how about using &lt;ul&gt; and &lt;li&gt;?

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:104
&gt; +    for (var i = 0; i &lt; this._config.suggestionValues.length; i++) {

We prefer ++i

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:113
&gt; +        var otherEntry = this._createActionEntryElement(this._config.otherDateLabel, &quot;openCalendarPicker&quot;);

We had better introduce a const variable for the action name.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:118
&gt; +    // To measure the required width, we first set the class to &quot;measuring-width&quot; which

We had better move the code below to its own function(s).

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:133
&gt; +    for (var i = 0; i &lt; this._containerElement.childNodes.length; i++) {

We prefer ++i.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:180
&gt; +    for (var i = 0; i &lt; childNodes.length; i++) {

We prefer ++i.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:196
&gt; +    for (var i = childNodes.length - 1; i &gt;= 0; i--){

We prefer --i.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:217
&gt; +            for (var node = document.activeElement.previousElementSibling; node &amp;&amp; node; node = node.previousElementSibling) {

&apos;node &amp;&amp; node&apos; is redundant.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:230
&gt; +            for (var node = document.activeElement.nextElementSibling; node &amp;&amp; node; node = node.nextElementSibling) {

ditto.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:277
&gt; +    if (!document.activeElement.classList.contains(&quot;suggestion-entry&quot;))

This class name appears multiple times.  Please consider introducing const variable for it like calendarPicker.js does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725344</commentid>
    <comment_count>4</comment_count>
      <attachid>165102</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-21 03:03:11 -0700</bug_when>
    <thetext>Created attachment 165102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725345</commentid>
    <comment_count>5</comment_count>
      <attachid>165071</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-21 03:03:54 -0700</bug_when>
    <thetext>Comment on attachment 165071
Patch

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

&gt;&gt; Source/WebCore/Resources/pagepopups/pickerCommon.js:80
&gt;&gt; + * @return {!Element}
&gt; 
&gt; This is nullable.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/pickerCommon.js:82
&gt;&gt; +Node.prototype.enclosingNodeOrSelfWithClass = function(className)
&gt; 
&gt; Polluting the Node prototype is not good in general.
&gt; Adding this function to the Node prototype looks no benefit.

I brought it from the web inspector utilities but I agree that its not good even inside a page popup. Changed to function.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.css:20
&gt;&gt; +    background-color: #3875d7;
&gt; 
&gt; How did you decide this color?

Yes this color is not right. We need to expose activeListBoxSelectionBackground/Foreground as CSS colors. I have to fix that.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:63
&gt;&gt; + * @param {!String} title
&gt; 
&gt; The typename should be &quot;string&quot;, not &quot;String&quot;

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:90
&gt;&gt; +    var entryElement = createElement(&quot;div&quot;, &quot;suggestion-entry&quot;);
&gt; 
&gt; The class name should be &quot;suggestion-entry-or-action&quot; or something.

Changed to suggestion-list-entry

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:102
&gt;&gt; +    this._containerElement = createElement(&quot;div&quot;, &quot;suggestion-list&quot;);
&gt; 
&gt; nit: because it&apos;s a list, how about using &lt;ul&gt; and &lt;li&gt;?

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:104
&gt;&gt; +    for (var i = 0; i &lt; this._config.suggestionValues.length; i++) {
&gt; 
&gt; We prefer ++i

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:113
&gt;&gt; +        var otherEntry = this._createActionEntryElement(this._config.otherDateLabel, &quot;openCalendarPicker&quot;);
&gt; 
&gt; We had better introduce a const variable for the action name.

Introduced SuggestionPicker.ActionNames.OpenCalendarPicker

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:118
&gt;&gt; +    // To measure the required width, we first set the class to &quot;measuring-width&quot; which
&gt; 
&gt; We had better move the code below to its own function(s).

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:133
&gt;&gt; +    for (var i = 0; i &lt; this._containerElement.childNodes.length; i++) {
&gt; 
&gt; We prefer ++i.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:180
&gt;&gt; +    for (var i = 0; i &lt; childNodes.length; i++) {
&gt; 
&gt; We prefer ++i.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:196
&gt;&gt; +    for (var i = childNodes.length - 1; i &gt;= 0; i--){
&gt; 
&gt; We prefer --i.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:217
&gt;&gt; +            for (var node = document.activeElement.previousElementSibling; node &amp;&amp; node; node = node.previousElementSibling) {
&gt; 
&gt; &apos;node &amp;&amp; node&apos; is redundant.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:230
&gt;&gt; +            for (var node = document.activeElement.nextElementSibling; node &amp;&amp; node; node = node.nextElementSibling) {
&gt; 
&gt; ditto.

Done.

&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:277
&gt;&gt; +    if (!document.activeElement.classList.contains(&quot;suggestion-entry&quot;))
&gt; 
&gt; This class name appears multiple times.  Please consider introducing const variable for it like calendarPicker.js does.

I use this class inside querySelector so I worry it might get confusing.
this._element.querySelector(&quot;.suggestion-list-entry:first-child&quot;).focus();</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725374</commentid>
    <comment_count>6</comment_count>
      <attachid>165071</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-21 03:25:56 -0700</bug_when>
    <thetext>Comment on attachment 165071
Patch

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

&gt;&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:277
&gt;&gt;&gt; +    if (!document.activeElement.classList.contains(&quot;suggestion-entry&quot;))
&gt;&gt; 
&gt;&gt; This class name appears multiple times.  Please consider introducing const variable for it like calendarPicker.js does.
&gt; 
&gt; I use this class inside querySelector so I worry it might get confusing.
&gt; this._element.querySelector(&quot;.suggestion-list-entry:first-child&quot;).focus();

You can concatenate strings like
    &quot;.&quot; + ClassEntry + &quot;:first-child&quot;

We easily make a typo in a string literal, and it&apos;s hard to find such bugs. We had better use constant variables for literals as possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725383</commentid>
    <comment_count>7</comment_count>
      <attachid>165071</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-21 03:34:44 -0700</bug_when>
    <thetext>Comment on attachment 165071
Patch

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

&gt;&gt;&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.css:20
&gt;&gt;&gt; +    background-color: #3875d7;
&gt;&gt; 
&gt;&gt; How did you decide this color?
&gt; 
&gt; Yes this color is not right. We need to expose activeListBoxSelectionBackground/Foreground as CSS colors. I have to fix that.

I don&apos;t think adding activeListBoxSelection* as CSS system colors is reasonable.
 - We should not add an extension to general CSS processing just for the suggestion picker.
 - CSS system color itself is deprecated in CSS3.

You can pass the color value via the config object from C++ to JavaScript.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725422</commentid>
    <comment_count>8</comment_count>
      <attachid>165118</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-21 04:43:29 -0700</bug_when>
    <thetext>Created attachment 165118
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725431</commentid>
    <comment_count>9</comment_count>
      <attachid>165118</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-09-21 05:11:16 -0700</bug_when>
    <thetext>Comment on attachment 165118
Patch

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

&gt; Source/WebCore/Resources/pagepopups/pickerCommon.js:86
&gt; +    for (var node = selfNode; node &amp;&amp; node !== selfNode.ownerDocument; node = node.parentNode)
&gt; +        if (node.nodeType === Node.ELEMENT_NODE &amp;&amp; node.classList.contains(className))
&gt; +            return node;

should wrap with { } because the content of &apos;for&apos; has two lines.

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:71
&gt; +    var text = &quot;.suggestion-list-entry:focus {\

should use ListEntryClass

&gt; Source/WebCore/Resources/pagepopups/suggestionPicker.js:74
&gt; +    text += &quot;.suggestion-list-entry:focus .label { color: &quot; + this._config.suggestionHighlightTextColor + &quot;; }&quot;;

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726362</commentid>
    <comment_count>10</comment_count>
      <attachid>165306</attachid>
    <who name="Keishi Hattori">keishi</who>
    <bug_when>2012-09-23 20:47:32 -0700</bug_when>
    <thetext>Created attachment 165306
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726377</commentid>
    <comment_count>11</comment_count>
      <attachid>165306</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-23 21:38:50 -0700</bug_when>
    <thetext>Comment on attachment 165306
Patch

Clearing flags on attachment: 165306

Committed r129326: &lt;http://trac.webkit.org/changeset/129326&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>726378</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-23 21:38:53 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165069</attachid>
            <date>2012-09-21 00:34:00 -0700</date>
            <delta_ts>2012-09-21 00:41:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97201-20120921163324.patch</filename>
            <type>text/plain</type>
            <size>27978</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhiYjNjOGVkMzIyYTg1
MjQwZTJkMWUzYjY2NTkwYzM4N2YzMTM0Mi4uN2Y3N2VhNzQyYTcwNjgzYWYxYWJkMGZiOWI3YzA5
ZGY3Zjk0MmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA5LTIyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9u
UGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRh
clBpY2tlci4gSXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYXMgYSBkYXRhbGlzdCBVSSBidXQgaXQg
Y2FuIGJlIHVzZWQgaW5zaWRlIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1s
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU3VnZ2VzdGlvbiBQaWNrZXIgY2FuIGJlIHRlc3Rl
ZCBpbiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbC4KKworICAgICAgICAq
IFJlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAgICAoaW5pdGlh
bGl6ZSk6CisgICAgICAgIChvcGVuU3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyk6CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvc3VnZ2VzdGlvblBpY2tlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnN1Z2dlc3Rpb24t
bGlzdCk6CisgICAgICAgICguc3VnZ2VzdGlvbi1lbnRyeSk6CisgICAgICAgICguc3VnZ2VzdGlv
bi1lbnRyeTpmb2N1cyk6CisgICAgICAgICguc3VnZ2VzdGlvbi1lbnRyeTpmb2N1cyAubGFiZWwp
OgorICAgICAgICAoLnN1Z2dlc3Rpb24tZW50cnkgLmNvbnRlbnQpOgorICAgICAgICAoLnN1Z2dl
c3Rpb24tZW50cnkgLnRpdGxlKToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCk6
CisgICAgICAgICgubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCk6Cisg
ICAgICAgICguc3VnZ2VzdGlvbi1saXN0IC5zZXBhcmF0b3IpOgorICAgICAgICAqIFJlc291cmNl
cy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanM6IEFkZGVkLgorICAgICAgICAoU3VnZ2Vz
dGlvblBpY2tlcik6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnZhbGlkYXRlQ29uZmlnKToK
KyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLmNsZWFudXApOgorICAgICAgICAo
U3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0ZVN1Z2dlc3Rpb25FbnRyeUVsZW1lbnQp
OiBDcmVhdGVzIGFuIGVudHJ5IHRoYXQgd2hlbiBzZWxlY3RlZCBzdWJtaXRzIHRoZSB2YWx1ZS4K
KyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9jcmVhdGVBY3Rpb25FbnRyeUVs
ZW1lbnQpOiBDcmVhdGVzIGFuIGVudHJ5IHRoYXQgY2F1c2VzIGFuIGFjdGlvbi4gKGUueC4gIk90
aGVyLi4uIikKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9sYXlvdXQpOiBB
bGlnbiBldmVyeXRoaW5nIGxlZnQsIG1lYXN1cmUgdGhlIHdpZHRoIGFuZCB0aGVuIHJpZ2h0IGFs
aWduIHRoZSBsYWJlbHMuCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5zZWxl
Y3RFbnRyeSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5faGFuZGxlRW50
cnlDbGljayk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZmluZEZpcnN0
VmlzaWJsZUVudHJ5KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5k
TGFzdFZpc2libGVFbnRyeSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5f
aGFuZGxlQm9keUtleURvd24pOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
X2hhbmRsZUVudHJ5TW91c2VPdmVyKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90
eXBlLl9oYW5kbGVNb3VzZU91dCk6CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6
CisKIDIwMTItMDktMjEgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUHJlcGFyZSBDYWxlbmRhclBpY2tlciBzbyB3ZSBjYW4gYWRkIGFub3RoZXIgcGlja2Vy
LCBTdWdnZXRpb25QaWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzY0NmVjNDE0
NjJiNDFiNzNjZDY0YjIwZGNkNTdmZDVjZTkwMWMyNC4uOGRhYWYwZTBmYmZhNjdmMGVmMmM1ZTFh
M2Q4M2I3OTBiMTA4MjE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wOS0yMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRhclBpY2tlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyMDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9EYXRlVGltZUNob29z
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVE
b2N1bWVudCk6IEFkZCBqcy9jc3MgZm9yIFN1Z2dlc3Rpb25QaWNrZXIgdG8gcGFnZSBwaWNrZXIu
CisKIDIwMTItMDktMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgYnVpbGQgZml4LiB3ZWJraXRfdW5pdF90ZXN0cyBoYXZl
IGdsb2JhbCBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCmluZGV4IDIwYTg1ZmQ0YThhNWE1ZDU4NDdm
YTg5YWM0OTJmNGQ1NGEyYzhhMTguLmRiOTg0YTUzOGFjOTkxZmNkYmY5Yzg5N2I1OWI0NDcwZjQ0
YzcwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2Nh
bGVuZGFyUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBz
L2NhbGVuZGFyUGlja2VyLmpzCkBAIC0yNjgsMTMgKzI2OCwxOCBAQCBDYWxlbmRhclBpY2tlci52
YWxpZGF0ZUNvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykgewogICovCiBmdW5jdGlvbiBpbml0aWFs
aXplKGFyZ3MpIHsKICAgICB2YXIgZXJyb3JTdHJpbmcgPSBDYWxlbmRhclBpY2tlci52YWxpZGF0
ZUNvbmZpZyhhcmdzKTsKKyAgICBpZiAoYXJncy5zdWdnZXN0aW9uVmFsdWVzKQorICAgICAgICBl
cnJvclN0cmluZyA9IGVycm9yU3RyaW5nIHx8IFN1Z2dlc3Rpb25QaWNrZXIudmFsaWRhdGVDb25m
aWcoYXJncykKICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAgICAgICAgdmFyIG1haW4gPSAkKCJt
YWluIik7CiAgICAgICAgIG1haW4udGV4dENvbnRlbnQgPSAiSW50ZXJuYWwgZXJyb3I6ICIgKyBl
cnJvclN0cmluZzsKICAgICAgICAgcmVzaXplV2luZG93KG1haW4ub2Zmc2V0V2lkdGgsIG1haW4u
b2Zmc2V0SGVpZ2h0KTsKICAgICB9IGVsc2UgewogICAgICAgICBnbG9iYWwucGFyYW1zID0gYXJn
czsKLSAgICAgICAgb3BlbkNhbGVuZGFyUGlja2VyKCk7CisgICAgICAgIGlmIChnbG9iYWwucGFy
YW1zLnN1Z2dlc3Rpb25WYWx1ZXMgJiYgZ2xvYmFsLnBhcmFtcy5zdWdnZXN0aW9uVmFsdWVzLmxl
bmd0aCkKKyAgICAgICAgICAgIG9wZW5TdWdnZXN0aW9uUGlja2VyKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG9wZW5DYWxlbmRhclBpY2tlcigpOwogICAgIH0KIH0KIApAQCAtMjg2LDYg
KzI5MSwxMSBAQCBmdW5jdGlvbiBjbG9zZVBpY2tlcigpIHsKICAgICBtYWluLmNsYXNzTmFtZSA9
ICIiOwogfTsKIAorZnVuY3Rpb24gb3BlblN1Z2dlc3Rpb25QaWNrZXIoKSB7CisgICAgY2xvc2VQ
aWNrZXIoKTsKKyAgICBnbG9iYWwucGlja2VyID0gbmV3IFN1Z2dlc3Rpb25QaWNrZXIoJCgibWFp
biIpLCBnbG9iYWwucGFyYW1zKTsKK307CisKIGZ1bmN0aW9uIG9wZW5DYWxlbmRhclBpY2tlcigp
IHsKICAgICBjbG9zZVBpY2tlcigpOwogICAgIGdsb2JhbC5waWNrZXIgPSBuZXcgQ2FsZW5kYXJQ
aWNrZXIoJCgibWFpbiIpLCBnbG9iYWwucGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcwppbmRleCBhZDk1NDJjYzQwNmNl
Yzk5YTdlNDY3YTRlNTEyZDlmZGYyMDdmZWNhLi43NjVhMzMwN2E0M2I0OTkzNjg4NDljYmFhMmQx
YzA5MDJjNmU2YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBv
cHVwcy9waWNrZXJDb21tb24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvcGlja2VyQ29tbW9uLmpzCkBAIC03Niw2ICs3NiwxOCBAQCBmdW5jdGlvbiBnZXRTY3Jv
bGxiYXJXaWR0aCgpIHsKIH0KIAogLyoqCisgKiBAcGFyYW0geyFzdHJpbmd9IGNsYXNzTmFtZQor
ICogQHJldHVybiB7IUVsZW1lbnR9CisgKi8KK05vZGUucHJvdG90eXBlLmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUpCit7CisgICAgZm9yICh2YXIgbm9k
ZSA9IHRoaXM7IG5vZGUgJiYgbm9kZSAhPT0gdGhpcy5vd25lckRvY3VtZW50OyBub2RlID0gbm9k
ZS5wYXJlbnROb2RlKQorICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkKKyAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgIHJldHVybiBudWxsOworfTsKKworLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBwYXJhbSB7IUVsZW1lbnR9IGVsZW1lbnQKICAqIEBwYXJhbSB7IU9iamVjdH0gY29u
ZmlnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdn
ZXN0aW9uUGlja2VyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1
Z2dlc3Rpb25QaWNrZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyZDQyYzY3ZWI5NTRjYzk4YjdhNWJmMzlm
NzA0MzFlNTY0MTAxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmNzcwpAQCAtMCwwICsxLDUyIEBACisuc3Vn
Z2VzdGlvbi1saXN0IHsKKyAgICBsaXN0LXN0eWxlOiBub25lOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgbWFyZ2luOiAwOworICAgIGZvbnQ6IC13ZWJraXQtc21hbGwtY29udHJvbDsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjN2Y5ZGI5OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAg
IG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5zdWdnZXN0aW9uLWVudHJ5IHsKKyAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOworICAgIGhlaWdodDogMS43M2VtOworICAgIGxpbmUtaGVpZ2h0OiAxLjcz
ZW07CisgICAgLXdlYmtpdC1zZWxlY3Q6IG5vbmU7CisgICAgY3Vyc29yOiBkZWZhdWx0OworfQor
Cisuc3VnZ2VzdGlvbi1lbnRyeTpmb2N1cyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogIzM4NzVk
NzsKKyAgICBjb2xvcjogI2ZmZmZmZjsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuc3VnZ2Vz
dGlvbi1lbnRyeTpmb2N1cyAubGFiZWwgeworICAgIGNvbG9yOiAjZmZmZmZmOworfQorCisuc3Vn
Z2VzdGlvbi1lbnRyeSAuY29udGVudCB7CisgICAgcGFkZGluZzogMCA0cHg7Cit9CisKKy5zdWdn
ZXN0aW9uLWVudHJ5IC50aXRsZSB7Cit9CisKKy5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCB7Cisg
ICAgcGFkZGluZy1sZWZ0OiAyMHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGNvbG9y
OiAjNzM3MzczOworICAgIGZsb2F0OiByaWdodDsKKyAgICBtYXJnaW4tcmlnaHQ6IDRweDsKK30K
KworLm1lYXN1cmluZy13aWR0aCAuc3VnZ2VzdGlvbi1lbnRyeSAubGFiZWwgeworICAgIGZsb2F0
OiBub25lOworICAgIG1hcmdpbi1yaWdodDogMDsKK30KKworLnN1Z2dlc3Rpb24tbGlzdCAuc2Vw
YXJhdG9yIHsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGNkYzsKKyAgICBoZWlnaHQ6
IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9z
dWdnZXN0aW9uUGlja2VyLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMv
c3VnZ2VzdGlvblBpY2tlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMjU0ODllMjQzNmIxNTFjOGM3Yzc5MTAw
MmEzOTNjN2I1MmI1M2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qcwpAQCAtMCwwICsxLDI4NCBAQAorInVz
ZSBzdHJpY3QiOworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQHBhcmFtIHshRWxlbWVudH0gZWxlbWVudAor
ICogQHBhcmFtIHshT2JqZWN0fSBjb25maWcKKyAqLworZnVuY3Rpb24gU3VnZ2VzdGlvblBpY2tl
cihlbGVtZW50LCBjb25maWcpIHsKKyAgICBQaWNrZXIuY2FsbCh0aGlzLCBlbGVtZW50LCBjb25m
aWcpOworICAgIHRoaXMuX2lzRm9jdXNCeU1vdXNlID0gZmFsc2U7CisgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IG51bGw7CisgICAgdGhpcy5fbGF5b3V0KCk7CisgICAgaWYgKHRoaXMuX2Nv
bmZpZy5oaWdobGlnaHRGaXJzdFN1Z2dlc3Rpb25FbnRyeSkKKyAgICAgICAgdGhpcy5fZWxlbWVu
dC5xdWVyeVNlbGVjdG9yKCIuc3VnZ2VzdGlvbi1lbnRyeTpmaXJzdC1jaGlsZCIpLmZvY3VzKCk7
CisgICAgdGhpcy5faGFuZGxlQm9keUtleURvd25Cb3VuZCA9IHRoaXMuX2hhbmRsZUJvZHlLZXlE
b3duLmJpbmQodGhpcyk7CisgICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXlk
b3duIiwgdGhpcy5faGFuZGxlQm9keUtleURvd25Cb3VuZCk7CisgICAgdGhpcy5fZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LmJpbmQodGhp
cyksIGZhbHNlKTsKK307CitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVh
dGUoUGlja2VyLnByb3RvdHlwZSk7CisKK1N1Z2dlc3Rpb25QaWNrZXIuTnVtYmVyT2ZWaXNpYmxl
RW50cmllcyA9IDIwOworCisvLyBBbiBlbnRyeSBuZWVkcyB0byBiZSBhdCBsZWFzdCB0aGlzIG1h
bnkgcGl4ZWxzIHZpc2libGUgZm9yIGl0IHRvIGJlIGEgdmlzaWJsZSBlbnRyeS4KK1N1Z2dlc3Rp
b25QaWNrZXIuVmlzaWJsZUVudHJ5VGhyZXNob2xkSGVpZ2h0ID0gNDsKKworU3VnZ2VzdGlvblBp
Y2tlci52YWxpZGF0ZUNvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykgeworICAgIGlmIChjb25maWcu
c2hvd090aGVyRGF0ZUVudHJ5ICYmICFjb25maWcub3RoZXJEYXRlTGFiZWwpCisgICAgICAgIHJl
dHVybiAiTm8gb3RoZXJEYXRlTGFiZWwuIjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25WYWx1
ZXMubGVuZ3RoICE9PSBjb25maWcubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGgpCisg
ICAgICAgIHJldHVybiAibG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggbXVzdCBlcXVh
bCBzdWdnZXN0aW9uVmFsdWVzLmxlbmd0aC4iOworICAgIGlmIChjb25maWcuc3VnZ2VzdGlvblZh
bHVlcy5sZW5ndGggIT09IGNvbmZpZy5zdWdnZXN0aW9uTGFiZWxzLmxlbmd0aCkKKyAgICAgICAg
cmV0dXJuICJzdWdnZXN0aW9uTGFiZWxzLmxlbmd0aCBtdXN0IGVxdWFsIHN1Z2dlc3Rpb25WYWx1
ZXMubGVuZ3RoLiI7CisgICAgaWYgKHR5cGVvZiBjb25maWcuaW5wdXRXaWR0aCA9PT0gInVuZGVm
aW5lZCIpCisgICAgICAgIHJldHVybiAiTm8gaW5wdXRXaWR0aC4iOworICAgIHJldHVybiBudWxs
OworfTsKKworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuY2xlYW51cCA9IGZ1bmN0aW9uKCkg
eworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMu
X2hhbmRsZUJvZHlLZXlEb3duQm91bmQsIGZhbHNlKTsKK307CisKKy8qKgorICogQHBhcmFtIHsh
U3RyaW5nfSB0aXRsZQorICogQHBhcmFtIHshU3RyaW5nfSBsYWJlbAorICogQHBhcmFtIHshU3Ry
aW5nfSB2YWx1ZQorICogQHJldHVybiB7IUVsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIu
cHJvdG90eXBlLl9jcmVhdGVTdWdnZXN0aW9uRW50cnlFbGVtZW50ID0gZnVuY3Rpb24odGl0bGUs
IGxhYmVsLCB2YWx1ZSkgeworICAgIHZhciBlbnRyeUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJk
aXYiLCAic3VnZ2VzdGlvbi1lbnRyeSIpOworICAgIGVudHJ5RWxlbWVudC50YWJJbmRleCA9IDA7
CisgICAgZW50cnlFbGVtZW50LmRhdGFzZXQudmFsdWUgPSB2YWx1ZTsKKyAgICB2YXIgY29udGVu
dCA9IGNyZWF0ZUVsZW1lbnQoInNwYW4iLCAiY29udGVudCIpOworICAgIGVudHJ5RWxlbWVudC5h
cHBlbmRDaGlsZChjb250ZW50KTsKKyAgICB2YXIgdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVu
dCgic3BhbiIsICJ0aXRsZSIsIHRpdGxlKTsKKyAgICBjb250ZW50LmFwcGVuZENoaWxkKHRpdGxl
RWxlbWVudCk7CisgICAgaWYgKGxhYmVsKSB7CisgICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBj
cmVhdGVFbGVtZW50KCJzcGFuIiwgImxhYmVsIiwgbGFiZWwpOworICAgICAgICBjb250ZW50LmFw
cGVuZENoaWxkKGxhYmVsRWxlbWVudCk7CisgICAgfQorICAgIGVudHJ5RWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW92ZXIiLCB0aGlzLl9oYW5kbGVFbnRyeU1vdXNlT3Zlci5iaW5kKHRo
aXMpLCBmYWxzZSk7CisgICAgcmV0dXJuIGVudHJ5RWxlbWVudDsKK307CisKKy8qKgorICogQHBh
cmFtIHshU3RyaW5nfSB0aXRsZQorICogQHBhcmFtIHshU3RyaW5nfSBhY3Rpb25OYW1lCisgKiBA
cmV0dXJuIHshRWxlbWVudH0KKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0
ZUFjdGlvbkVudHJ5RWxlbWVudCA9IGZ1bmN0aW9uKHRpdGxlLCBhY3Rpb25OYW1lKSB7CisgICAg
dmFyIGVudHJ5RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsICJzdWdnZXN0aW9uLWVudHJ5
Iik7CisgICAgZW50cnlFbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0
YXNldC5hY3Rpb24gPSBhY3Rpb25OYW1lOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlRWxlbWVu
dCgic3BhbiIsICJjb250ZW50Iik7CisgICAgZW50cnlFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRl
bnQpOworICAgIHZhciB0aXRsZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJzcGFuIiwgInRpdGxl
IiwgdGl0bGUpOworICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKKyAgICBl
bnRyeUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faGFuZGxlRW50
cnlNb3VzZU92ZXIuYmluZCh0aGlzKSwgZmFsc2UpOworICAgIHJldHVybiBlbnRyeUVsZW1lbnQ7
Cit9OworCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0ID0gZnVuY3Rpb24oKSB7
CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsICJzdWdn
ZXN0aW9uLWxpc3QiKTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5faGFuZGxlRW50cnlDbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9jb25maWcuc3VnZ2VzdGlvblZhbHVlcy5sZW5n
dGg7IGkrKykgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRo
aXMuX2NyZWF0ZVN1Z2dlc3Rpb25FbnRyeUVsZW1lbnQodGhpcy5fY29uZmlnLmxvY2FsaXplZFN1
Z2dlc3Rpb25WYWx1ZXNbaV0sIHRoaXMuX2NvbmZpZy5zdWdnZXN0aW9uTGFiZWxzW2ldLCB0aGlz
Ll9jb25maWcuc3VnZ2VzdGlvblZhbHVlc1tpXSkpOworICAgIH0KKyAgICBpZiAodGhpcy5fY29u
ZmlnLnNob3dPdGhlckRhdGVFbnRyeSkgeworICAgICAgICAvLyBBZGQgc2VwYXJhdG9yCisgICAg
ICAgIHZhciBzZXBhcmF0b3IgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCAic2VwYXJhdG9yIik7Cisg
ICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VwYXJhdG9yKTsKKwor
ICAgICAgICAvLyBBZGQgIk90aGVyLi4uIiBlbnRyeQorICAgICAgICB2YXIgb3RoZXJFbnRyeSA9
IHRoaXMuX2NyZWF0ZUFjdGlvbkVudHJ5RWxlbWVudCh0aGlzLl9jb25maWcub3RoZXJEYXRlTGFi
ZWwsICJvcGVuQ2FsZW5kYXJQaWNrZXIiKTsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVu
dC5hcHBlbmRDaGlsZChvdGhlckVudHJ5KTsKKyAgICB9CisgICAgdGhpcy5fZWxlbWVudC5hcHBl
bmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKKworICAgIC8vIFRvIG1lYXN1cmUgdGhl
IHJlcXVpcmVkIHdpZHRoLCB3ZSBmaXJzdCBzZXQgdGhlIGNsYXNzIHRvICJtZWFzdXJpbmctd2lk
dGgiIHdoaWNoCisgICAgLy8gbGVmdCBhbGlnbnMgYWxsIHRoZSBjb250ZW50IGluY2x1ZGluZyBs
YWJlbC4KKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1lYXN1cmlu
Zy13aWR0aCIpOworICAgIHZhciBtYXhDb250ZW50V2lkdGggPSAwOworICAgIGlmICh0eXBlb2Yg
dGhpcy5fY29uZmlnLmlucHV0V2lkdGggPT09ICJudW1iZXIiKQorICAgICAgICBtYXhDb250ZW50
V2lkdGggPSB0aGlzLl9jb25maWcuaW5wdXRXaWR0aDsKKyAgICB2YXIgY29udGVudEVsZW1lbnRz
ID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJjb250ZW50
Iik7CisgICAgZm9yICh2YXIgaT0wOyBpIDwgY29udGVudEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7
CisgICAgICAgIG1heENvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1heENvbnRlbnRXaWR0aCwgY29u
dGVudEVsZW1lbnRzW2ldLm9mZnNldFdpZHRoKTsKKyAgICB9CisgICAgdmFyIExpc3RCb3JkZXIg
PSAyOworICAgIHZhciBkZXNpcmVkV2luZG93V2lkdGggPSBtYXhDb250ZW50V2lkdGggKyBMaXN0
Qm9yZGVyOworICAgIHZhciB0b3RhbEhlaWdodCA9IExpc3RCb3JkZXI7CisgICAgdmFyIG1heEhl
aWdodCA9IDA7CisgICAgdmFyIGVudHJ5Q291bnQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAg
ICAgIHZhciBub2RlID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZE5vZGVzW2ldOworICAg
ICAgICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnMoInN1Z2dlc3Rpb24tZW50cnkiKSkKKyAg
ICAgICAgICAgIGVudHJ5Q291bnQrKzsKKyAgICAgICAgdG90YWxIZWlnaHQgKz0gbm9kZS5vZmZz
ZXRIZWlnaHQ7CisgICAgICAgIGlmIChtYXhIZWlnaHQgPT09IDAgJiYgZW50cnlDb3VudCA9PSBT
dWdnZXN0aW9uUGlja2VyLk51bWJlck9mVmlzaWJsZUVudHJpZXMpCisgICAgICAgICAgICBtYXhI
ZWlnaHQgPSB0b3RhbEhlaWdodDsKKyAgICB9CisgICAgdmFyIGRlc2lyZWRXaW5kb3dIZWlnaHQg
PSB0b3RhbEhlaWdodDsKKyAgICBpZiAobWF4SGVpZ2h0ICE9PSAwICYmIHRvdGFsSGVpZ2h0ID4g
bWF4SGVpZ2h0KSB7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc3R5bGUubWF4SGVp
Z2h0ID0gKG1heEhlaWdodCAtIExpc3RCb3JkZXIpICsgInB4IjsKKyAgICAgICAgZGVzaXJlZFdp
bmRvd1dpZHRoICs9IGdldFNjcm9sbGJhcldpZHRoKCk7CisgICAgICAgIGRlc2lyZWRXaW5kb3dI
ZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgfQorICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xh
c3NMaXN0LnJlbW92ZSgibWVhc3VyaW5nLXdpZHRoIik7CisKKyAgICByZXNpemVXaW5kb3coZGVz
aXJlZFdpbmRvd1dpZHRoLCBkZXNpcmVkV2luZG93SGVpZ2h0KTsKK307CisKKy8qKgorICogQHBh
cmFtIHshRWxlbWVudH0gZW50cnkKKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuc2Vs
ZWN0RW50cnkgPSBmdW5jdGlvbihlbnRyeSkgeworICAgIGlmICh0eXBlb2YgZW50cnkuZGF0YXNl
dC52YWx1ZSAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgdGhpcy5zdWJtaXRWYWx1ZShlbnRy
eS5kYXRhc2V0LnZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKGVudHJ5LmRhdGFzZXQuYWN0aW9uID09
PSAib3BlbkNhbGVuZGFyUGlja2VyIikgeworICAgICAgICBvcGVuQ2FsZW5kYXJQaWNrZXIoKTsK
KyAgICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTdWdnZXN0
aW9uUGlja2VyLnByb3RvdHlwZS5faGFuZGxlRW50cnlDbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgdmFyIGVudHJ5ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xh
c3MoInN1Z2dlc3Rpb24tZW50cnkiKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47
CisgICAgdGhpcy5zZWxlY3RFbnRyeShlbnRyeSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQo
KTsKK307CisKKy8qKgorICogQHJldHVybiB7P0VsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNr
ZXIucHJvdG90eXBlLl9maW5kRmlyc3RWaXNpYmxlRW50cnkgPSBmdW5jdGlvbigpIHsKKyAgICB2
YXIgc2Nyb2xsVG9wID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFy
IGNoaWxkTm9kZXMgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBu
b2RlID0gY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUu
RUxFTUVOVF9OT0RFIHx8ICFub2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRy
eSIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChub2RlLm9mZnNldFRvcCAr
IG5vZGUub2Zmc2V0SGVpZ2h0IC0gc2Nyb2xsVG9wID4gU3VnZ2VzdGlvblBpY2tlci5WaXNpYmxl
RW50cnlUaHJlc2hvbGRIZWlnaHQpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9Cisg
ICAgcmV0dXJuIG51bGw7Cit9OworCisvKioKKyAqIEByZXR1cm4gez9FbGVtZW50fQorICovCitT
dWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZmluZExhc3RWaXNpYmxlRW50cnkgPSBmdW5jdGlv
bigpIHsKKyAgICB2YXIgc2Nyb2xsQm90dG9tID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3Jv
bGxUb3AgKyB0aGlzLl9jb250YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICB2YXIgY2hp
bGROb2RlcyA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2hpbGROb2RlczsKKyAgICBmb3IgKHZh
ciBpID0gY2hpbGROb2Rlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSl7CisgICAgICAgIHZhciBu
b2RlID0gY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUu
RUxFTUVOVF9OT0RFIHx8ICFub2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRy
eSIpKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChzY3JvbGxCb3R0b20gLSBu
b2RlLm9mZnNldFRvcCA+IFN1Z2dlc3Rpb25QaWNrZXIuVmlzaWJsZUVudHJ5VGhyZXNob2xkSGVp
Z2h0KQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOwor
fTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLworU3VnZ2VzdGlvblBpY2tl
ci5wcm90b3R5cGUuX2hhbmRsZUJvZHlLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2
YXIgZXZlbnRIYW5kbGVkID0gZmFsc2U7CisgICAgdmFyIGtleSA9IGV2ZW50LmtleUlkZW50aWZp
ZXI7CisgICAgaWYgKGtleSA9PT0gIlUrMDAxQiIpIHsgLy8gRVNDCisgICAgICAgIHRoaXMuaGFu
ZGxlQ2FuY2VsKCk7CisgICAgICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlm
IChrZXkgPT0gIlVwIikgeworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBk
b2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRy
eSIpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBub2RlICYmIG5vZGU7IG5vZGUgPSBub2RlLnByZXZp
b3VzRWxlbWVudFNpYmxpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5jbGFzc0xpc3Qu
Y29udGFpbnMoInN1Z2dlc3Rpb24tZW50cnkiKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlz
Ll9pc0ZvY3VzQnlNb3VzZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3Vz
KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVl
cnlTZWxlY3RvcigiLnN1Z2dlc3Rpb24tZW50cnk6bGFzdC1jaGlsZCIpLmZvY3VzKCk7CisgICAg
ICAgIH0KKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9
PSAiRG93biIpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN1Z2dlc3Rpb24tZW50cnkiKSkg
eworICAgICAgICAgICAgZm9yICh2YXIgbm9kZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubmV4
dEVsZW1lbnRTaWJsaW5nOyBub2RlICYmIG5vZGU7IG5vZGUgPSBub2RlLm5leHRFbGVtZW50U2li
bGluZykgeworICAgICAgICAgICAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucygic3Vn
Z2VzdGlvbi1lbnRyeSIpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRm9jdXNCeU1v
dXNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG5vZGUuZm9jdXMoKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIu
c3VnZ2VzdGlvbi1lbnRyeTpmaXJzdC1jaGlsZCIpLmZvY3VzKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0gIkVudGVyIikg
eworICAgICAgICB0aGlzLnNlbGVjdEVudHJ5KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpOworICAg
ICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoa2V5ID09PSAiUGFnZVVw
IikgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCAtPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgLy8gU2Nyb2xsaW5nIGNhdXNl
cyBtb3VzZW92ZXIgZXZlbnQgdG8gYmUgY2FsbGVkIGFuZCB0aGF0IHRyaWVzIHRvIG1vdmUgdGhl
IGZvY3VzIHRvby4KKyAgICAgICAgLy8gVG8gcHJldmVudCBmbGlja2VyaW5nIHdlIHdvbid0IGZv
Y3VzIGlmIHRoZSBjdXJyZW50IGZvY3VzIHdhcyBjYXVzZWQgYnkgdGhlIG1vdXNlLgorICAgICAg
ICBpZiAoIXRoaXMuX2lzRm9jdXNCeU1vdXNlKQorICAgICAgICAgICAgdGhpcy5fZmluZEZpcnN0
VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAgICB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LnNjcm9sbFRvcCArPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdo
dDsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0ZvY3VzQnlNb3VzZSkKKyAgICAgICAgICAgIHRoaXMu
X2ZpbmRMYXN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0g
dHJ1ZTsKKyAgICB9CisgICAgaWYgKGV2ZW50SGFuZGxlZCkKKyAgICAgICAgZXZlbnQucHJldmVu
dERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1N1
Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRyeU1vdXNlT3ZlciA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNl
bGZXaXRoQ2xhc3MoInN1Z2dlc3Rpb24tZW50cnkiKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAg
ICByZXR1cm47CisgICAgdGhpcy5faXNGb2N1c0J5TW91c2UgPSB0cnVlOworICAgIGVudHJ5LmZv
Y3VzKCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFt
IHshRXZlbnR9IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVN
b3VzZU91dCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKCFkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKQorICAgICAgICByZXR1
cm47CisgICAgdGhpcy5faXNGb2N1c0J5TW91c2UgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5hY3Rp
dmVFbGVtZW50LmJsdXIoKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggOTY3NjMyNjlmMjlkMGEwMTUwY2Rm
Njk5ZTAwN2MxZDgxODhiZmEwOS4uNWZhZDE3N2I1N2ZjMWIyY2RmNTcwY2NkOTNiOTY4Y2Q4Mzc4
OTFiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTk0Niw2ICs5
NDYsOCBAQAogICAgICAgICAgICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuY3NzJywKICAgICAgICAgICAgICcuLi9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcycsCisgICAgICAgICAgICAnLi4vUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5jc3MnLAorICAgICAgICAgICAgJy4uL1Jl
c291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMnLAogICAgICAgICAgIF0sCiAg
ICAgICAgICAgJ291dHB1dHMnOiBbCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRF
X0RJUikvd2Via2l0L0NhbGVuZGFyUGlja2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcAppbmRleCA2OTcxOGRjYjYzMWVkNDJk
Njk5MmFkYzRjZDBhODMyMzg1YWQxMWZhLi41YWI3OTg0OWY2ZTI2YjFhMmQ2ODZlZDQ0YmNjNzZi
YjVhNTVlMjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGlt
ZUNob29zZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGlt
ZUNob29zZXJJbXBsLmNwcApAQCAtODcsNiArODcsNyBAQCB2b2lkIERhdGVUaW1lQ2hvb3Nlcklt
cGw6OndyaXRlRG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKIAogICAg
IGFkZFN0cmluZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxz
dHlsZT5cbiIsIHdyaXRlcik7CiAgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29t
bW9uQ3NzLCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFk
ZERhdGEoV2ViQ29yZTo6c3VnZ2VzdGlvblBpY2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OnN1Z2dl
c3Rpb25QaWNrZXJDc3MpKTsKICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBp
Y2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CiAgICAgQ1N0cmlu
ZyBleHRyYVN0eWxlID0gV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRy
YUNhbGVuZGFyUGlja2VyU3R5bGVTaGVldCgpOwogICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgp
KQpAQCAtMTA5LDYgKzExMCw3IEBAIHZvaWQgRGF0ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVEb2N1
bWVudChXZWJDb3JlOjpEb2N1bWVudFdyaXRlciYgd3JpdGVyKQogICAgIGFkZFN0cmluZygifVxu
Iiwgd3JpdGVyKTsKIAogICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpz
LCBzaXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShX
ZWJDb3JlOjpzdWdnZXN0aW9uUGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpzdWdnZXN0aW9uUGlj
a2VySnMpKTsKICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBz
aXplb2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNrZXJKcykpOwogICAgIGFkZFN0cmluZygiPC9zY3Jp
cHQ+PC9ib2R5PlxuIiwgd3JpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5n
ZUxvZwppbmRleCBkZjc0NDczZjAyZTUyOGI0MTBjYjI2MjI5NTk5OWIyNTljMjIxMWRlLi4zZjdk
ZGJiZjgyMTk3ZDA2NmM3M2RlODgxOTY1YTZlY2UwMmVkM2RiIDEwMDY0NAotLS0gYS9DaGFuZ2VM
b2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMjIgIEtlaXNoaSBI
YXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1Z2dlc3Rpb25QaWNr
ZXIgdG8gQ2FsZW5kYXJQaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTk3MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgKiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbDogQWRk
ZWQgdGVzdHMgZm9yIFN1Z2dlc3Rpb25QaWNrZXIuCisKIDIwMTItMDktMjAgIFNpbW9uIEhhdXNt
YW5uICA8c2ltb24uaGF1c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQg
bW9kdWxlIGhlYWRlciBpbmNsdWRlcyBwcml2YXRlIGRlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEv
TWFudWFsVGVzdHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWwgYi9NYW51YWxUZXN0cy9mb3Jt
cy9jYWxlbmRhci1waWNrZXIuaHRtbAppbmRleCA0MzhlYjZmNmY2ODUwZmY0MmFiMTllN2VlMjE3
ZDA5NTE5NDc2NzIyLi4xOGYxZTk3OTVmNTMwMTU4N2EzYmVkNzhkM2E3ZjE2NTYzY2ViNzcyIDEw
MDY0NAotLS0gYS9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAorKysgYi9N
YW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbApAQCAtMjMsNiArMjMsOCBAQCBp
ZnJhbWUgewogIDxvcHRpb24+RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24+SmFwYW5lc2U8L29w
dGlvbj4KICA8b3B0aW9uPkFyYWJpYzwvb3B0aW9uPgorIDxvcHRpb24+d2l0aCBkYXRhbGlzdDwv
b3B0aW9uPgorIDxvcHRpb24+d2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CiA8L3NlbGVjdD4K
IAogPGRpdj48aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRhdGUiPjwvZGl2PgpAQCAtNjgsNiArNzAs
ODEgQEAgdmFyIGFyYWJpY0FyZ3VtZW50cyA9IHsKICAgICBzdGVwIDogMSwKICAgICBtYXggOiAn
MjAyMC0wNS0xNScsCiB9OwordmFyIGRhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2FsZTog
J2VuLVVTJywKKyAgICBtb250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJj
aCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRl
bWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFiZWxz
IDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwKKyAg
ICB0b2RheUxhYmVsIDogJ1RvZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAgICBj
YW5jZWxMYWJlbCA6ICdDYW5jZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3RlcCA6
IDEsCisgICAgbWF4IDogJzIwOTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXMgOiBbJzIw
MTItMDEtMDEnLCAnMjAxMi0wNi0wMycsICcyMDEyLTA5LTA2JywgJzIwMTItMTItMjQnXSwKKyAg
ICBsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzIDogWycxLzEvMTInLCAnNi8zLzEyJywgJzkvNi8x
MicsICcxMi8yNC8xMiddLAorICAgIHN1Z2dlc3Rpb25MYWJlbHMgOiBbJycsICdCaXJ0aGRheScs
ICcnLCAnQ2hyaXN0bWFzJ10sCisgICAgc2hvd090aGVyRGF0ZUVudHJ5OiB0cnVlLAorICAgIG90
aGVyRGF0ZUxhYmVsOiAnT3RoZXIuLi4nLAorICAgIGlucHV0V2lkdGg6IDEyNywKKyAgICBoaWdo
bGlnaHRGaXJzdFN1Z2dlc3Rpb25FbnRyeTogZmFsc2UKK307Cit2YXIgbG9uZ0RhdGFsaXN0QXJn
dW1lbnRzID0geworICAgIGxvY2FsZTogJ2VuLVVTJywKKyAgICBtb250aExhYmVscyA6IFsnSmFu
dWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsCisgICAg
J0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0Rl
Y2VtYmVyJ10sCisgICAgZGF5TGFiZWxzIDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAn
VGh1JywgJ0ZyaScsICdTYXQnXSwKKyAgICB0b2RheUxhYmVsIDogJ1RvZGF5JywKKyAgICBjbGVh
ckxhYmVsIDogJ0NsZWFyJywKKyAgICBjYW5jZWxMYWJlbCA6ICdDYW5jZWwnLAorICAgIHdlZWtT
dGFydERheSA6IDAsCisgICAgc3RlcCA6IDEsCisgICAgbWF4IDogJzIwOTktMTItMzEnLAorICAg
IHN1Z2dlc3Rpb25WYWx1ZXM6IFsiMjAxMi0wMS0wMSIsICIyMDEyLTAxLTAyIiwgIjIwMTItMDEt
MDMiLCAiMjAxMi0wMS0wNCIsCisgICAgICAgICIyMDEyLTAxLTA1IiwgIjIwMTItMDEtMDYiLCAi
MjAxMi0wMS0wNyIsICIyMDEyLTAxLTA4IiwgIjIwMTItMDEtMDkiLAorICAgICAgICAiMjAxMi0w
MS0xMCIsICIyMDEyLTAxLTExIiwgIjIwMTItMDEtMTIiLCAiMjAxMi0wMS0xMyIsICIyMDEyLTAx
LTE0IiwKKyAgICAgICAgIjIwMTItMDEtMTUiLCAiMjAxMi0wMS0xNiIsICIyMDEyLTAxLTE3Iiwg
IjIwMTItMDEtMTgiLCAiMjAxMi0wMS0xOSIsCisgICAgICAgICIyMDEyLTAxLTIwIiwgIjIwMTIt
MDEtMjEiLCAiMjAxMi0wMS0yMiIsICIyMDEyLTAxLTIzIiwgIjIwMTItMDEtMjQiLAorICAgICAg
ICAiMjAxMi0wMS0yNSIsICIyMDEyLTAxLTI2IiwgIjIwMTItMDEtMjciLCAiMjAxMi0wMS0yOCIs
ICIyMDEyLTAxLTI5IiwKKyAgICAgICAgIjIwMTItMDEtMzAiLCAiMjAxMi0wMS0zMSIsICIyMDEy
LTAyLTAxIiwgIjIwMTItMDItMDIiLCAiMjAxMi0wMi0wMyIsCisgICAgICAgICIyMDEyLTAyLTA0
IiwgIjIwMTItMDItMDUiLCAiMjAxMi0wMi0wNiIsICIyMDEyLTAyLTA3IiwgIjIwMTItMDItMDgi
LAorICAgICAgICAiMjAxMi0wMi0wOSIsICIyMDEyLTAyLTEwIiwgIjIwMTItMDItMTEiLCAiMjAx
Mi0wMi0xMiIsICIyMDEyLTAyLTEzIiwKKyAgICAgICAgIjIwMTItMDItMTQiLCAiMjAxMi0wMi0x
NSIsICIyMDEyLTAyLTE2IiwgIjIwMTItMDItMTciLCAiMjAxMi0wMi0xOCIsCisgICAgICAgICIy
MDEyLTAyLTE5IiwgIjIwMTItMDItMjAiLCAiMjAxMi0wMi0yMSIsICIyMDEyLTAyLTIyIiwgIjIw
MTItMDItMjMiLAorICAgICAgICAiMjAxMi0wMi0yNCIsICIyMDEyLTAyLTI1IiwgIjIwMTItMDIt
MjYiLCAiMjAxMi0wMi0yNyIsICIyMDEyLTAyLTI4IiwKKyAgICAgICAgIjIwMTItMDItMjkiLCAi
MjAxMi0wMy0wMSIsICIyMDEyLTAzLTAyIiwgIjIwMTItMDMtMDMiLCAiMjAxMi0wMy0wNCIsCisg
ICAgICAgICIyMDEyLTAzLTA1IiwgIjIwMTItMDMtMDYiLCAiMjAxMi0wMy0wNyIsICIyMDEyLTAz
LTA4IiwgIjIwMTItMDMtMDkiLAorICAgICAgICAiMjAxMi0wMy0xMCIsICIyMDEyLTAzLTExIiwg
IjIwMTItMDMtMTIiLCAiMjAxMi0wMy0xMyIsICIyMDEyLTAzLTE0IiwKKyAgICAgICAgIjIwMTIt
MDMtMTUiLCAiMjAxMi0wMy0xNiIsICIyMDEyLTAzLTE3IiwgIjIwMTItMDMtMTgiLCAiMjAxMi0w
My0xOSIsCisgICAgICAgICIyMDEyLTAzLTIwIiwgIjIwMTItMDMtMjEiLCAiMjAxMi0wMy0yMiIs
ICIyMDEyLTAzLTIzIiwgIjIwMTItMDMtMjQiLAorICAgICAgICAiMjAxMi0wMy0yNSIsICIyMDEy
LTAzLTI2IiwgIjIwMTItMDMtMjciLCAiMjAxMi0wMy0yOCIsICIyMDEyLTAzLTI5IiwKKyAgICAg
ICAgIjIwMTItMDMtMzAiLCAiMjAxMi0wMy0zMSJdLAorICAgIGxvY2FsaXplZFN1Z2dlc3Rpb25W
YWx1ZXM6IFsiMS8xLzEyIiwgIjEvMi8xMiIsICIxLzMvMTIiLCAiMS80LzEyIiwKKyAgICAgICAg
IjEvNS8xMiIsICIxLzYvMTIiLCAiMS83LzEyIiwgIjEvOC8xMiIsICIxLzkvMTIiLCAiMS8xMC8x
MiIsICIxLzExLzEyIiwKKyAgICAgICAgIjEvMTIvMTIiLCAiMS8xMy8xMiIsICIxLzE0LzEyIiwg
IjEvMTUvMTIiLCAiMS8xNi8xMiIsICIxLzE3LzEyIiwKKyAgICAgICAgIjEvMTgvMTIiLCAiMS8x
OS8xMiIsICIxLzIwLzEyIiwgIjEvMjEvMTIiLCAiMS8yMi8xMiIsICIxLzIzLzEyIiwKKyAgICAg
ICAgIjEvMjQvMTIiLCAiMS8yNS8xMiIsICIxLzI2LzEyIiwgIjEvMjcvMTIiLCAiMS8yOC8xMiIs
ICIxLzI5LzEyIiwKKyAgICAgICAgIjEvMzAvMTIiLCAiMS8zMS8xMiIsICIyLzEvMTIiLCAiMi8y
LzEyIiwgIjIvMy8xMiIsICIyLzQvMTIiLCAiMi81LzEyIiwKKyAgICAgICAgIjIvNi8xMiIsICIy
LzcvMTIiLCAiMi84LzEyIiwgIjIvOS8xMiIsICIyLzEwLzEyIiwgIjIvMTEvMTIiLCAiMi8xMi8x
MiIsCisgICAgICAgICIyLzEzLzEyIiwgIjIvMTQvMTIiLCAiMi8xNS8xMiIsICIyLzE2LzEyIiwg
IjIvMTcvMTIiLCAiMi8xOC8xMiIsCisgICAgICAgICIyLzE5LzEyIiwgIjIvMjAvMTIiLCAiMi8y
MS8xMiIsICIyLzIyLzEyIiwgIjIvMjMvMTIiLCAiMi8yNC8xMiIsCisgICAgICAgICIyLzI1LzEy
IiwgIjIvMjYvMTIiLCAiMi8yNy8xMiIsICIyLzI4LzEyIiwgIjIvMjkvMTIiLCAiMy8xLzEyIiwK
KyAgICAgICAgIjMvMi8xMiIsICIzLzMvMTIiLCAiMy80LzEyIiwgIjMvNS8xMiIsICIzLzYvMTIi
LCAiMy83LzEyIiwgIjMvOC8xMiIsCisgICAgICAgICIzLzkvMTIiLCAiMy8xMC8xMiIsICIzLzEx
LzEyIiwgIjMvMTIvMTIiLCAiMy8xMy8xMiIsICIzLzE0LzEyIiwgCisgICAgICAgICIzLzE1LzEy
IiwgIjMvMTYvMTIiLCAiMy8xNy8xMiIsICIzLzE4LzEyIiwgIjMvMTkvMTIiLCAiMy8yMC8xMiIs
CisgICAgICAgICIzLzIxLzEyIiwgIjMvMjIvMTIiLCAiMy8yMy8xMiIsICIzLzI0LzEyIiwgIjMv
MjUvMTIiLCAiMy8yNi8xMiIsCisgICAgICAgICIzLzI3LzEyIiwgIjMvMjgvMTIiLCAiMy8yOS8x
MiIsICIzLzMwLzEyIiwgIjMvMzEvMTIiXSwKKyAgICBzdWdnZXN0aW9uTGFiZWxzOiBbIlRvZGF5
IiwgIlRvbW9ycm93IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAg
ICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiXSwKKyAgICBzaG93T3RoZXJEYXRlRW50cnk6IHRydWUsCisgICAgb3Ro
ZXJEYXRlTGFiZWw6ICdPdGhlci4uLicsCisgICAgaW5wdXRXaWR0aDogMTI3LAorICAgIGhpZ2hs
aWdodEZpcnN0U3VnZ2VzdGlvbkVudHJ5OiB0cnVlCit9OwogCiBmdW5jdGlvbiBvcGVuQ2FsZW5k
YXIoYXJncykgewogICAgIHZhciBmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCdpZnJhbWUnKVswXTsKQEAgLTc3LDYgKzE1NCwxMCBAQCBmdW5jdGlvbiBvcGVuQ2FsZW5kYXIo
YXJncykgewogICAgIGNvbW1vbkNzc0xpbmsucmVsID0gJ3N0eWxlc2hlZXQnOwogICAgIGNvbW1v
bkNzc0xpbmsuaHJlZiA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVw
cy9waWNrZXJDb21tb24uY3NzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgIGRvYy5o
ZWFkLmFwcGVuZENoaWxkKGNvbW1vbkNzc0xpbmspOworICAgIHZhciBzdWdnZXN0aW9uUGlja2Vy
Q3NzTGluayA9IGRvYy5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CisgICAgc3VnZ2VzdGlvblBpY2tl
ckNzc0xpbmsucmVsID0gJ3N0eWxlc2hlZXQnOworICAgIHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5r
LmhyZWYgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2Vz
dGlvblBpY2tlci5jc3M/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CisgICAgZG9jLmhlYWQu
YXBwZW5kQ2hpbGQoc3VnZ2VzdGlvblBpY2tlckNzc0xpbmspOwogICAgIHZhciBsaW5rID0gZG9j
LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAg
ICBsaW5rLmhyZWYgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMv
Y2FsZW5kYXJQaWNrZXIuY3NzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwpAQCAtODQsNiAr
MTY1LDkgQEAgZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICB2YXIgY29tbW9uSnNT
Y3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgY29tbW9uSnNTY3JpcHQu
c3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNv
bW1vbi5qcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKICAgICBkb2MuYm9keS5hcHBlbmRD
aGlsZChjb21tb25Kc1NjcmlwdCk7CisgICAgdmFyIHN1Z2dlc3Rpb25QaWNrZXJKc1NjcmlwdCA9
IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKKyAgICBzdWdnZXN0aW9uUGlja2VySnNTY3Jp
cHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dl
c3Rpb25QaWNrZXIuanM/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CisgICAgZG9jLmJvZHku
YXBwZW5kQ2hpbGQoc3VnZ2VzdGlvblBpY2tlckpzU2NyaXB0KTsKICAgICB2YXIgc2NyaXB0ID0g
ZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgIHNjcmlwdC5zcmMgPSAnLi4vLi4vU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanM/JyArIChu
ZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoc2NyaXB0KTsK
QEAgLTEyMSw2ICsyMDUsMTIgQEAgZnVuY3Rpb24gc2VsZWN0ZWQoc2VsZWN0KSB7CiAgICAgY2Fz
ZSAyOgogICAgICAgICBvcGVuQ2FsZW5kYXIoYXJhYmljQXJndW1lbnRzKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSAzOgorICAgICAgICBvcGVuQ2FsZW5kYXIoZGF0YWxpc3RBcmd1bWVudHMp
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICAgIG9wZW5DYWxlbmRhcihsb25n
RGF0YWxpc3RBcmd1bWVudHMpOworICAgICAgICBicmVhazsKICAgICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165071</attachid>
            <date>2012-09-21 00:48:52 -0700</date>
            <delta_ts>2012-09-21 04:43:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97201-20120921164816.patch</filename>
            <type>text/plain</type>
            <size>27761</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhiYjNjOGVkMzIyYTg1
MjQwZTJkMWUzYjY2NTkwYzM4N2YzMTM0Mi4uN2Y3N2VhNzQyYTcwNjgzYWYxYWJkMGZiOWI3YzA5
ZGY3Zjk0MmE0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA5LTIyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9u
UGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRh
clBpY2tlci4gSXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYXMgYSBkYXRhbGlzdCBVSSBidXQgaXQg
Y2FuIGJlIHVzZWQgaW5zaWRlIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1s
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU3VnZ2VzdGlvbiBQaWNrZXIgY2FuIGJlIHRlc3Rl
ZCBpbiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbC4KKworICAgICAgICAq
IFJlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAgICAoaW5pdGlh
bGl6ZSk6CisgICAgICAgIChvcGVuU3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzOgorICAgICAgICAoTm9kZS5wcm90b3R5cGUu
ZW5jbG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyk6CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvc3VnZ2VzdGlvblBpY2tlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnN1Z2dlc3Rpb24t
bGlzdCk6CisgICAgICAgICguc3VnZ2VzdGlvbi1lbnRyeSk6CisgICAgICAgICguc3VnZ2VzdGlv
bi1lbnRyeTpmb2N1cyk6CisgICAgICAgICguc3VnZ2VzdGlvbi1lbnRyeTpmb2N1cyAubGFiZWwp
OgorICAgICAgICAoLnN1Z2dlc3Rpb24tZW50cnkgLmNvbnRlbnQpOgorICAgICAgICAoLnN1Z2dl
c3Rpb24tZW50cnkgLnRpdGxlKToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCk6
CisgICAgICAgICgubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCk6Cisg
ICAgICAgICguc3VnZ2VzdGlvbi1saXN0IC5zZXBhcmF0b3IpOgorICAgICAgICAqIFJlc291cmNl
cy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanM6IEFkZGVkLgorICAgICAgICAoU3VnZ2Vz
dGlvblBpY2tlcik6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnZhbGlkYXRlQ29uZmlnKToK
KyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLmNsZWFudXApOgorICAgICAgICAo
U3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0ZVN1Z2dlc3Rpb25FbnRyeUVsZW1lbnQp
OiBDcmVhdGVzIGFuIGVudHJ5IHRoYXQgd2hlbiBzZWxlY3RlZCBzdWJtaXRzIHRoZSB2YWx1ZS4K
KyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9jcmVhdGVBY3Rpb25FbnRyeUVs
ZW1lbnQpOiBDcmVhdGVzIGFuIGVudHJ5IHRoYXQgY2F1c2VzIGFuIGFjdGlvbi4gKGUueC4gIk90
aGVyLi4uIikKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9sYXlvdXQpOiBB
bGlnbiBldmVyeXRoaW5nIGxlZnQsIG1lYXN1cmUgdGhlIHdpZHRoIGFuZCB0aGVuIHJpZ2h0IGFs
aWduIHRoZSBsYWJlbHMuCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5zZWxl
Y3RFbnRyeSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5faGFuZGxlRW50
cnlDbGljayk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZmluZEZpcnN0
VmlzaWJsZUVudHJ5KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5k
TGFzdFZpc2libGVFbnRyeSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5f
aGFuZGxlQm9keUtleURvd24pOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
X2hhbmRsZUVudHJ5TW91c2VPdmVyKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90
eXBlLl9oYW5kbGVNb3VzZU91dCk6CisgICAgICAgICogV2ViQ29yZS5neXAvV2ViQ29yZS5neXA6
CisKIDIwMTItMDktMjEgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAg
ICAgICAgUHJlcGFyZSBDYWxlbmRhclBpY2tlciBzbyB3ZSBjYW4gYWRkIGFub3RoZXIgcGlja2Vy
LCBTdWdnZXRpb25QaWNrZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNzY0NmVjNDE0
NjJiNDFiNzNjZDY0YjIwZGNkNTdmZDVjZTkwMWMyNC4uOGRhYWYwZTBmYmZhNjdmMGVmMmM1ZTFh
M2Q4M2I3OTBiMTA4MjE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMi0wOS0yMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBBZGQgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRhclBpY2tlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyMDEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHNyYy9EYXRlVGltZUNob29z
ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RGF0ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVE
b2N1bWVudCk6IEFkZCBqcy9jc3MgZm9yIFN1Z2dlc3Rpb25QaWNrZXIgdG8gcGFnZSBwaWNrZXIu
CisKIDIwMTItMDktMjAgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIFVucmV2aWV3ZWQgYnVpbGQgZml4LiB3ZWJraXRfdW5pdF90ZXN0cyBoYXZl
IGdsb2JhbCBjb25zdHJ1Y3RvcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzCmluZGV4IDIwYTg1ZmQ0YThhNWE1ZDU4NDdm
YTg5YWM0OTJmNGQ1NGEyYzhhMTguLmRiOTg0YTUzOGFjOTkxZmNkYmY5Yzg5N2I1OWI0NDcwZjQ0
YzcwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2Nh
bGVuZGFyUGlja2VyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBz
L2NhbGVuZGFyUGlja2VyLmpzCkBAIC0yNjgsMTMgKzI2OCwxOCBAQCBDYWxlbmRhclBpY2tlci52
YWxpZGF0ZUNvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykgewogICovCiBmdW5jdGlvbiBpbml0aWFs
aXplKGFyZ3MpIHsKICAgICB2YXIgZXJyb3JTdHJpbmcgPSBDYWxlbmRhclBpY2tlci52YWxpZGF0
ZUNvbmZpZyhhcmdzKTsKKyAgICBpZiAoYXJncy5zdWdnZXN0aW9uVmFsdWVzKQorICAgICAgICBl
cnJvclN0cmluZyA9IGVycm9yU3RyaW5nIHx8IFN1Z2dlc3Rpb25QaWNrZXIudmFsaWRhdGVDb25m
aWcoYXJncykKICAgICBpZiAoZXJyb3JTdHJpbmcpIHsKICAgICAgICAgdmFyIG1haW4gPSAkKCJt
YWluIik7CiAgICAgICAgIG1haW4udGV4dENvbnRlbnQgPSAiSW50ZXJuYWwgZXJyb3I6ICIgKyBl
cnJvclN0cmluZzsKICAgICAgICAgcmVzaXplV2luZG93KG1haW4ub2Zmc2V0V2lkdGgsIG1haW4u
b2Zmc2V0SGVpZ2h0KTsKICAgICB9IGVsc2UgewogICAgICAgICBnbG9iYWwucGFyYW1zID0gYXJn
czsKLSAgICAgICAgb3BlbkNhbGVuZGFyUGlja2VyKCk7CisgICAgICAgIGlmIChnbG9iYWwucGFy
YW1zLnN1Z2dlc3Rpb25WYWx1ZXMgJiYgZ2xvYmFsLnBhcmFtcy5zdWdnZXN0aW9uVmFsdWVzLmxl
bmd0aCkKKyAgICAgICAgICAgIG9wZW5TdWdnZXN0aW9uUGlja2VyKCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIG9wZW5DYWxlbmRhclBpY2tlcigpOwogICAgIH0KIH0KIApAQCAtMjg2LDYg
KzI5MSwxMSBAQCBmdW5jdGlvbiBjbG9zZVBpY2tlcigpIHsKICAgICBtYWluLmNsYXNzTmFtZSA9
ICIiOwogfTsKIAorZnVuY3Rpb24gb3BlblN1Z2dlc3Rpb25QaWNrZXIoKSB7CisgICAgY2xvc2VQ
aWNrZXIoKTsKKyAgICBnbG9iYWwucGlja2VyID0gbmV3IFN1Z2dlc3Rpb25QaWNrZXIoJCgibWFp
biIpLCBnbG9iYWwucGFyYW1zKTsKK307CisKIGZ1bmN0aW9uIG9wZW5DYWxlbmRhclBpY2tlcigp
IHsKICAgICBjbG9zZVBpY2tlcigpOwogICAgIGdsb2JhbC5waWNrZXIgPSBuZXcgQ2FsZW5kYXJQ
aWNrZXIoJCgibWFpbiIpLCBnbG9iYWwucGFyYW1zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcwppbmRleCBhZDk1NDJjYzQwNmNl
Yzk5YTdlNDY3YTRlNTEyZDlmZGYyMDdmZWNhLi43NjVhMzMwN2E0M2I0OTkzNjg4NDljYmFhMmQx
YzA5MDJjNmU2YzE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBv
cHVwcy9waWNrZXJDb21tb24uanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvcGlja2VyQ29tbW9uLmpzCkBAIC03Niw2ICs3NiwxOCBAQCBmdW5jdGlvbiBnZXRTY3Jv
bGxiYXJXaWR0aCgpIHsKIH0KIAogLyoqCisgKiBAcGFyYW0geyFzdHJpbmd9IGNsYXNzTmFtZQor
ICogQHJldHVybiB7IUVsZW1lbnR9CisgKi8KK05vZGUucHJvdG90eXBlLmVuY2xvc2luZ05vZGVP
clNlbGZXaXRoQ2xhc3MgPSBmdW5jdGlvbihjbGFzc05hbWUpCit7CisgICAgZm9yICh2YXIgbm9k
ZSA9IHRoaXM7IG5vZGUgJiYgbm9kZSAhPT0gdGhpcy5vd25lckRvY3VtZW50OyBub2RlID0gbm9k
ZS5wYXJlbnROb2RlKQorICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5FTEVNRU5U
X05PREUgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkKKyAgICAgICAgICAg
IHJldHVybiBub2RlOworICAgIHJldHVybiBudWxsOworfTsKKworLyoqCiAgKiBAY29uc3RydWN0
b3IKICAqIEBwYXJhbSB7IUVsZW1lbnR9IGVsZW1lbnQKICAqIEBwYXJhbSB7IU9iamVjdH0gY29u
ZmlnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdn
ZXN0aW9uUGlja2VyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1
Z2dlc3Rpb25QaWNrZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyZDQyYzY3ZWI5NTRjYzk4YjdhNWJmMzlm
NzA0MzFlNTY0MTAxNGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmNzcwpAQCAtMCwwICsxLDUyIEBACisuc3Vn
Z2VzdGlvbi1saXN0IHsKKyAgICBsaXN0LXN0eWxlOiBub25lOworICAgIHBhZGRpbmc6IDA7Cisg
ICAgbWFyZ2luOiAwOworICAgIGZvbnQ6IC13ZWJraXQtc21hbGwtY29udHJvbDsKKyAgICBib3Jk
ZXI6IDFweCBzb2xpZCAjN2Y5ZGI5OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworICAg
IG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5zdWdnZXN0aW9uLWVudHJ5IHsKKyAgICB3aGl0ZS1z
cGFjZTogbm93cmFwOworICAgIGhlaWdodDogMS43M2VtOworICAgIGxpbmUtaGVpZ2h0OiAxLjcz
ZW07CisgICAgLXdlYmtpdC1zZWxlY3Q6IG5vbmU7CisgICAgY3Vyc29yOiBkZWZhdWx0OworfQor
Cisuc3VnZ2VzdGlvbi1lbnRyeTpmb2N1cyB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogIzM4NzVk
NzsKKyAgICBjb2xvcjogI2ZmZmZmZjsKKyAgICBvdXRsaW5lOiBub25lOworfQorCisuc3VnZ2Vz
dGlvbi1lbnRyeTpmb2N1cyAubGFiZWwgeworICAgIGNvbG9yOiAjZmZmZmZmOworfQorCisuc3Vn
Z2VzdGlvbi1lbnRyeSAuY29udGVudCB7CisgICAgcGFkZGluZzogMCA0cHg7Cit9CisKKy5zdWdn
ZXN0aW9uLWVudHJ5IC50aXRsZSB7Cit9CisKKy5zdWdnZXN0aW9uLWVudHJ5IC5sYWJlbCB7Cisg
ICAgcGFkZGluZy1sZWZ0OiAyMHB4OworICAgIHRleHQtYWxpZ246IHJpZ2h0OworICAgIGNvbG9y
OiAjNzM3MzczOworICAgIGZsb2F0OiByaWdodDsKKyAgICBtYXJnaW4tcmlnaHQ6IDRweDsKK30K
KworLm1lYXN1cmluZy13aWR0aCAuc3VnZ2VzdGlvbi1lbnRyeSAubGFiZWwgeworICAgIGZsb2F0
OiBub25lOworICAgIG1hcmdpbi1yaWdodDogMDsKK30KKworLnN1Z2dlc3Rpb24tbGlzdCAuc2Vw
YXJhdG9yIHsKKyAgICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGNkYzsKKyAgICBoZWlnaHQ6
IDA7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9z
dWdnZXN0aW9uUGlja2VyLmpzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMv
c3VnZ2VzdGlvblBpY2tlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNDcwYWZkZmQ4NDUwMDI3NmFlNDI4MDRk
ZTJhYzJmMmRkMTkwNDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qcwpAQCAtMCwwICsxLDI4MiBAQAorInVz
ZSBzdHJpY3QiOworLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKy8qKgorICogQHBhcmFtIHshRWxlbWVudH0gZWxlbWVudAor
ICogQHBhcmFtIHshT2JqZWN0fSBjb25maWcKKyAqLworZnVuY3Rpb24gU3VnZ2VzdGlvblBpY2tl
cihlbGVtZW50LCBjb25maWcpIHsKKyAgICBQaWNrZXIuY2FsbCh0aGlzLCBlbGVtZW50LCBjb25m
aWcpOworICAgIHRoaXMuX2lzRm9jdXNCeU1vdXNlID0gZmFsc2U7CisgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IG51bGw7CisgICAgdGhpcy5fbGF5b3V0KCk7CisgICAgdGhpcy5faGFuZGxl
Qm9keUtleURvd25Cb3VuZCA9IHRoaXMuX2hhbmRsZUJvZHlLZXlEb3duLmJpbmQodGhpcyk7Cisg
ICAgZG9jdW1lbnQuYm9keS5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faGFuZGxl
Qm9keUtleURvd25Cb3VuZCk7CisgICAgdGhpcy5fZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW91dCIsIHRoaXMuX2hhbmRsZU1vdXNlT3V0LmJpbmQodGhpcyksIGZhbHNlKTsKK307CitT
dWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoUGlja2VyLnByb3RvdHlw
ZSk7CisKK1N1Z2dlc3Rpb25QaWNrZXIuTnVtYmVyT2ZWaXNpYmxlRW50cmllcyA9IDIwOworCisv
LyBBbiBlbnRyeSBuZWVkcyB0byBiZSBhdCBsZWFzdCB0aGlzIG1hbnkgcGl4ZWxzIHZpc2libGUg
Zm9yIGl0IHRvIGJlIGEgdmlzaWJsZSBlbnRyeS4KK1N1Z2dlc3Rpb25QaWNrZXIuVmlzaWJsZUVu
dHJ5VGhyZXNob2xkSGVpZ2h0ID0gNDsKKworU3VnZ2VzdGlvblBpY2tlci52YWxpZGF0ZUNvbmZp
ZyA9IGZ1bmN0aW9uKGNvbmZpZykgeworICAgIGlmIChjb25maWcuc2hvd090aGVyRGF0ZUVudHJ5
ICYmICFjb25maWcub3RoZXJEYXRlTGFiZWwpCisgICAgICAgIHJldHVybiAiTm8gb3RoZXJEYXRl
TGFiZWwuIjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoICE9PSBjb25m
aWcubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGgpCisgICAgICAgIHJldHVybiAibG9j
YWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggbXVzdCBlcXVhbCBzdWdnZXN0aW9uVmFsdWVz
Lmxlbmd0aC4iOworICAgIGlmIChjb25maWcuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggIT09IGNv
bmZpZy5zdWdnZXN0aW9uTGFiZWxzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuICJzdWdnZXN0aW9u
TGFiZWxzLmxlbmd0aCBtdXN0IGVxdWFsIHN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoLiI7CisgICAg
aWYgKHR5cGVvZiBjb25maWcuaW5wdXRXaWR0aCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJl
dHVybiAiTm8gaW5wdXRXaWR0aC4iOworICAgIHJldHVybiBudWxsOworfTsKKworU3VnZ2VzdGlv
blBpY2tlci5wcm90b3R5cGUuY2xlYW51cCA9IGZ1bmN0aW9uKCkgeworICAgIGRvY3VtZW50LmJv
ZHkucmVtb3ZlRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZUJvZHlLZXlEb3du
Qm91bmQsIGZhbHNlKTsKK307CisKKy8qKgorICogQHBhcmFtIHshU3RyaW5nfSB0aXRsZQorICog
QHBhcmFtIHshU3RyaW5nfSBsYWJlbAorICogQHBhcmFtIHshU3RyaW5nfSB2YWx1ZQorICogQHJl
dHVybiB7IUVsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9jcmVhdGVT
dWdnZXN0aW9uRW50cnlFbGVtZW50ID0gZnVuY3Rpb24odGl0bGUsIGxhYmVsLCB2YWx1ZSkgewor
ICAgIHZhciBlbnRyeUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCAic3VnZ2VzdGlvbi1l
bnRyeSIpOworICAgIGVudHJ5RWxlbWVudC50YWJJbmRleCA9IDA7CisgICAgZW50cnlFbGVtZW50
LmRhdGFzZXQudmFsdWUgPSB2YWx1ZTsKKyAgICB2YXIgY29udGVudCA9IGNyZWF0ZUVsZW1lbnQo
InNwYW4iLCAiY29udGVudCIpOworICAgIGVudHJ5RWxlbWVudC5hcHBlbmRDaGlsZChjb250ZW50
KTsKKyAgICB2YXIgdGl0bGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJ0aXRsZSIs
IHRpdGxlKTsKKyAgICBjb250ZW50LmFwcGVuZENoaWxkKHRpdGxlRWxlbWVudCk7CisgICAgaWYg
KGxhYmVsKSB7CisgICAgICAgIHZhciBsYWJlbEVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJzcGFu
IiwgImxhYmVsIiwgbGFiZWwpOworICAgICAgICBjb250ZW50LmFwcGVuZENoaWxkKGxhYmVsRWxl
bWVudCk7CisgICAgfQorICAgIGVudHJ5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92
ZXIiLCB0aGlzLl9oYW5kbGVFbnRyeU1vdXNlT3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAg
cmV0dXJuIGVudHJ5RWxlbWVudDsKK307CisKKy8qKgorICogQHBhcmFtIHshU3RyaW5nfSB0aXRs
ZQorICogQHBhcmFtIHshU3RyaW5nfSBhY3Rpb25OYW1lCisgKiBAcmV0dXJuIHshRWxlbWVudH0K
KyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0ZUFjdGlvbkVudHJ5RWxlbWVu
dCA9IGZ1bmN0aW9uKHRpdGxlLCBhY3Rpb25OYW1lKSB7CisgICAgdmFyIGVudHJ5RWxlbWVudCA9
IGNyZWF0ZUVsZW1lbnQoImRpdiIsICJzdWdnZXN0aW9uLWVudHJ5Iik7CisgICAgZW50cnlFbGVt
ZW50LnRhYkluZGV4ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0YXNldC5hY3Rpb24gPSBhY3Rp
b25OYW1lOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJjb250ZW50
Iik7CisgICAgZW50cnlFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHZhciB0aXRs
ZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJzcGFuIiwgInRpdGxlIiwgdGl0bGUpOworICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKKyAgICBlbnRyeUVsZW1lbnQuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faGFuZGxlRW50cnlNb3VzZU92ZXIuYmluZCh0
aGlzKSwgZmFsc2UpOworICAgIHJldHVybiBlbnRyeUVsZW1lbnQ7Cit9OworCitTdWdnZXN0aW9u
UGlja2VyLnByb3RvdHlwZS5fbGF5b3V0ID0gZnVuY3Rpb24oKSB7CisgICAgdGhpcy5fY29udGFp
bmVyRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoImRpdiIsICJzdWdnZXN0aW9uLWxpc3QiKTsKKyAg
ICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
aGFuZGxlRW50cnlDbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9jb25maWcuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAg
ICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVN1Z2dlc3Rp
b25FbnRyeUVsZW1lbnQodGhpcy5fY29uZmlnLmxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXNbaV0s
IHRoaXMuX2NvbmZpZy5zdWdnZXN0aW9uTGFiZWxzW2ldLCB0aGlzLl9jb25maWcuc3VnZ2VzdGlv
blZhbHVlc1tpXSkpOworICAgIH0KKyAgICBpZiAodGhpcy5fY29uZmlnLnNob3dPdGhlckRhdGVF
bnRyeSkgeworICAgICAgICAvLyBBZGQgc2VwYXJhdG9yCisgICAgICAgIHZhciBzZXBhcmF0b3Ig
PSBjcmVhdGVFbGVtZW50KCJkaXYiLCAic2VwYXJhdG9yIik7CisgICAgICAgIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VwYXJhdG9yKTsKKworICAgICAgICAvLyBBZGQgIk90
aGVyLi4uIiBlbnRyeQorICAgICAgICB2YXIgb3RoZXJFbnRyeSA9IHRoaXMuX2NyZWF0ZUFjdGlv
bkVudHJ5RWxlbWVudCh0aGlzLl9jb25maWcub3RoZXJEYXRlTGFiZWwsICJvcGVuQ2FsZW5kYXJQ
aWNrZXIiKTsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChvdGhl
ckVudHJ5KTsKKyAgICB9CisgICAgdGhpcy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250
YWluZXJFbGVtZW50KTsKKworICAgIC8vIFRvIG1lYXN1cmUgdGhlIHJlcXVpcmVkIHdpZHRoLCB3
ZSBmaXJzdCBzZXQgdGhlIGNsYXNzIHRvICJtZWFzdXJpbmctd2lkdGgiIHdoaWNoCisgICAgLy8g
bGVmdCBhbGlnbnMgYWxsIHRoZSBjb250ZW50IGluY2x1ZGluZyBsYWJlbC4KKyAgICB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQoIm1lYXN1cmluZy13aWR0aCIpOworICAgIHZh
ciBtYXhDb250ZW50V2lkdGggPSAwOworICAgIGlmICh0eXBlb2YgdGhpcy5fY29uZmlnLmlucHV0
V2lkdGggPT09ICJudW1iZXIiKQorICAgICAgICBtYXhDb250ZW50V2lkdGggPSB0aGlzLl9jb25m
aWcuaW5wdXRXaWR0aDsKKyAgICB2YXIgY29udGVudEVsZW1lbnRzID0gdGhpcy5fY29udGFpbmVy
RWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJjb250ZW50Iik7CisgICAgZm9yICh2YXIg
aT0wOyBpIDwgY29udGVudEVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIG1heENvbnRl
bnRXaWR0aCA9IE1hdGgubWF4KG1heENvbnRlbnRXaWR0aCwgY29udGVudEVsZW1lbnRzW2ldLm9m
ZnNldFdpZHRoKTsKKyAgICB9CisgICAgdmFyIExpc3RCb3JkZXIgPSAyOworICAgIHZhciBkZXNp
cmVkV2luZG93V2lkdGggPSBtYXhDb250ZW50V2lkdGggKyBMaXN0Qm9yZGVyOworICAgIHZhciB0
b3RhbEhlaWdodCA9IExpc3RCb3JkZXI7CisgICAgdmFyIG1heEhlaWdodCA9IDA7CisgICAgdmFy
IGVudHJ5Q291bnQgPSAwOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5jaGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBub2RlID0gdGhp
cy5fY29udGFpbmVyRWxlbWVudC5jaGlsZE5vZGVzW2ldOworICAgICAgICBpZiAobm9kZS5jbGFz
c0xpc3QuY29udGFpbnMoInN1Z2dlc3Rpb24tZW50cnkiKSkKKyAgICAgICAgICAgIGVudHJ5Q291
bnQrKzsKKyAgICAgICAgdG90YWxIZWlnaHQgKz0gbm9kZS5vZmZzZXRIZWlnaHQ7CisgICAgICAg
IGlmIChtYXhIZWlnaHQgPT09IDAgJiYgZW50cnlDb3VudCA9PSBTdWdnZXN0aW9uUGlja2VyLk51
bWJlck9mVmlzaWJsZUVudHJpZXMpCisgICAgICAgICAgICBtYXhIZWlnaHQgPSB0b3RhbEhlaWdo
dDsKKyAgICB9CisgICAgdmFyIGRlc2lyZWRXaW5kb3dIZWlnaHQgPSB0b3RhbEhlaWdodDsKKyAg
ICBpZiAobWF4SGVpZ2h0ICE9PSAwICYmIHRvdGFsSGVpZ2h0ID4gbWF4SGVpZ2h0KSB7CisgICAg
ICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc3R5bGUubWF4SGVpZ2h0ID0gKG1heEhlaWdodCAt
IExpc3RCb3JkZXIpICsgInB4IjsKKyAgICAgICAgZGVzaXJlZFdpbmRvd1dpZHRoICs9IGdldFNj
cm9sbGJhcldpZHRoKCk7CisgICAgICAgIGRlc2lyZWRXaW5kb3dIZWlnaHQgPSBtYXhIZWlnaHQ7
CisgICAgfQorICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgibWVh
c3VyaW5nLXdpZHRoIik7CisKKyAgICByZXNpemVXaW5kb3coZGVzaXJlZFdpbmRvd1dpZHRoLCBk
ZXNpcmVkV2luZG93SGVpZ2h0KTsKK307CisKKy8qKgorICogQHBhcmFtIHshRWxlbWVudH0gZW50
cnkKKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuc2VsZWN0RW50cnkgPSBmdW5jdGlv
bihlbnRyeSkgeworICAgIGlmICh0eXBlb2YgZW50cnkuZGF0YXNldC52YWx1ZSAhPT0gInVuZGVm
aW5lZCIpIHsKKyAgICAgICAgdGhpcy5zdWJtaXRWYWx1ZShlbnRyeS5kYXRhc2V0LnZhbHVlKTsK
KyAgICB9IGVsc2UgaWYgKGVudHJ5LmRhdGFzZXQuYWN0aW9uID09PSAib3BlbkNhbGVuZGFyUGlj
a2VyIikgeworICAgICAgICBvcGVuQ2FsZW5kYXJQaWNrZXIoKTsKKyAgICB9Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlw
ZS5faGFuZGxlRW50cnlDbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0g
ZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoInN1Z2dlc3Rpb24tZW50
cnkiKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5zZWxlY3RF
bnRyeShlbnRyeSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICog
QHJldHVybiB7P0VsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5k
Rmlyc3RWaXNpYmxlRW50cnkgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2Nyb2xsVG9wID0gdGhp
cy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlz
Ll9jb250YWluZXJFbGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGlsZE5vZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIHZhciBub2RlID0gY2hpbGROb2Rlc1tp
XTsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8ICFu
b2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmIChub2RlLm9mZnNldFRvcCArIG5vZGUub2Zmc2V0SGVpZ2h0
IC0gc2Nyb2xsVG9wID4gU3VnZ2VzdGlvblBpY2tlci5WaXNpYmxlRW50cnlUaHJlc2hvbGRIZWln
aHQpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9
OworCisvKioKKyAqIEByZXR1cm4gez9FbGVtZW50fQorICovCitTdWdnZXN0aW9uUGlja2VyLnBy
b3RvdHlwZS5fZmluZExhc3RWaXNpYmxlRW50cnkgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2Ny
b2xsQm90dG9tID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3AgKyB0aGlzLl9jb250
YWluZXJFbGVtZW50Lm9mZnNldEhlaWdodDsKKyAgICB2YXIgY2hpbGROb2RlcyA9IHRoaXMuX2Nv
bnRhaW5lckVsZW1lbnQuY2hpbGROb2RlczsKKyAgICBmb3IgKHZhciBpID0gY2hpbGROb2Rlcy5s
ZW5ndGggLSAxOyBpID49IDA7IGktLSl7CisgICAgICAgIHZhciBub2RlID0gY2hpbGROb2Rlc1tp
XTsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8ICFu
b2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKQorICAgICAgICAgICAg
Y29udGludWU7CisgICAgICAgIGlmIChzY3JvbGxCb3R0b20gLSBub2RlLm9mZnNldFRvcCA+IFN1
Z2dlc3Rpb25QaWNrZXIuVmlzaWJsZUVudHJ5VGhyZXNob2xkSGVpZ2h0KQorICAgICAgICAgICAg
cmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKworLyoqCisgKiBAcGFy
YW0geyFFdmVudH0gZXZlbnQKKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRs
ZUJvZHlLZXlEb3duID0gZnVuY3Rpb24oZXZlbnQpIHsKKyAgICB2YXIgZXZlbnRIYW5kbGVkID0g
ZmFsc2U7CisgICAgdmFyIGtleSA9IGV2ZW50LmtleUlkZW50aWZpZXI7CisgICAgaWYgKGtleSA9
PT0gIlUrMDAxQiIpIHsgLy8gRVNDCisgICAgICAgIHRoaXMuaGFuZGxlQ2FuY2VsKCk7CisgICAg
ICAgIGV2ZW50SGFuZGxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIlVwIikgewor
ICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50LmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRT
aWJsaW5nOyBub2RlICYmIG5vZGU7IG5vZGUgPSBub2RlLnByZXZpb3VzRWxlbWVudFNpYmxpbmcp
IHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5jbGFzc0xpc3QuY29udGFpbnMoInN1Z2dlc3Rp
b24tZW50cnkiKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0ZvY3VzQnlNb3VzZSA9
IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3VzKCk7CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLnN1Z2dl
c3Rpb24tZW50cnk6bGFzdC1jaGlsZCIpLmZvY3VzKCk7CisgICAgICAgIH0KKyAgICAgICAgZXZl
bnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PSAiRG93biIpIHsKKyAgICAg
ICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5j
bGFzc0xpc3QuY29udGFpbnMoInN1Z2dlc3Rpb24tZW50cnkiKSkgeworICAgICAgICAgICAgZm9y
ICh2YXIgbm9kZSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQubmV4dEVsZW1lbnRTaWJsaW5nOyBu
b2RlICYmIG5vZGU7IG5vZGUgPSBub2RlLm5leHRFbGVtZW50U2libGluZykgeworICAgICAgICAg
ICAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKSB7
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzRm9jdXNCeU1vdXNlID0gZmFsc2U7CisgICAg
ICAgICAgICAgICAgICAgIG5vZGUuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgdGhpcy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuc3VnZ2VzdGlvbi1lbnRyeTpm
aXJzdC1jaGlsZCIpLmZvY3VzKCk7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnRIYW5kbGVkID0g
dHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0gIkVudGVyIikgeworICAgICAgICB0aGlzLnNl
bGVjdEVudHJ5KGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpOworICAgICAgICBldmVudEhhbmRsZWQg
PSB0cnVlOworICAgIH0gZWxzZSBpZiAoa2V5ID09PSAiUGFnZVVwIikgeworICAgICAgICB0aGlz
Ll9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCAtPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNs
aWVudEhlaWdodDsKKyAgICAgICAgLy8gU2Nyb2xsaW5nIGNhdXNlcyBtb3VzZW92ZXIgZXZlbnQg
dG8gYmUgY2FsbGVkIGFuZCB0aGF0IHRyaWVzIHRvIG1vdmUgdGhlIGZvY3VzIHRvby4KKyAgICAg
ICAgLy8gVG8gcHJldmVudCBmbGlja2VyaW5nIHdlIHdvbid0IGZvY3VzIGlmIHRoZSBjdXJyZW50
IGZvY3VzIHdhcyBjYXVzZWQgYnkgdGhlIG1vdXNlLgorICAgICAgICBpZiAoIXRoaXMuX2lzRm9j
dXNCeU1vdXNlKQorICAgICAgICAgICAgdGhpcy5fZmluZEZpcnN0VmlzaWJsZUVudHJ5KCkuZm9j
dXMoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9
PT0gIlBhZ2VEb3duIikgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRv
cCArPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgaWYgKCF0
aGlzLl9pc0ZvY3VzQnlNb3VzZSkKKyAgICAgICAgICAgIHRoaXMuX2ZpbmRMYXN0VmlzaWJsZUVu
dHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAg
aWYgKGV2ZW50SGFuZGxlZCkKKyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJv
dG90eXBlLl9oYW5kbGVFbnRyeU1vdXNlT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFy
IGVudHJ5ID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoInN1Z2dl
c3Rpb24tZW50cnkiKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhp
cy5faXNGb2N1c0J5TW91c2UgPSB0cnVlOworICAgIGVudHJ5LmZvY3VzKCk7CisgICAgZXZlbnQu
cHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50Cisg
Ki8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVNb3VzZU91dCA9IGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgaWYgKCFkb2N1bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250
YWlucygic3VnZ2VzdGlvbi1lbnRyeSIpKQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5faXNG
b2N1c0J5TW91c2UgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIoKTsK
KyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAv
V2ViQ29yZS5neXAKaW5kZXggOTY3NjMyNjlmMjlkMGEwMTUwY2RmNjk5ZTAwN2MxZDgxODhiZmEw
OS4uNWZhZDE3N2I1N2ZjMWIyY2RmNTcwY2NkOTNiOTY4Y2Q4Mzc4OTFiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTk0Niw2ICs5NDYsOCBAQAogICAgICAgICAg
ICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5k
YXJQaWNrZXIuY3NzJywKICAgICAgICAgICAgICcuLi9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxl
bmRhclBpY2tlci5qcycsCisgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3Vn
Z2VzdGlvblBpY2tlci5jc3MnLAorICAgICAgICAgICAgJy4uL1Jlc291cmNlcy9wYWdlcG9wdXBz
L3N1Z2dlc3Rpb25QaWNrZXIuanMnLAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ291dHB1dHMn
OiBbCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0NhbGVu
ZGFyUGlja2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRGF0
ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGlt
ZUNob29zZXJJbXBsLmNwcAppbmRleCA2OTcxOGRjYjYzMWVkNDJkNjk5MmFkYzRjZDBhODMyMzg1
YWQxMWZhLi41YWI3OTg0OWY2ZTI2YjFhMmQ2ODZlZDQ0YmNjNzZiYjVhNTVlMjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNwcApA
QCAtODcsNiArODcsNyBAQCB2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1lbnQo
V2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKIAogICAgIGFkZFN0cmluZygiPCFET0NU
WVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRlcik7
CiAgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzLCBzaXplb2YoV2Vi
Q29yZTo6cGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6c3Vn
Z2VzdGlvblBpY2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OnN1Z2dlc3Rpb25QaWNrZXJDc3MpKTsK
ICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcywgc2l6ZW9mKFdl
YkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CiAgICAgQ1N0cmluZyBleHRyYVN0eWxlID0gV2Vi
Q29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNhbGVuZGFyUGlja2VyU3R5
bGVTaGVldCgpOwogICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQpAQCAtMTA5LDYgKzExMCw3
IEBAIHZvaWQgRGF0ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1
bWVudFdyaXRlciYgd3JpdGVyKQogICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVyKTsKIAogICAg
IHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzLCBzaXplb2YoV2ViQ29yZTo6
cGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpzdWdnZXN0aW9u
UGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpzdWdnZXN0aW9uUGlja2VySnMpKTsKICAgICB3cml0
ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBzaXplb2YoV2ViQ29yZTo6Y2Fs
ZW5kYXJQaWNrZXJKcykpOwogICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwgd3Jp
dGVyKTsKIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZjc0NDcz
ZjAyZTUyOGI0MTBjYjI2MjI5NTk5OWIyNTljMjIxMWRlLi4zZjdkZGJiZjgyMTk3ZDA2NmM3M2Rl
ODgxOTY1YTZlY2UwMmVkM2RiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMjIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1Z2dlc3Rpb25QaWNrZXIgdG8gQ2FsZW5kYXJQaWNr
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3MjAx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBNYW51
YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbDogQWRkZWQgdGVzdHMgZm9yIFN1Z2dl
c3Rpb25QaWNrZXIuCisKIDIwMTItMDktMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1c21h
bm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgbW9kdWxlIGhlYWRlciBpbmNs
dWRlcyBwcml2YXRlIGRlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvZm9ybXMv
Y2FsZW5kYXItcGlja2VyLmh0bWwgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIu
aHRtbAppbmRleCA0MzhlYjZmNmY2ODUwZmY0MmFiMTllN2VlMjE3ZDA5NTE5NDc2NzIyLi4xNjM1
MGJlZmEzZTkzYmU0Mjg3OGIwM2RlMDQxZjhmNDdlNWU0YjY5IDEwMDY0NAotLS0gYS9NYW51YWxU
ZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAorKysgYi9NYW51YWxUZXN0cy9mb3Jtcy9j
YWxlbmRhci1waWNrZXIuaHRtbApAQCAtMjMsNiArMjMsOCBAQCBpZnJhbWUgewogIDxvcHRpb24+
RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24+SmFwYW5lc2U8L29wdGlvbj4KICA8b3B0aW9uPkFy
YWJpYzwvb3B0aW9uPgorIDxvcHRpb24+d2l0aCBkYXRhbGlzdDwvb3B0aW9uPgorIDxvcHRpb24+
d2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CiA8L3NlbGVjdD4KIAogPGRpdj48aW5wdXQgdHlw
ZT0idGV4dCIgaWQ9ImRhdGUiPjwvZGl2PgpAQCAtNjgsNiArNzAsNzkgQEAgdmFyIGFyYWJpY0Fy
Z3VtZW50cyA9IHsKICAgICBzdGVwIDogMSwKICAgICBtYXggOiAnMjAyMC0wNS0xNScsCiB9Owor
dmFyIGRhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2FsZTogJ2VuLVVTJywKKyAgICBtb250
aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdNYXkn
LCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVyJywg
J05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFiZWxzIDogWydTdW4nLCAnTW9uJywg
J1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwKKyAgICB0b2RheUxhYmVsIDogJ1Rv
ZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAgICBjYW5jZWxMYWJlbCA6ICdDYW5j
ZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3RlcCA6IDEsCisgICAgbWF4IDogJzIw
OTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXMgOiBbJzIwMTItMDEtMDEnLCAnMjAxMi0w
Ni0wMycsICcyMDEyLTA5LTA2JywgJzIwMTItMTItMjQnXSwKKyAgICBsb2NhbGl6ZWRTdWdnZXN0
aW9uVmFsdWVzIDogWycxLzEvMTInLCAnNi8zLzEyJywgJzkvNi8xMicsICcxMi8yNC8xMiddLAor
ICAgIHN1Z2dlc3Rpb25MYWJlbHMgOiBbJycsICdCaXJ0aGRheScsICcnLCAnQ2hyaXN0bWFzJ10s
CisgICAgc2hvd090aGVyRGF0ZUVudHJ5OiB0cnVlLAorICAgIG90aGVyRGF0ZUxhYmVsOiAnT3Ro
ZXIuLi4nLAorICAgIGlucHV0V2lkdGg6IDEyNworfTsKK3ZhciBsb25nRGF0YWxpc3RBcmd1bWVu
dHMgPSB7CisgICAgbG9jYWxlOiAnZW4tVVMnLAorICAgIG1vbnRoTGFiZWxzIDogWydKYW51YXJ5
JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywKKyAgICAnSnVs
eScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1i
ZXInXSwKKyAgICBkYXlMYWJlbHMgOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUn
LCAnRnJpJywgJ1NhdCddLAorICAgIHRvZGF5TGFiZWwgOiAnVG9kYXknLAorICAgIGNsZWFyTGFi
ZWwgOiAnQ2xlYXInLAorICAgIGNhbmNlbExhYmVsIDogJ0NhbmNlbCcsCisgICAgd2Vla1N0YXJ0
RGF5IDogMCwKKyAgICBzdGVwIDogMSwKKyAgICBtYXggOiAnMjA5OS0xMi0zMScsCisgICAgc3Vn
Z2VzdGlvblZhbHVlczogWyIyMDEyLTAxLTAxIiwgIjIwMTItMDEtMDIiLCAiMjAxMi0wMS0wMyIs
ICIyMDEyLTAxLTA0IiwKKyAgICAgICAgIjIwMTItMDEtMDUiLCAiMjAxMi0wMS0wNiIsICIyMDEy
LTAxLTA3IiwgIjIwMTItMDEtMDgiLCAiMjAxMi0wMS0wOSIsCisgICAgICAgICIyMDEyLTAxLTEw
IiwgIjIwMTItMDEtMTEiLCAiMjAxMi0wMS0xMiIsICIyMDEyLTAxLTEzIiwgIjIwMTItMDEtMTQi
LAorICAgICAgICAiMjAxMi0wMS0xNSIsICIyMDEyLTAxLTE2IiwgIjIwMTItMDEtMTciLCAiMjAx
Mi0wMS0xOCIsICIyMDEyLTAxLTE5IiwKKyAgICAgICAgIjIwMTItMDEtMjAiLCAiMjAxMi0wMS0y
MSIsICIyMDEyLTAxLTIyIiwgIjIwMTItMDEtMjMiLCAiMjAxMi0wMS0yNCIsCisgICAgICAgICIy
MDEyLTAxLTI1IiwgIjIwMTItMDEtMjYiLCAiMjAxMi0wMS0yNyIsICIyMDEyLTAxLTI4IiwgIjIw
MTItMDEtMjkiLAorICAgICAgICAiMjAxMi0wMS0zMCIsICIyMDEyLTAxLTMxIiwgIjIwMTItMDIt
MDEiLCAiMjAxMi0wMi0wMiIsICIyMDEyLTAyLTAzIiwKKyAgICAgICAgIjIwMTItMDItMDQiLCAi
MjAxMi0wMi0wNSIsICIyMDEyLTAyLTA2IiwgIjIwMTItMDItMDciLCAiMjAxMi0wMi0wOCIsCisg
ICAgICAgICIyMDEyLTAyLTA5IiwgIjIwMTItMDItMTAiLCAiMjAxMi0wMi0xMSIsICIyMDEyLTAy
LTEyIiwgIjIwMTItMDItMTMiLAorICAgICAgICAiMjAxMi0wMi0xNCIsICIyMDEyLTAyLTE1Iiwg
IjIwMTItMDItMTYiLCAiMjAxMi0wMi0xNyIsICIyMDEyLTAyLTE4IiwKKyAgICAgICAgIjIwMTIt
MDItMTkiLCAiMjAxMi0wMi0yMCIsICIyMDEyLTAyLTIxIiwgIjIwMTItMDItMjIiLCAiMjAxMi0w
Mi0yMyIsCisgICAgICAgICIyMDEyLTAyLTI0IiwgIjIwMTItMDItMjUiLCAiMjAxMi0wMi0yNiIs
ICIyMDEyLTAyLTI3IiwgIjIwMTItMDItMjgiLAorICAgICAgICAiMjAxMi0wMi0yOSIsICIyMDEy
LTAzLTAxIiwgIjIwMTItMDMtMDIiLCAiMjAxMi0wMy0wMyIsICIyMDEyLTAzLTA0IiwKKyAgICAg
ICAgIjIwMTItMDMtMDUiLCAiMjAxMi0wMy0wNiIsICIyMDEyLTAzLTA3IiwgIjIwMTItMDMtMDgi
LCAiMjAxMi0wMy0wOSIsCisgICAgICAgICIyMDEyLTAzLTEwIiwgIjIwMTItMDMtMTEiLCAiMjAx
Mi0wMy0xMiIsICIyMDEyLTAzLTEzIiwgIjIwMTItMDMtMTQiLAorICAgICAgICAiMjAxMi0wMy0x
NSIsICIyMDEyLTAzLTE2IiwgIjIwMTItMDMtMTciLCAiMjAxMi0wMy0xOCIsICIyMDEyLTAzLTE5
IiwKKyAgICAgICAgIjIwMTItMDMtMjAiLCAiMjAxMi0wMy0yMSIsICIyMDEyLTAzLTIyIiwgIjIw
MTItMDMtMjMiLCAiMjAxMi0wMy0yNCIsCisgICAgICAgICIyMDEyLTAzLTI1IiwgIjIwMTItMDMt
MjYiLCAiMjAxMi0wMy0yNyIsICIyMDEyLTAzLTI4IiwgIjIwMTItMDMtMjkiLAorICAgICAgICAi
MjAxMi0wMy0zMCIsICIyMDEyLTAzLTMxIl0sCisgICAgbG9jYWxpemVkU3VnZ2VzdGlvblZhbHVl
czogWyIxLzEvMTIiLCAiMS8yLzEyIiwgIjEvMy8xMiIsICIxLzQvMTIiLAorICAgICAgICAiMS81
LzEyIiwgIjEvNi8xMiIsICIxLzcvMTIiLCAiMS84LzEyIiwgIjEvOS8xMiIsICIxLzEwLzEyIiwg
IjEvMTEvMTIiLAorICAgICAgICAiMS8xMi8xMiIsICIxLzEzLzEyIiwgIjEvMTQvMTIiLCAiMS8x
NS8xMiIsICIxLzE2LzEyIiwgIjEvMTcvMTIiLAorICAgICAgICAiMS8xOC8xMiIsICIxLzE5LzEy
IiwgIjEvMjAvMTIiLCAiMS8yMS8xMiIsICIxLzIyLzEyIiwgIjEvMjMvMTIiLAorICAgICAgICAi
MS8yNC8xMiIsICIxLzI1LzEyIiwgIjEvMjYvMTIiLCAiMS8yNy8xMiIsICIxLzI4LzEyIiwgIjEv
MjkvMTIiLAorICAgICAgICAiMS8zMC8xMiIsICIxLzMxLzEyIiwgIjIvMS8xMiIsICIyLzIvMTIi
LCAiMi8zLzEyIiwgIjIvNC8xMiIsICIyLzUvMTIiLAorICAgICAgICAiMi82LzEyIiwgIjIvNy8x
MiIsICIyLzgvMTIiLCAiMi85LzEyIiwgIjIvMTAvMTIiLCAiMi8xMS8xMiIsICIyLzEyLzEyIiwK
KyAgICAgICAgIjIvMTMvMTIiLCAiMi8xNC8xMiIsICIyLzE1LzEyIiwgIjIvMTYvMTIiLCAiMi8x
Ny8xMiIsICIyLzE4LzEyIiwKKyAgICAgICAgIjIvMTkvMTIiLCAiMi8yMC8xMiIsICIyLzIxLzEy
IiwgIjIvMjIvMTIiLCAiMi8yMy8xMiIsICIyLzI0LzEyIiwKKyAgICAgICAgIjIvMjUvMTIiLCAi
Mi8yNi8xMiIsICIyLzI3LzEyIiwgIjIvMjgvMTIiLCAiMi8yOS8xMiIsICIzLzEvMTIiLAorICAg
ICAgICAiMy8yLzEyIiwgIjMvMy8xMiIsICIzLzQvMTIiLCAiMy81LzEyIiwgIjMvNi8xMiIsICIz
LzcvMTIiLCAiMy84LzEyIiwKKyAgICAgICAgIjMvOS8xMiIsICIzLzEwLzEyIiwgIjMvMTEvMTIi
LCAiMy8xMi8xMiIsICIzLzEzLzEyIiwgIjMvMTQvMTIiLCAKKyAgICAgICAgIjMvMTUvMTIiLCAi
My8xNi8xMiIsICIzLzE3LzEyIiwgIjMvMTgvMTIiLCAiMy8xOS8xMiIsICIzLzIwLzEyIiwKKyAg
ICAgICAgIjMvMjEvMTIiLCAiMy8yMi8xMiIsICIzLzIzLzEyIiwgIjMvMjQvMTIiLCAiMy8yNS8x
MiIsICIzLzI2LzEyIiwKKyAgICAgICAgIjMvMjcvMTIiLCAiMy8yOC8xMiIsICIzLzI5LzEyIiwg
IjMvMzAvMTIiLCAiMy8zMS8xMiJdLAorICAgIHN1Z2dlc3Rpb25MYWJlbHM6IFsiVG9kYXkiLCAi
VG9tb3Jyb3ciLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLAorICAgICAgICAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLAorICAgICAgICAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLAorICAgICAgICAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLAorICAgICAgICAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLAorICAgICAgICAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiJdLAorICAgIHNob3dPdGhlckRhdGVFbnRyeTogdHJ1ZSwKKyAgICBvdGhlckRh
dGVMYWJlbDogJ090aGVyLi4uJywKKyAgICBpbnB1dFdpZHRoOiAxMjcKK307CiAKIGZ1bmN0aW9u
IG9wZW5DYWxlbmRhcihhcmdzKSB7CiAgICAgdmFyIGZyYW1lID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ2lmcmFtZScpWzBdOwpAQCAtNzcsNiArMTUyLDEwIEBAIGZ1bmN0aW9uIG9w
ZW5DYWxlbmRhcihhcmdzKSB7CiAgICAgY29tbW9uQ3NzTGluay5yZWwgPSAnc3R5bGVzaGVldCc7
CiAgICAgY29tbW9uQ3NzTGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5jc3M/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7
CiAgICAgZG9jLmhlYWQuYXBwZW5kQ2hpbGQoY29tbW9uQ3NzTGluayk7CisgICAgdmFyIHN1Z2dl
c3Rpb25QaWNrZXJDc3NMaW5rID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKKyAgICBzdWdn
ZXN0aW9uUGlja2VyQ3NzTGluay5yZWwgPSAnc3R5bGVzaGVldCc7CisgICAgc3VnZ2VzdGlvblBp
Y2tlckNzc0xpbmsuaHJlZiA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBv
cHVwcy9zdWdnZXN0aW9uUGlja2VyLmNzcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAg
ICBkb2MuaGVhZC5hcHBlbmRDaGlsZChzdWdnZXN0aW9uUGlja2VyQ3NzTGluayk7CiAgICAgdmFy
IGxpbmsgPSBkb2MuY3JlYXRlRWxlbWVudCgnbGluaycpOwogICAgIGxpbmsucmVsID0gJ3N0eWxl
c2hlZXQnOwogICAgIGxpbmsuaHJlZiA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5jc3M/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7
CkBAIC04NCw2ICsxNjMsOSBAQCBmdW5jdGlvbiBvcGVuQ2FsZW5kYXIoYXJncykgewogICAgIHZh
ciBjb21tb25Kc1NjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICBjb21t
b25Kc1NjcmlwdC5zcmMgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1
cHMvcGlja2VyQ29tbW9uLmpzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKGNvbW1vbkpzU2NyaXB0KTsKKyAgICB2YXIgc3VnZ2VzdGlvblBpY2tl
ckpzU2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOworICAgIHN1Z2dlc3Rpb25Q
aWNrZXJKc1NjcmlwdC5zcmMgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKKyAg
ICBkb2MuYm9keS5hcHBlbmRDaGlsZChzdWdnZXN0aW9uUGlja2VySnNTY3JpcHQpOwogICAgIHZh
ciBzY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CiAgICAgc2NyaXB0LnNyYyA9
ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tl
ci5qcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKICAgICBkb2MuYm9keS5hcHBlbmRDaGls
ZChzY3JpcHQpOwpAQCAtMTIxLDYgKzIwMywxMiBAQCBmdW5jdGlvbiBzZWxlY3RlZChzZWxlY3Qp
IHsKICAgICBjYXNlIDI6CiAgICAgICAgIG9wZW5DYWxlbmRhcihhcmFiaWNBcmd1bWVudHMpOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIG9wZW5DYWxlbmRhcihkYXRhbGlz
dEFyZ3VtZW50cyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDoKKyAgICAgICAgb3BlbkNh
bGVuZGFyKGxvbmdEYXRhbGlzdEFyZ3VtZW50cyk7CisgICAgICAgIGJyZWFrOwogICAgIH0KIH0K
IAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165102</attachid>
            <date>2012-09-21 03:03:11 -0700</date>
            <delta_ts>2012-09-21 04:43:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97201-20120921190234.patch</filename>
            <type>text/plain</type>
            <size>28369</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjhiYjNjOGVkMzIyYTg1
MjQwZTJkMWUzYjY2NTkwYzM4N2YzMTM0Mi4uNmFiYWMzYmIzM2JjZTQwMTA5OTYxYTg0YjEyMTk2
MGNjMmM3YjYwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA5LTIyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9u
UGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRh
clBpY2tlci4gSXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYXMgYSBkYXRhbGlzdCBVSSBidXQgaXQg
Y2FuIGJlIHVzZWQgaW5zaWRlIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1s
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU3VnZ2VzdGlvbiBQaWNrZXIgY2FuIGJlIHRlc3Rl
ZCBpbiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbC4KKworICAgICAgICAq
IFJlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAgICAoaW5pdGlh
bGl6ZSk6CisgICAgICAgIChvcGVuU3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzOgorICAgICAgICAoZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcyk6CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlv
blBpY2tlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdCk6CisgICAgICAg
ICguc3VnZ2VzdGlvbi1saXN0LWVudHJ5KToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QtZW50
cnk6Zm9jdXMpOgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpmb2N1cyAubGFiZWwp
OgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeSAuY29udGVudCk6CisgICAgICAgICgu
c3VnZ2VzdGlvbi1saXN0LWVudHJ5IC50aXRsZSk6CisgICAgICAgICguc3VnZ2VzdGlvbi1saXN0
LWVudHJ5IC5sYWJlbCk6CisgICAgICAgICgubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWxp
c3QtZW50cnkgLmxhYmVsKToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvcik6
CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qczogQWRk
ZWQuCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNr
ZXIudmFsaWRhdGVDb25maWcpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
Y2xlYW51cCk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fY3JlYXRlU3Vn
Z2VzdGlvbkVudHJ5RWxlbWVudCk6IENyZWF0ZXMgYW4gZW50cnkgdGhhdCB3aGVuIHNlbGVjdGVk
IHN1Ym1pdHMgdGhlIHZhbHVlLgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
X2NyZWF0ZUFjdGlvbkVudHJ5RWxlbWVudCk6IENyZWF0ZXMgYW4gZW50cnkgdGhhdCBjYXVzZXMg
YW4gYWN0aW9uLiAoZS54LiAiT3RoZXIuLi4iKQorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5w
cm90b3R5cGUuX21lYXN1cmVNYXhDb250ZW50V2lkdGgpOiBUZW1wb3JhcmlseSBsZWZ0IGFsaWdu
IGV2ZXJ5dGhpbmcgdG8gbWVhc3VyZSB0aGUgd2lkdGguCisgICAgICAgIChTdWdnZXN0aW9uUGlj
a2VyLnByb3RvdHlwZS5fZml4V2luZG93U2l6ZSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2Vy
LnByb3RvdHlwZS5fbGF5b3V0KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBl
LnNlbGVjdEVudHJ5KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5k
bGVFbnRyeUNsaWNrKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5k
Rmlyc3RWaXNpYmxlRW50cnkpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
X2ZpbmRMYXN0VmlzaWJsZUVudHJ5KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90
eXBlLl9oYW5kbGVCb2R5S2V5RG93bik6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3Rv
dHlwZS5faGFuZGxlRW50cnlNb3VzZU92ZXIpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5w
cm90b3R5cGUuX2hhbmRsZU1vdXNlT3V0KToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3Jl
Lmd5cDoKKwogMjAxMi0wOS0yMSAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4K
IAogICAgICAgICBQcmVwYXJlIENhbGVuZGFyUGlja2VyIHNvIHdlIGNhbiBhZGQgYW5vdGhlciBw
aWNrZXIsIFN1Z2dldGlvblBpY2tlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NjQ2
ZWM0MTQ2MmI0MWI3M2NkNjRiMjBkY2Q1N2ZkNWNlOTAxYzI0Li44ZGFhZjBlMGZiZmE2N2YwZWYy
YzVlMWEzZDgzYjc5MGIxMDgyMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDEzIEBACisyMDEyLTA5LTIyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3Jn
PgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9uUGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3JjL0RhdGVUaW1l
Q2hvb3NlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjp3
cml0ZURvY3VtZW50KTogQWRkIGpzL2NzcyBmb3IgU3VnZ2VzdGlvblBpY2tlciB0byBwYWdlIHBp
Y2tlci4KKwogMjAxMi0wOS0yMCAgVG9ueSBDaGFuZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdlZCBidWlsZCBmaXguIHdlYmtpdF91bml0X3Rlc3Rz
IGhhdmUgZ2xvYmFsIGNvbnN0cnVjdG9ycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzIGIvU291cmNlL1dlYkNvcmUvUmVz
b3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKaW5kZXggMjBhODVmZDRhOGE1YTVk
NTg0N2ZhODlhYzQ5MmY0ZDU0YTJjOGExOC4uZGI5ODRhNTM4YWM5OTFmY2RiZjljODk3YjU5YjQ0
NzBmNDRjNzBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1
cHMvY2FsZW5kYXJQaWNrZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvY2FsZW5kYXJQaWNrZXIuanMKQEAgLTI2OCwxMyArMjY4LDE4IEBAIENhbGVuZGFyUGlj
a2VyLnZhbGlkYXRlQ29uZmlnID0gZnVuY3Rpb24oY29uZmlnKSB7CiAgKi8KIGZ1bmN0aW9uIGlu
aXRpYWxpemUoYXJncykgewogICAgIHZhciBlcnJvclN0cmluZyA9IENhbGVuZGFyUGlja2VyLnZh
bGlkYXRlQ29uZmlnKGFyZ3MpOworICAgIGlmIChhcmdzLnN1Z2dlc3Rpb25WYWx1ZXMpCisgICAg
ICAgIGVycm9yU3RyaW5nID0gZXJyb3JTdHJpbmcgfHwgU3VnZ2VzdGlvblBpY2tlci52YWxpZGF0
ZUNvbmZpZyhhcmdzKQogICAgIGlmIChlcnJvclN0cmluZykgewogICAgICAgICB2YXIgbWFpbiA9
ICQoIm1haW4iKTsKICAgICAgICAgbWFpbi50ZXh0Q29udGVudCA9ICJJbnRlcm5hbCBlcnJvcjog
IiArIGVycm9yU3RyaW5nOwogICAgICAgICByZXNpemVXaW5kb3cobWFpbi5vZmZzZXRXaWR0aCwg
bWFpbi5vZmZzZXRIZWlnaHQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGdsb2JhbC5wYXJhbXMg
PSBhcmdzOwotICAgICAgICBvcGVuQ2FsZW5kYXJQaWNrZXIoKTsKKyAgICAgICAgaWYgKGdsb2Jh
bC5wYXJhbXMuc3VnZ2VzdGlvblZhbHVlcyAmJiBnbG9iYWwucGFyYW1zLnN1Z2dlc3Rpb25WYWx1
ZXMubGVuZ3RoKQorICAgICAgICAgICAgb3BlblN1Z2dlc3Rpb25QaWNrZXIoKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgb3BlbkNhbGVuZGFyUGlja2VyKCk7CiAgICAgfQogfQogCkBAIC0y
ODYsNiArMjkxLDExIEBAIGZ1bmN0aW9uIGNsb3NlUGlja2VyKCkgewogICAgIG1haW4uY2xhc3NO
YW1lID0gIiI7CiB9OwogCitmdW5jdGlvbiBvcGVuU3VnZ2VzdGlvblBpY2tlcigpIHsKKyAgICBj
bG9zZVBpY2tlcigpOworICAgIGdsb2JhbC5waWNrZXIgPSBuZXcgU3VnZ2VzdGlvblBpY2tlcigk
KCJtYWluIiksIGdsb2JhbC5wYXJhbXMpOworfTsKKwogZnVuY3Rpb24gb3BlbkNhbGVuZGFyUGlj
a2VyKCkgewogICAgIGNsb3NlUGlja2VyKCk7CiAgICAgZ2xvYmFsLnBpY2tlciA9IG5ldyBDYWxl
bmRhclBpY2tlcigkKCJtYWluIiksIGdsb2JhbC5wYXJhbXMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzCmluZGV4IGFkOTU0MmNj
NDA2Y2VjOTlhN2U0NjdhNGU1MTJkOWZkZjIwN2ZlY2EuLjViMDg3YjRmNjk4OTM3NTA3ZjEyNTBh
YmIxZTg4ZTc3YTNiOTUyMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9w
YWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGFnZXBvcHVwcy9waWNrZXJDb21tb24uanMKQEAgLTc2LDYgKzc2LDE4IEBAIGZ1bmN0aW9uIGdl
dFNjcm9sbGJhcldpZHRoKCkgewogfQogCiAvKioKKyAqIEBwYXJhbSB7IXN0cmluZ30gY2xhc3NO
YW1lCisgKiBAcmV0dXJuIHs/RWxlbWVudH0KKyAqLworZnVuY3Rpb24gZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcyhzZWxmTm9kZSwgY2xhc3NOYW1lKQoreworICAgIGZvciAodmFyIG5vZGUg
PSBzZWxmTm9kZTsgbm9kZSAmJiBub2RlICE9PSBzZWxmTm9kZS5vd25lckRvY3VtZW50OyBub2Rl
ID0gbm9kZS5wYXJlbnROb2RlKQorICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5F
TEVNRU5UX05PREUgJiYgbm9kZS5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSkKKyAgICAg
ICAgICAgIHJldHVybiBub2RlOworICAgIHJldHVybiBudWxsOworfTsKKworLyoqCiAgKiBAY29u
c3RydWN0b3IKICAqIEBwYXJhbSB7IUVsZW1lbnR9IGVsZW1lbnQKICAqIEBwYXJhbSB7IU9iamVj
dH0gY29uZmlnCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVw
cy9zdWdnZXN0aW9uUGlja2VyLmNzcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9w
dXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwN2Q5YTVjOTY3ZmM1YTJlNDAy
MjQ5ZTZhYTJkZmY2Mzc3MzdiZDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmNzcwpAQCAtMCwwICsxLDUyIEBA
Cisuc3VnZ2VzdGlvbi1saXN0IHsKKyAgICBsaXN0LXN0eWxlOiBub25lOworICAgIHBhZGRpbmc6
IDA7CisgICAgbWFyZ2luOiAwOworICAgIGZvbnQ6IC13ZWJraXQtc21hbGwtY29udHJvbDsKKyAg
ICBib3JkZXI6IDFweCBzb2xpZCAjN2Y5ZGI5OworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OworICAgIG92ZXJmbG93LXk6IGF1dG87Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QtZW50cnkgewor
ICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgICAgaGVpZ2h0OiAxLjczZW07CisgICAgbGluZS1o
ZWlnaHQ6IDEuNzNlbTsKKyAgICAtd2Via2l0LXNlbGVjdDogbm9uZTsKKyAgICBjdXJzb3I6IGRl
ZmF1bHQ7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QtZW50cnk6Zm9jdXMgeworICAgIGJhY2tncm91
bmQtY29sb3I6IGFjdGl2ZWxpc3Rib3hzZWxlY3Rpb247CisgICAgY29sb3I6IGFjdGl2ZWxpc3Ri
b3hzZWxlY3Rpb250ZXh0OworICAgIG91dGxpbmU6IG5vbmU7Cit9CisKKy5zdWdnZXN0aW9uLWxp
c3QtZW50cnk6Zm9jdXMgLmxhYmVsIHsKKyAgICBjb2xvcjogYWN0aXZlbGlzdGJveHNlbGVjdGlv
bnRleHQ7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QtZW50cnkgLmNvbnRlbnQgeworICAgIHBhZGRp
bmc6IDAgNHB4OworfQorCisuc3VnZ2VzdGlvbi1saXN0LWVudHJ5IC50aXRsZSB7Cit9CisKKy5z
dWdnZXN0aW9uLWxpc3QtZW50cnkgLmxhYmVsIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7Cisg
ICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgY29sb3I6ICM3MzczNzM7CisgICAgZmxvYXQ6IHJp
Z2h0OworICAgIG1hcmdpbi1yaWdodDogNHB4OworfQorCisubWVhc3VyaW5nLXdpZHRoIC5zdWdn
ZXN0aW9uLWxpc3QtZW50cnkgLmxhYmVsIHsKKyAgICBmbG9hdDogbm9uZTsKKyAgICBtYXJnaW4t
cmlnaHQ6IDA7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvciB7CisgICAgYm9yZGVy
LXRvcDogMXB4IHNvbGlkICNkY2RjZGM7CisgICAgaGVpZ2h0OiAwOworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qcyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTJlNWUyNDJhM2U1YmVkNWIwYzY4MWY4Y2UyOThlYjcxY2RkOGQ5OAotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dl
c3Rpb25QaWNrZXIuanMKQEAgLTAsMCArMSwyOTMgQEAKKyJ1c2Ugc3RyaWN0IjsKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisvKioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9IGVsZW1lbnQKKyAqIEBwYXJhbSB7IU9iamVjdH0g
Y29uZmlnCisgKi8KK2Z1bmN0aW9uIFN1Z2dlc3Rpb25QaWNrZXIoZWxlbWVudCwgY29uZmlnKSB7
CisgICAgUGlja2VyLmNhbGwodGhpcywgZWxlbWVudCwgY29uZmlnKTsKKyAgICB0aGlzLl9pc0Zv
Y3VzQnlNb3VzZSA9IGZhbHNlOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQgPSBudWxsOwor
ICAgIHRoaXMuX2xheW91dCgpOworICAgIHRoaXMuX2ZpeFdpbmRvd1NpemUoKTsKKyAgICB0aGlz
Ll9oYW5kbGVCb2R5S2V5RG93bkJvdW5kID0gdGhpcy5faGFuZGxlQm9keUtleURvd24uYmluZCh0
aGlzKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlz
Ll9oYW5kbGVCb2R5S2V5RG93bkJvdW5kKTsKKyAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5faGFuZGxlTW91c2VPdXQuYmluZCh0aGlzKSwgZmFsc2Up
OworfTsKK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQaWNrZXIu
cHJvdG90eXBlKTsKKworU3VnZ2VzdGlvblBpY2tlci5OdW1iZXJPZlZpc2libGVFbnRyaWVzID0g
MjA7CisKKy8vIEFuIGVudHJ5IG5lZWRzIHRvIGJlIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHMg
dmlzaWJsZSBmb3IgaXQgdG8gYmUgYSB2aXNpYmxlIGVudHJ5LgorU3VnZ2VzdGlvblBpY2tlci5W
aXNpYmxlRW50cnlUaHJlc2hvbGRIZWlnaHQgPSA0OworCitTdWdnZXN0aW9uUGlja2VyLkFjdGlv
bk5hbWVzID0geworICAgIE9wZW5DYWxlbmRhclBpY2tlcjogIm9wZW5DYWxlbmRhclBpY2tlciIK
K307CisKK1N1Z2dlc3Rpb25QaWNrZXIudmFsaWRhdGVDb25maWcgPSBmdW5jdGlvbihjb25maWcp
IHsKKyAgICBpZiAoY29uZmlnLnNob3dPdGhlckRhdGVFbnRyeSAmJiAhY29uZmlnLm90aGVyRGF0
ZUxhYmVsKQorICAgICAgICByZXR1cm4gIk5vIG90aGVyRGF0ZUxhYmVsLiI7CisgICAgaWYgKGNv
bmZpZy5zdWdnZXN0aW9uVmFsdWVzLmxlbmd0aCAhPT0gY29uZmlnLmxvY2FsaXplZFN1Z2dlc3Rp
b25WYWx1ZXMubGVuZ3RoKQorICAgICAgICByZXR1cm4gImxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1
ZXMubGVuZ3RoIG11c3QgZXF1YWwgc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGguIjsKKyAgICBpZiAo
Y29uZmlnLnN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoICE9PSBjb25maWcuc3VnZ2VzdGlvbkxhYmVs
cy5sZW5ndGgpCisgICAgICAgIHJldHVybiAic3VnZ2VzdGlvbkxhYmVscy5sZW5ndGggbXVzdCBl
cXVhbCBzdWdnZXN0aW9uVmFsdWVzLmxlbmd0aC4iOworICAgIGlmICh0eXBlb2YgY29uZmlnLmlu
cHV0V2lkdGggPT09ICJ1bmRlZmluZWQiKQorICAgICAgICByZXR1cm4gIk5vIGlucHV0V2lkdGgu
IjsKKyAgICByZXR1cm4gbnVsbDsKK307CisKK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLmNs
ZWFudXAgPSBmdW5jdGlvbigpIHsKKyAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJvdW5kLCBmYWxzZSk7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7IXN0cmluZ30gdGl0bGUKKyAqIEBwYXJhbSB7IXN0cmluZ30gbGFi
ZWwKKyAqIEBwYXJhbSB7IXN0cmluZ30gdmFsdWUKKyAqIEByZXR1cm4geyFFbGVtZW50fQorICov
CitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fY3JlYXRlU3VnZ2VzdGlvbkVudHJ5RWxlbWVu
dCA9IGZ1bmN0aW9uKHRpdGxlLCBsYWJlbCwgdmFsdWUpIHsKKyAgICB2YXIgZW50cnlFbGVtZW50
ID0gY3JlYXRlRWxlbWVudCgibGkiLCAic3VnZ2VzdGlvbi1saXN0LWVudHJ5Iik7CisgICAgZW50
cnlFbGVtZW50LnRhYkluZGV4ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0YXNldC52YWx1ZSA9
IHZhbHVlOworICAgIHZhciBjb250ZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJjb250ZW50
Iik7CisgICAgZW50cnlFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHZhciB0aXRs
ZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJzcGFuIiwgInRpdGxlIiwgdGl0bGUpOworICAgIGNv
bnRlbnQuYXBwZW5kQ2hpbGQodGl0bGVFbGVtZW50KTsKKyAgICBpZiAobGFiZWwpIHsKKyAgICAg
ICAgdmFyIGxhYmVsRWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoInNwYW4iLCAibGFiZWwiLCBsYWJl
bCk7CisgICAgICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKKyAgICB9Cisg
ICAgZW50cnlFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2hhbmRs
ZUVudHJ5TW91c2VPdmVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICByZXR1cm4gZW50cnlFbGVt
ZW50OworfTsKKworLyoqCisgKiBAcGFyYW0geyFzdHJpbmd9IHRpdGxlCisgKiBAcGFyYW0geyFz
dHJpbmd9IGFjdGlvbk5hbWUKKyAqIEByZXR1cm4geyFFbGVtZW50fQorICovCitTdWdnZXN0aW9u
UGlja2VyLnByb3RvdHlwZS5fY3JlYXRlQWN0aW9uRW50cnlFbGVtZW50ID0gZnVuY3Rpb24odGl0
bGUsIGFjdGlvbk5hbWUpIHsKKyAgICB2YXIgZW50cnlFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgi
bGkiLCAic3VnZ2VzdGlvbi1saXN0LWVudHJ5Iik7CisgICAgZW50cnlFbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0YXNldC5hY3Rpb24gPSBhY3Rpb25OYW1lOworICAg
IHZhciBjb250ZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJjb250ZW50Iik7CisgICAgZW50
cnlFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHZhciB0aXRsZUVsZW1lbnQgPSBj
cmVhdGVFbGVtZW50KCJzcGFuIiwgInRpdGxlIiwgdGl0bGUpOworICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQodGl0bGVFbGVtZW50KTsKKyAgICBlbnRyeUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdmVyIiwgdGhpcy5faGFuZGxlRW50cnlNb3VzZU92ZXIuYmluZCh0aGlzKSwgZmFsc2Up
OworICAgIHJldHVybiBlbnRyeUVsZW1lbnQ7Cit9OworCitTdWdnZXN0aW9uUGlja2VyLnByb3Rv
dHlwZS5fbWVhc3VyZU1heENvbnRlbnRXaWR0aCA9IGZ1bmN0aW9uKCkgeworICAgIC8vIFRvIG1l
YXN1cmUgdGhlIHJlcXVpcmVkIHdpZHRoLCB3ZSBmaXJzdCBzZXQgdGhlIGNsYXNzIHRvICJtZWFz
dXJpbmctd2lkdGgiIHdoaWNoCisgICAgLy8gbGVmdCBhbGlnbnMgYWxsIHRoZSBjb250ZW50IGlu
Y2x1ZGluZyBsYWJlbC4KKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5hZGQo
Im1lYXN1cmluZy13aWR0aCIpOworICAgIHZhciBtYXhDb250ZW50V2lkdGggPSAwOworICAgIGlm
ICh0eXBlb2YgdGhpcy5fY29uZmlnLmlucHV0V2lkdGggPT09ICJudW1iZXIiKQorICAgICAgICBt
YXhDb250ZW50V2lkdGggPSB0aGlzLl9jb25maWcuaW5wdXRXaWR0aDsKKyAgICB2YXIgY29udGVu
dEVsZW1lbnRzID0gdGhpcy5fY29udGFpbmVyRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJjb250ZW50Iik7CisgICAgZm9yICh2YXIgaT0wOyBpIDwgY29udGVudEVsZW1lbnRzLmxlbmd0
aDsgKytpKSB7CisgICAgICAgIG1heENvbnRlbnRXaWR0aCA9IE1hdGgubWF4KG1heENvbnRlbnRX
aWR0aCwgY29udGVudEVsZW1lbnRzW2ldLm9mZnNldFdpZHRoKTsKKyAgICB9CisgICAgdGhpcy5f
Y29udGFpbmVyRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJtZWFzdXJpbmctd2lkdGgiKTsKKyAg
ICByZXR1cm4gbWF4Q29udGVudFdpZHRoOworfTsKKworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5
cGUuX2ZpeFdpbmRvd1NpemUgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgTGlzdEJvcmRlciA9IDI7
CisgICAgdmFyIGRlc2lyZWRXaW5kb3dXaWR0aCA9IHRoaXMuX21lYXN1cmVNYXhDb250ZW50V2lk
dGgoKSArIExpc3RCb3JkZXI7CisgICAgdmFyIHRvdGFsSGVpZ2h0ID0gTGlzdEJvcmRlcjsKKyAg
ICB2YXIgbWF4SGVpZ2h0ID0gMDsKKyAgICB2YXIgZW50cnlDb3VudCA9IDA7CisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkTm9kZXMubGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgdmFyIG5vZGUgPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkTm9k
ZXNbaV07CisgICAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1s
aXN0LWVudHJ5IikpCisgICAgICAgICAgICBlbnRyeUNvdW50Kys7CisgICAgICAgIHRvdGFsSGVp
Z2h0ICs9IG5vZGUub2Zmc2V0SGVpZ2h0OworICAgICAgICBpZiAobWF4SGVpZ2h0ID09PSAwICYm
IGVudHJ5Q291bnQgPT0gU3VnZ2VzdGlvblBpY2tlci5OdW1iZXJPZlZpc2libGVFbnRyaWVzKQor
ICAgICAgICAgICAgbWF4SGVpZ2h0ID0gdG90YWxIZWlnaHQ7CisgICAgfQorICAgIHZhciBkZXNp
cmVkV2luZG93SGVpZ2h0ID0gdG90YWxIZWlnaHQ7CisgICAgaWYgKG1heEhlaWdodCAhPT0gMCAm
JiB0b3RhbEhlaWdodCA+IG1heEhlaWdodCkgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVt
ZW50LnN0eWxlLm1heEhlaWdodCA9IChtYXhIZWlnaHQgLSBMaXN0Qm9yZGVyKSArICJweCI7Cisg
ICAgICAgIGRlc2lyZWRXaW5kb3dXaWR0aCArPSBnZXRTY3JvbGxiYXJXaWR0aCgpOworICAgICAg
ICBkZXNpcmVkV2luZG93SGVpZ2h0ID0gbWF4SGVpZ2h0OworICAgIH0KKworICAgIHJlc2l6ZVdp
bmRvdyhkZXNpcmVkV2luZG93V2lkdGgsIGRlc2lyZWRXaW5kb3dIZWlnaHQpOworfTsKKworU3Vn
Z2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2xheW91dCA9IGZ1bmN0aW9uKCkgeworICAgIHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQgPSBjcmVhdGVFbGVtZW50KCJ1bCIsICJzdWdnZXN0aW9uLWxpc3Qi
KTsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5faGFuZGxlRW50cnlDbGljay5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCB0aGlzLl9jb25maWcuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGg7ICsraSkgewor
ICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2NyZWF0ZVN1
Z2dlc3Rpb25FbnRyeUVsZW1lbnQodGhpcy5fY29uZmlnLmxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1
ZXNbaV0sIHRoaXMuX2NvbmZpZy5zdWdnZXN0aW9uTGFiZWxzW2ldLCB0aGlzLl9jb25maWcuc3Vn
Z2VzdGlvblZhbHVlc1tpXSkpOworICAgIH0KKyAgICBpZiAodGhpcy5fY29uZmlnLnNob3dPdGhl
ckRhdGVFbnRyeSkgeworICAgICAgICAvLyBBZGQgc2VwYXJhdG9yCisgICAgICAgIHZhciBzZXBh
cmF0b3IgPSBjcmVhdGVFbGVtZW50KCJkaXYiLCAic2VwYXJhdG9yIik7CisgICAgICAgIHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQoc2VwYXJhdG9yKTsKKworICAgICAgICAvLyBB
ZGQgIk90aGVyLi4uIiBlbnRyeQorICAgICAgICB2YXIgb3RoZXJFbnRyeSA9IHRoaXMuX2NyZWF0
ZUFjdGlvbkVudHJ5RWxlbWVudCh0aGlzLl9jb25maWcub3RoZXJEYXRlTGFiZWwsIFN1Z2dlc3Rp
b25QaWNrZXIuQWN0aW9uTmFtZXMuT3BlbkNhbGVuZGFyUGlja2VyKTsKKyAgICAgICAgdGhpcy5f
Y29udGFpbmVyRWxlbWVudC5hcHBlbmRDaGlsZChvdGhlckVudHJ5KTsKKyAgICB9CisgICAgdGhp
cy5fZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jb250YWluZXJFbGVtZW50KTsKK307CisKKy8q
KgorICogQHBhcmFtIHshRWxlbWVudH0gZW50cnkKKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90
b3R5cGUuc2VsZWN0RW50cnkgPSBmdW5jdGlvbihlbnRyeSkgeworICAgIGlmICh0eXBlb2YgZW50
cnkuZGF0YXNldC52YWx1ZSAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgdGhpcy5zdWJtaXRW
YWx1ZShlbnRyeS5kYXRhc2V0LnZhbHVlKTsKKyAgICB9IGVsc2UgaWYgKGVudHJ5LmRhdGFzZXQu
YWN0aW9uID09PSBTdWdnZXN0aW9uUGlja2VyLkFjdGlvbk5hbWVzLk9wZW5DYWxlbmRhclBpY2tl
cikgeworICAgICAgICBvcGVuQ2FsZW5kYXJQaWNrZXIoKTsKKyAgICB9Cit9OworCisvKioKKyAq
IEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5f
aGFuZGxlRW50cnlDbGljayA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0gZW5j
bG9zaW5nTm9kZU9yU2VsZldpdGhDbGFzcyhldmVudC50YXJnZXQsICJzdWdnZXN0aW9uLWxpc3Qt
ZW50cnkiKTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5zZWxl
Y3RFbnRyeShlbnRyeSk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgor
ICogQHJldHVybiB7P0VsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9m
aW5kRmlyc3RWaXNpYmxlRW50cnkgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2Nyb2xsVG9wID0g
dGhpcy5fY29udGFpbmVyRWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0
aGlzLl9jb250YWluZXJFbGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBjaGlsZE5vZGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBub2RlID0gY2hpbGROb2Rl
c1tpXTsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8
ICFub2RlLmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1saXN0LWVudHJ5IikpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG5vZGUub2Zmc2V0VG9wICsgbm9kZS5vZmZz
ZXRIZWlnaHQgLSBzY3JvbGxUb3AgPiBTdWdnZXN0aW9uUGlja2VyLlZpc2libGVFbnRyeVRocmVz
aG9sZEhlaWdodCkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4g
bnVsbDsKK307CisKKy8qKgorICogQHJldHVybiB7P0VsZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25Q
aWNrZXIucHJvdG90eXBlLl9maW5kTGFzdFZpc2libGVFbnRyeSA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBzY3JvbGxCb3R0b20gPSB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCArIHRo
aXMuX2NvbnRhaW5lckVsZW1lbnQub2Zmc2V0SGVpZ2h0OworICAgIHZhciBjaGlsZE5vZGVzID0g
dGhpcy5fY29udGFpbmVyRWxlbWVudC5jaGlsZE5vZGVzOworICAgIGZvciAodmFyIGkgPSBjaGls
ZE5vZGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKXsKKyAgICAgICAgdmFyIG5vZGUgPSBjaGls
ZE5vZGVzW2ldOworICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSAhPT0gTm9kZS5FTEVNRU5UX05P
REUgfHwgIW5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdWdnZXN0aW9uLWxpc3QtZW50cnkiKSkK
KyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAoc2Nyb2xsQm90dG9tIC0gbm9kZS5v
ZmZzZXRUb3AgPiBTdWdnZXN0aW9uUGlja2VyLlZpc2libGVFbnRyeVRocmVzaG9sZEhlaWdodCkK
KyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICByZXR1cm4gbnVsbDsKK307CisK
Ky8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJv
dG90eXBlLl9oYW5kbGVCb2R5S2V5RG93biA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGV2
ZW50SGFuZGxlZCA9IGZhbHNlOworICAgIHZhciBrZXkgPSBldmVudC5rZXlJZGVudGlmaWVyOwor
ICAgIGlmIChrZXkgPT09ICJVKzAwMUIiKSB7IC8vIEVTQworICAgICAgICB0aGlzLmhhbmRsZUNh
bmNlbCgpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoa2V5
ID09ICJVcCIpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgJiYgZG9jdW1l
bnQuYWN0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoInN1Z2dlc3Rpb24tbGlzdC1lbnRy
eSIpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVu
dC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBub2RlOyBub2RlID0gbm9kZS5wcmV2aW91c0VsZW1l
bnRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5z
KCJzdWdnZXN0aW9uLWxpc3QtZW50cnkiKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9p
c0ZvY3VzQnlNb3VzZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3VzKCk7
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVlcnlT
ZWxlY3RvcigiLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpsYXN0LWNoaWxkIikuZm9jdXMoKTsKKyAg
ICAgICAgfQorICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoa2V5
ID09ICJEb3duIikgeworICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAmJiBkb2N1
bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1saXN0LWVu
dHJ5IikpIHsKKyAgICAgICAgICAgIGZvciAodmFyIG5vZGUgPSBkb2N1bWVudC5hY3RpdmVFbGVt
ZW50Lm5leHRFbGVtZW50U2libGluZzsgbm9kZTsgbm9kZSA9IG5vZGUubmV4dEVsZW1lbnRTaWJs
aW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKCJzdWdn
ZXN0aW9uLWxpc3QtZW50cnkiKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0ZvY3Vz
QnlNb3VzZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3VzKCk7CisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3Rv
cigiLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpmaXJzdC1jaGlsZCIpLmZvY3VzKCk7CisgICAgICAg
IH0KKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0g
IkVudGVyIikgeworICAgICAgICB0aGlzLnNlbGVjdEVudHJ5KGRvY3VtZW50LmFjdGl2ZUVsZW1l
bnQpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoa2V5ID09
PSAiUGFnZVVwIikgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCAt
PSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgLy8gU2Nyb2xs
aW5nIGNhdXNlcyBtb3VzZW92ZXIgZXZlbnQgdG8gYmUgY2FsbGVkIGFuZCB0aGF0IHRyaWVzIHRv
IG1vdmUgdGhlIGZvY3VzIHRvby4KKyAgICAgICAgLy8gVG8gcHJldmVudCBmbGlja2VyaW5nIHdl
IHdvbid0IGZvY3VzIGlmIHRoZSBjdXJyZW50IGZvY3VzIHdhcyBjYXVzZWQgYnkgdGhlIG1vdXNl
LgorICAgICAgICBpZiAoIXRoaXMuX2lzRm9jdXNCeU1vdXNlKQorICAgICAgICAgICAgdGhpcy5f
ZmluZEZpcnN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0g
dHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAgICB0aGlz
Ll9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCArPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNs
aWVudEhlaWdodDsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0ZvY3VzQnlNb3VzZSkKKyAgICAgICAg
ICAgIHRoaXMuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRI
YW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV2ZW50SGFuZGxlZCkKKyAgICAgICAgZXZl
bnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50
CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRyeU1vdXNlT3ZlciA9
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0gZW5jbG9zaW5nTm9kZU9yU2VsZldp
dGhDbGFzcyhldmVudC50YXJnZXQsICJzdWdnZXN0aW9uLWxpc3QtZW50cnkiKTsKKyAgICBpZiAo
IWVudHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5faXNGb2N1c0J5TW91c2UgPSB0cnVl
OworICAgIGVudHJ5LmZvY3VzKCk7CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisK
Ky8qKgorICogQHBhcmFtIHshRXZlbnR9IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJv
dG90eXBlLl9oYW5kbGVNb3VzZU91dCA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaWYgKCFkb2N1
bWVudC5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucygic3VnZ2VzdGlvbi1saXN0LWVu
dHJ5IikpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9pc0ZvY3VzQnlNb3VzZSA9IGZhbHNl
OworICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpOworICAgIGV2ZW50LnByZXZlbnRE
ZWZhdWx0KCk7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2Vi
Q29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAppbmRleCA5
Njc2MzI2OWYyOWQwYTAxNTBjZGY2OTllMDA3YzFkODE4OGJmYTA5Li41ZmFkMTc3YjU3ZmMxYjJj
ZGY1NzBjY2Q5M2I5NjhjZDgzNzg5MWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJD
b3JlLmd5cApAQCAtOTQ2LDYgKzk0Niw4IEBACiAgICAgICAgICAgJ2lucHV0cyc6IFsKICAgICAg
ICAgICAgICcuLi9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5jc3MnLAogICAg
ICAgICAgICAgJy4uL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzJywKKyAg
ICAgICAgICAgICcuLi9SZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmNzcycs
CisgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5q
cycsCiAgICAgICAgICAgXSwKICAgICAgICAgICAnb3V0cHV0cyc6IFsKICAgICAgICAgICAgICc8
KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS93ZWJraXQvQ2FsZW5kYXJQaWNrZXIuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwCmlu
ZGV4IDY5NzE4ZGNiNjMxZWQ0MmQ2OTkyYWRjNGNkMGE4MzIzODVhZDExZmEuLjVhYjc5ODQ5ZjZl
MjZiMWEyZDY4NmVkNDRiY2M3NmJiNWE1NWUyNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwCkBAIC04Nyw2ICs4Nyw3IEBAIHZv
aWQgRGF0ZVRpbWVDaG9vc2VySW1wbDo6d3JpdGVEb2N1bWVudChXZWJDb3JlOjpEb2N1bWVudFdy
aXRlciYgd3JpdGVyKQogCiAgICAgYWRkU3RyaW5nKCI8IURPQ1RZUEUgaHRtbD48aGVhZD48bWV0
YSBjaGFyc2V0PSdVVEYtOCc+PHN0eWxlPlxuIiwgd3JpdGVyKTsKICAgICB3cml0ZXIuYWRkRGF0
YShXZWJDb3JlOjpwaWNrZXJDb21tb25Dc3MsIHNpemVvZihXZWJDb3JlOjpwaWNrZXJDb21tb25D
c3MpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpzdWdnZXN0aW9uUGlja2VyQ3NzLCBz
aXplb2YoV2ViQ29yZTo6c3VnZ2VzdGlvblBpY2tlckNzcykpOwogICAgIHdyaXRlci5hZGREYXRh
KFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzLCBzaXplb2YoV2ViQ29yZTo6Y2FsZW5kYXJQaWNr
ZXJDc3MpKTsKICAgICBDU3RyaW5nIGV4dHJhU3R5bGUgPSBXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCktPmV4dHJhQ2FsZW5kYXJQaWNrZXJTdHlsZVNoZWV0KCk7CiAgICAgaWYg
KGV4dHJhU3R5bGUubGVuZ3RoKCkpCkBAIC0xMDksNiArMTEwLDcgQEAgdm9pZCBEYXRlVGltZUNo
b29zZXJJbXBsOjp3cml0ZURvY3VtZW50KFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyJiB3cml0ZXIp
CiAgICAgYWRkU3RyaW5nKCJ9XG4iLCB3cml0ZXIpOwogCiAgICAgd3JpdGVyLmFkZERhdGEoV2Vi
Q29yZTo6cGlja2VyQ29tbW9uSnMsIHNpemVvZihXZWJDb3JlOjpwaWNrZXJDb21tb25KcykpOwor
ICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnN1Z2dlc3Rpb25QaWNrZXJKcywgc2l6ZW9mKFdl
YkNvcmU6OnN1Z2dlc3Rpb25QaWNrZXJKcykpOwogICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6
OmNhbGVuZGFyUGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzKSk7CiAg
ICAgYWRkU3RyaW5nKCI8L3NjcmlwdD48L2JvZHk+XG4iLCB3cml0ZXIpOwogfQpkaWZmIC0tZ2l0
IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IGRmNzQ0NzNmMDJlNTI4YjQxMGNiMjYyMjk1
OTk5YjI1OWMyMjExZGUuLjNmN2RkYmJmODIxOTdkMDY2YzczZGU4ODE5NjVhNmVjZTAyZWQzZGIg
MTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAor
MjAxMi0wOS0yMiAgS2Vpc2hpIEhhdHRvcmkgIDxrZWlzaGlAd2Via2l0Lm9yZz4KKworICAgICAg
ICBBZGQgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRhclBpY2tlcgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcyMDEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVu
ZGFyLXBpY2tlci5odG1sOiBBZGRlZCB0ZXN0cyBmb3IgU3VnZ2VzdGlvblBpY2tlci4KKwogMjAx
Mi0wOS0yMCAgU2ltb24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBkaWdpYS5jb20+CiAKICAg
ICAgICAgW1F0XSBRdFdlYktpdCBtb2R1bGUgaGVhZGVyIGluY2x1ZGVzIHByaXZhdGUgZGVwZW5k
ZW5jaWVzCmRpZmYgLS1naXQgYS9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRt
bCBiL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sCmluZGV4IDQzOGViNmY2
ZjY4NTBmZjQyYWIxOWU3ZWUyMTdkMDk1MTk0NzY3MjIuLjE2MzUwYmVmYTNlOTNiZTQyODc4YjAz
ZGUwNDFmOGY0N2U1ZTRiNjkgMTAwNjQ0Ci0tLSBhL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFy
LXBpY2tlci5odG1sCisrKyBiL01hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1s
CkBAIC0yMyw2ICsyMyw4IEBAIGlmcmFtZSB7CiAgPG9wdGlvbj5FbmdsaXNoPC9vcHRpb24+CiAg
PG9wdGlvbj5KYXBhbmVzZTwvb3B0aW9uPgogIDxvcHRpb24+QXJhYmljPC9vcHRpb24+CisgPG9w
dGlvbj53aXRoIGRhdGFsaXN0PC9vcHRpb24+CisgPG9wdGlvbj53aXRoIGxvbmcgZGF0YWxpc3Q8
L29wdGlvbj4KIDwvc2VsZWN0PgogCiA8ZGl2PjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iZGF0ZSI+
PC9kaXY+CkBAIC02OCw2ICs3MCw3OSBAQCB2YXIgYXJhYmljQXJndW1lbnRzID0gewogICAgIHN0
ZXAgOiAxLAogICAgIG1heCA6ICcyMDIwLTA1LTE1JywKIH07Cit2YXIgZGF0YWxpc3RBcmd1bWVu
dHMgPSB7CisgICAgbG9jYWxlOiAnZW4tVVMnLAorICAgIG1vbnRoTGFiZWxzIDogWydKYW51YXJ5
JywgJ0ZlYnJ1YXJ5JywgJ01hcmNoJywgJ0FwcmlsJywgJ01heScsICdKdW5lJywKKyAgICAnSnVs
eScsICdBdWd1c3QnLCAnU2VwdGVtYmVyJywgJ09jdG9iZXInLCAnTm92ZW1iZXInLCAnRGVjZW1i
ZXInXSwKKyAgICBkYXlMYWJlbHMgOiBbJ1N1bicsICdNb24nLCAnVHVlJywgJ1dlZCcsICdUaHUn
LCAnRnJpJywgJ1NhdCddLAorICAgIHRvZGF5TGFiZWwgOiAnVG9kYXknLAorICAgIGNsZWFyTGFi
ZWwgOiAnQ2xlYXInLAorICAgIGNhbmNlbExhYmVsIDogJ0NhbmNlbCcsCisgICAgd2Vla1N0YXJ0
RGF5IDogMCwKKyAgICBzdGVwIDogMSwKKyAgICBtYXggOiAnMjA5OS0xMi0zMScsCisgICAgc3Vn
Z2VzdGlvblZhbHVlcyA6IFsnMjAxMi0wMS0wMScsICcyMDEyLTA2LTAzJywgJzIwMTItMDktMDYn
LCAnMjAxMi0xMi0yNCddLAorICAgIGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXMgOiBbJzEvMS8x
MicsICc2LzMvMTInLCAnOS82LzEyJywgJzEyLzI0LzEyJ10sCisgICAgc3VnZ2VzdGlvbkxhYmVs
cyA6IFsnJywgJ0JpcnRoZGF5JywgJycsICdDaHJpc3RtYXMnXSwKKyAgICBzaG93T3RoZXJEYXRl
RW50cnk6IHRydWUsCisgICAgb3RoZXJEYXRlTGFiZWw6ICdPdGhlci4uLicsCisgICAgaW5wdXRX
aWR0aDogMTI3Cit9OwordmFyIGxvbmdEYXRhbGlzdEFyZ3VtZW50cyA9IHsKKyAgICBsb2NhbGU6
ICdlbi1VUycsCisgICAgbW9udGhMYWJlbHMgOiBbJ0phbnVhcnknLCAnRmVicnVhcnknLCAnTWFy
Y2gnLCAnQXByaWwnLCAnTWF5JywgJ0p1bmUnLAorICAgICdKdWx5JywgJ0F1Z3VzdCcsICdTZXB0
ZW1iZXInLCAnT2N0b2JlcicsICdOb3ZlbWJlcicsICdEZWNlbWJlciddLAorICAgIGRheUxhYmVs
cyA6IFsnU3VuJywgJ01vbicsICdUdWUnLCAnV2VkJywgJ1RodScsICdGcmknLCAnU2F0J10sCisg
ICAgdG9kYXlMYWJlbCA6ICdUb2RheScsCisgICAgY2xlYXJMYWJlbCA6ICdDbGVhcicsCisgICAg
Y2FuY2VsTGFiZWwgOiAnQ2FuY2VsJywKKyAgICB3ZWVrU3RhcnREYXkgOiAwLAorICAgIHN0ZXAg
OiAxLAorICAgIG1heCA6ICcyMDk5LTEyLTMxJywKKyAgICBzdWdnZXN0aW9uVmFsdWVzOiBbIjIw
MTItMDEtMDEiLCAiMjAxMi0wMS0wMiIsICIyMDEyLTAxLTAzIiwgIjIwMTItMDEtMDQiLAorICAg
ICAgICAiMjAxMi0wMS0wNSIsICIyMDEyLTAxLTA2IiwgIjIwMTItMDEtMDciLCAiMjAxMi0wMS0w
OCIsICIyMDEyLTAxLTA5IiwKKyAgICAgICAgIjIwMTItMDEtMTAiLCAiMjAxMi0wMS0xMSIsICIy
MDEyLTAxLTEyIiwgIjIwMTItMDEtMTMiLCAiMjAxMi0wMS0xNCIsCisgICAgICAgICIyMDEyLTAx
LTE1IiwgIjIwMTItMDEtMTYiLCAiMjAxMi0wMS0xNyIsICIyMDEyLTAxLTE4IiwgIjIwMTItMDEt
MTkiLAorICAgICAgICAiMjAxMi0wMS0yMCIsICIyMDEyLTAxLTIxIiwgIjIwMTItMDEtMjIiLCAi
MjAxMi0wMS0yMyIsICIyMDEyLTAxLTI0IiwKKyAgICAgICAgIjIwMTItMDEtMjUiLCAiMjAxMi0w
MS0yNiIsICIyMDEyLTAxLTI3IiwgIjIwMTItMDEtMjgiLCAiMjAxMi0wMS0yOSIsCisgICAgICAg
ICIyMDEyLTAxLTMwIiwgIjIwMTItMDEtMzEiLCAiMjAxMi0wMi0wMSIsICIyMDEyLTAyLTAyIiwg
IjIwMTItMDItMDMiLAorICAgICAgICAiMjAxMi0wMi0wNCIsICIyMDEyLTAyLTA1IiwgIjIwMTIt
MDItMDYiLCAiMjAxMi0wMi0wNyIsICIyMDEyLTAyLTA4IiwKKyAgICAgICAgIjIwMTItMDItMDki
LCAiMjAxMi0wMi0xMCIsICIyMDEyLTAyLTExIiwgIjIwMTItMDItMTIiLCAiMjAxMi0wMi0xMyIs
CisgICAgICAgICIyMDEyLTAyLTE0IiwgIjIwMTItMDItMTUiLCAiMjAxMi0wMi0xNiIsICIyMDEy
LTAyLTE3IiwgIjIwMTItMDItMTgiLAorICAgICAgICAiMjAxMi0wMi0xOSIsICIyMDEyLTAyLTIw
IiwgIjIwMTItMDItMjEiLCAiMjAxMi0wMi0yMiIsICIyMDEyLTAyLTIzIiwKKyAgICAgICAgIjIw
MTItMDItMjQiLCAiMjAxMi0wMi0yNSIsICIyMDEyLTAyLTI2IiwgIjIwMTItMDItMjciLCAiMjAx
Mi0wMi0yOCIsCisgICAgICAgICIyMDEyLTAyLTI5IiwgIjIwMTItMDMtMDEiLCAiMjAxMi0wMy0w
MiIsICIyMDEyLTAzLTAzIiwgIjIwMTItMDMtMDQiLAorICAgICAgICAiMjAxMi0wMy0wNSIsICIy
MDEyLTAzLTA2IiwgIjIwMTItMDMtMDciLCAiMjAxMi0wMy0wOCIsICIyMDEyLTAzLTA5IiwKKyAg
ICAgICAgIjIwMTItMDMtMTAiLCAiMjAxMi0wMy0xMSIsICIyMDEyLTAzLTEyIiwgIjIwMTItMDMt
MTMiLCAiMjAxMi0wMy0xNCIsCisgICAgICAgICIyMDEyLTAzLTE1IiwgIjIwMTItMDMtMTYiLCAi
MjAxMi0wMy0xNyIsICIyMDEyLTAzLTE4IiwgIjIwMTItMDMtMTkiLAorICAgICAgICAiMjAxMi0w
My0yMCIsICIyMDEyLTAzLTIxIiwgIjIwMTItMDMtMjIiLCAiMjAxMi0wMy0yMyIsICIyMDEyLTAz
LTI0IiwKKyAgICAgICAgIjIwMTItMDMtMjUiLCAiMjAxMi0wMy0yNiIsICIyMDEyLTAzLTI3Iiwg
IjIwMTItMDMtMjgiLCAiMjAxMi0wMy0yOSIsCisgICAgICAgICIyMDEyLTAzLTMwIiwgIjIwMTIt
MDMtMzEiXSwKKyAgICBsb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzOiBbIjEvMS8xMiIsICIxLzIv
MTIiLCAiMS8zLzEyIiwgIjEvNC8xMiIsCisgICAgICAgICIxLzUvMTIiLCAiMS82LzEyIiwgIjEv
Ny8xMiIsICIxLzgvMTIiLCAiMS85LzEyIiwgIjEvMTAvMTIiLCAiMS8xMS8xMiIsCisgICAgICAg
ICIxLzEyLzEyIiwgIjEvMTMvMTIiLCAiMS8xNC8xMiIsICIxLzE1LzEyIiwgIjEvMTYvMTIiLCAi
MS8xNy8xMiIsCisgICAgICAgICIxLzE4LzEyIiwgIjEvMTkvMTIiLCAiMS8yMC8xMiIsICIxLzIx
LzEyIiwgIjEvMjIvMTIiLCAiMS8yMy8xMiIsCisgICAgICAgICIxLzI0LzEyIiwgIjEvMjUvMTIi
LCAiMS8yNi8xMiIsICIxLzI3LzEyIiwgIjEvMjgvMTIiLCAiMS8yOS8xMiIsCisgICAgICAgICIx
LzMwLzEyIiwgIjEvMzEvMTIiLCAiMi8xLzEyIiwgIjIvMi8xMiIsICIyLzMvMTIiLCAiMi80LzEy
IiwgIjIvNS8xMiIsCisgICAgICAgICIyLzYvMTIiLCAiMi83LzEyIiwgIjIvOC8xMiIsICIyLzkv
MTIiLCAiMi8xMC8xMiIsICIyLzExLzEyIiwgIjIvMTIvMTIiLAorICAgICAgICAiMi8xMy8xMiIs
ICIyLzE0LzEyIiwgIjIvMTUvMTIiLCAiMi8xNi8xMiIsICIyLzE3LzEyIiwgIjIvMTgvMTIiLAor
ICAgICAgICAiMi8xOS8xMiIsICIyLzIwLzEyIiwgIjIvMjEvMTIiLCAiMi8yMi8xMiIsICIyLzIz
LzEyIiwgIjIvMjQvMTIiLAorICAgICAgICAiMi8yNS8xMiIsICIyLzI2LzEyIiwgIjIvMjcvMTIi
LCAiMi8yOC8xMiIsICIyLzI5LzEyIiwgIjMvMS8xMiIsCisgICAgICAgICIzLzIvMTIiLCAiMy8z
LzEyIiwgIjMvNC8xMiIsICIzLzUvMTIiLCAiMy82LzEyIiwgIjMvNy8xMiIsICIzLzgvMTIiLAor
ICAgICAgICAiMy85LzEyIiwgIjMvMTAvMTIiLCAiMy8xMS8xMiIsICIzLzEyLzEyIiwgIjMvMTMv
MTIiLCAiMy8xNC8xMiIsIAorICAgICAgICAiMy8xNS8xMiIsICIzLzE2LzEyIiwgIjMvMTcvMTIi
LCAiMy8xOC8xMiIsICIzLzE5LzEyIiwgIjMvMjAvMTIiLAorICAgICAgICAiMy8yMS8xMiIsICIz
LzIyLzEyIiwgIjMvMjMvMTIiLCAiMy8yNC8xMiIsICIzLzI1LzEyIiwgIjMvMjYvMTIiLAorICAg
ICAgICAiMy8yNy8xMiIsICIzLzI4LzEyIiwgIjMvMjkvMTIiLCAiMy8zMC8xMiIsICIzLzMxLzEy
Il0sCisgICAgc3VnZ2VzdGlvbkxhYmVsczogWyJUb2RheSIsICJUb21vcnJvdyIsICIiLCAiIiwg
IiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsCisgICAgICAgICIiLCAiIiwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsCisgICAg
ICAgICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAi
IiwgIiIsICIiLCAiIiwgIiIsCisgICAgICAgICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsCisgICAgICAgICIiLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsCisgICAgICAgICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIl0sCisgICAg
c2hvd090aGVyRGF0ZUVudHJ5OiB0cnVlLAorICAgIG90aGVyRGF0ZUxhYmVsOiAnT3RoZXIuLi4n
LAorICAgIGlucHV0V2lkdGg6IDEyNworfTsKIAogZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3Mp
IHsKICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1l
JylbMF07CkBAIC03Nyw2ICsxNTIsMTAgQEAgZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsK
ICAgICBjb21tb25Dc3NMaW5rLnJlbCA9ICdzdHlsZXNoZWV0JzsKICAgICBjb21tb25Dc3NMaW5r
LmhyZWYgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2Vy
Q29tbW9uLmNzcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKICAgICBkb2MuaGVhZC5hcHBl
bmRDaGlsZChjb21tb25Dc3NMaW5rKTsKKyAgICB2YXIgc3VnZ2VzdGlvblBpY2tlckNzc0xpbmsg
PSBkb2MuY3JlYXRlRWxlbWVudCgnbGluaycpOworICAgIHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5r
LnJlbCA9ICdzdHlsZXNoZWV0JzsKKyAgICBzdWdnZXN0aW9uUGlja2VyQ3NzTGluay5ocmVmID0g
Jy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNr
ZXIuY3NzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOworICAgIGRvYy5oZWFkLmFwcGVuZENo
aWxkKHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5rKTsKICAgICB2YXIgbGluayA9IGRvYy5jcmVhdGVF
bGVtZW50KCdsaW5rJyk7CiAgICAgbGluay5yZWwgPSAnc3R5bGVzaGVldCc7CiAgICAgbGluay5o
cmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFy
UGlja2VyLmNzcz8nICsgKG5ldyBEYXRlKCkpLmdldFRpbWUoKTsKQEAgLTg0LDYgKzE2Myw5IEBA
IGZ1bmN0aW9uIG9wZW5DYWxlbmRhcihhcmdzKSB7CiAgICAgdmFyIGNvbW1vbkpzU2NyaXB0ID0g
ZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwogICAgIGNvbW1vbkpzU2NyaXB0LnNyYyA9ICcu
Li8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9waWNrZXJDb21tb24uanM/
JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoY29t
bW9uSnNTY3JpcHQpOworICAgIHZhciBzdWdnZXN0aW9uUGlja2VySnNTY3JpcHQgPSBkb2MuY3Jl
YXRlRWxlbWVudCgnc2NyaXB0Jyk7CisgICAgc3VnZ2VzdGlvblBpY2tlckpzU2NyaXB0LnNyYyA9
ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlj
a2VyLmpzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOworICAgIGRvYy5ib2R5LmFwcGVuZENo
aWxkKHN1Z2dlc3Rpb25QaWNrZXJKc1NjcmlwdCk7CiAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVh
dGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICBzY3JpcHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzPycgKyAobmV3IERhdGUo
KSkuZ2V0VGltZSgpOwogICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CkBAIC0xMjEs
NiArMjAzLDEyIEBAIGZ1bmN0aW9uIHNlbGVjdGVkKHNlbGVjdCkgewogICAgIGNhc2UgMjoKICAg
ICAgICAgb3BlbkNhbGVuZGFyKGFyYWJpY0FyZ3VtZW50cyk7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgMzoKKyAgICAgICAgb3BlbkNhbGVuZGFyKGRhdGFsaXN0QXJndW1lbnRzKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAgICBvcGVuQ2FsZW5kYXIobG9uZ0RhdGFsaXN0
QXJndW1lbnRzKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165118</attachid>
            <date>2012-09-21 04:43:29 -0700</date>
            <delta_ts>2012-09-23 20:47:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97201-20120921204253.patch</filename>
            <type>text/plain</type>
            <size>29992</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhZDQ3NDYwNjlmMWUx
OTg4ZTI5ZjEwMGY1YjU3ZTJkYzNmNjg2My4uZjI5NzVlNDk5ZGMxYjcyODhhNjYwZmEwNjAwZmEy
ZTk4ODJhNzE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTIyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9u
UGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRh
clBpY2tlci4gSXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYXMgYSBkYXRhbGlzdCBVSSBidXQgaXQg
Y2FuIGJlIHVzZWQgaW5zaWRlIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1s
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU3VnZ2VzdGlvbiBQaWNrZXIgY2FuIGJlIHRlc3Rl
ZCBpbiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbC4KKworICAgICAgICAq
IFJlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAgICAoaW5pdGlh
bGl6ZSk6CisgICAgICAgIChvcGVuU3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogUmVzb3Vy
Y2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzOgorICAgICAgICAoZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcyk6CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlv
blBpY2tlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdCk6CisgICAgICAg
ICguc3VnZ2VzdGlvbi1saXN0LWVudHJ5KToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QtZW50
cnk6Zm9jdXMpOgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpmb2N1cyAubGFiZWwp
OgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeSAuY29udGVudCk6CisgICAgICAgICgu
c3VnZ2VzdGlvbi1saXN0LWVudHJ5IC50aXRsZSk6CisgICAgICAgICguc3VnZ2VzdGlvbi1saXN0
LWVudHJ5IC5sYWJlbCk6CisgICAgICAgICgubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWxp
c3QtZW50cnkgLmxhYmVsKToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvcik6
CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qczogQWRk
ZWQuCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNr
ZXIudmFsaWRhdGVDb25maWcpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUu
Y2xlYW51cCk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fc2V0Q29sb3Jz
KTogQ3JlYXRlcyBjc3MgcnVsZXMgdGhhdCBzZXRzIGhpZ2hsaWdodCBjb2xvcnMuCisgICAgICAg
IChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fY3JlYXRlU3VnZ2VzdGlvbkVudHJ5RWxlbWVu
dCk6IENyZWF0ZXMgYW4gZW50cnkgdGhhdCB3aGVuIHNlbGVjdGVkIHN1Ym1pdHMgdGhlIHZhbHVl
LgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0ZUFjdGlvbkVudHJ5
RWxlbWVudCk6IENyZWF0ZXMgYW4gZW50cnkgdGhhdCBjYXVzZXMgYW4gYWN0aW9uLiAoZS54LiAi
T3RoZXIuLi4iKQorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX21lYXN1cmVN
YXhDb250ZW50V2lkdGgpOiBUZW1wb3JhcmlseSBsZWZ0IGFsaWduIGV2ZXJ5dGhpbmcgdG8gbWVh
c3VyZSB0aGUgd2lkdGguCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZml4
V2luZG93U2l6ZSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0
KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLnNlbGVjdEVudHJ5KToKKyAg
ICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRyeUNsaWNrKToKKyAg
ICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5kRmlyc3RWaXNpYmxlRW50cnkp
OgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2ZpbmRMYXN0VmlzaWJsZUVu
dHJ5KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVCb2R5S2V5
RG93bik6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5faGFuZGxlRW50cnlN
b3VzZU92ZXIpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZU1v
dXNlT3V0KToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKwogMjAxMi0wOS0y
MSAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIHVu
dXNlZCBmdW5jdGlvbnMgb2YgTG9jYWxpemVkRGF0ZS5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CmluZGV4IDhjYmRiNmUwN2VhODdhN2QzYTQ1NmRmMGQzZTZiMjVhODM2ZjdmNzEuLmQxMGViZTcz
NGQ3ZWE1YjA3NDI3NWZjYjk3YmJmYmVhNDE2YTY3M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTItMDktMjIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hp
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1Z2dlc3Rpb25QaWNrZXIgdG8gQ2FsZW5kYXJQ
aWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBz
cmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRhdGVUaW1lQ2hv
b3NlckltcGw6OndyaXRlRG9jdW1lbnQpOiBBZGQganMvY3NzIGZvciBTdWdnZXN0aW9uUGlja2Vy
IHRvIHBhZ2UgcGlja2VyLiBBZGQgaGlnaGxpZ2h0IGNvbG9yIHRvIGFyZ3MuCisKIDIwMTItMDkt
MjEgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWRkIGRh
dGFsaXN0IHN1Z2dlc3Rpb25zIGludG8gRGF0ZVRpbWVDaG9vc2VyUGFyYW1ldGVycwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2FsZW5kYXJQaWNrZXIu
anMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5q
cwppbmRleCAyMGE4NWZkNGE4YTVhNWQ1ODQ3ZmE4OWFjNDkyZjRkNTRhMmM4YTE4Li5kYjk4NGE1
MzhhYzk5MWZjZGJmOWM4OTdiNTliNDQ3MGY0NGM3MGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tlci5qcwpAQCAtMjY4LDEz
ICsyNjgsMTggQEAgQ2FsZW5kYXJQaWNrZXIudmFsaWRhdGVDb25maWcgPSBmdW5jdGlvbihjb25m
aWcpIHsKICAqLwogZnVuY3Rpb24gaW5pdGlhbGl6ZShhcmdzKSB7CiAgICAgdmFyIGVycm9yU3Ry
aW5nID0gQ2FsZW5kYXJQaWNrZXIudmFsaWRhdGVDb25maWcoYXJncyk7CisgICAgaWYgKGFyZ3Mu
c3VnZ2VzdGlvblZhbHVlcykKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBlcnJvclN0cmluZyB8fCBT
dWdnZXN0aW9uUGlja2VyLnZhbGlkYXRlQ29uZmlnKGFyZ3MpCiAgICAgaWYgKGVycm9yU3RyaW5n
KSB7CiAgICAgICAgIHZhciBtYWluID0gJCgibWFpbiIpOwogICAgICAgICBtYWluLnRleHRDb250
ZW50ID0gIkludGVybmFsIGVycm9yOiAiICsgZXJyb3JTdHJpbmc7CiAgICAgICAgIHJlc2l6ZVdp
bmRvdyhtYWluLm9mZnNldFdpZHRoLCBtYWluLm9mZnNldEhlaWdodCk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgZ2xvYmFsLnBhcmFtcyA9IGFyZ3M7Ci0gICAgICAgIG9wZW5DYWxlbmRhclBpY2tl
cigpOworICAgICAgICBpZiAoZ2xvYmFsLnBhcmFtcy5zdWdnZXN0aW9uVmFsdWVzICYmIGdsb2Jh
bC5wYXJhbXMuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGgpCisgICAgICAgICAgICBvcGVuU3VnZ2Vz
dGlvblBpY2tlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvcGVuQ2FsZW5kYXJQaWNr
ZXIoKTsKICAgICB9CiB9CiAKQEAgLTI4Niw2ICsyOTEsMTEgQEAgZnVuY3Rpb24gY2xvc2VQaWNr
ZXIoKSB7CiAgICAgbWFpbi5jbGFzc05hbWUgPSAiIjsKIH07CiAKK2Z1bmN0aW9uIG9wZW5TdWdn
ZXN0aW9uUGlja2VyKCkgeworICAgIGNsb3NlUGlja2VyKCk7CisgICAgZ2xvYmFsLnBpY2tlciA9
IG5ldyBTdWdnZXN0aW9uUGlja2VyKCQoIm1haW4iKSwgZ2xvYmFsLnBhcmFtcyk7Cit9OworCiBm
dW5jdGlvbiBvcGVuQ2FsZW5kYXJQaWNrZXIoKSB7CiAgICAgY2xvc2VQaWNrZXIoKTsKICAgICBn
bG9iYWwucGlja2VyID0gbmV3IENhbGVuZGFyUGlja2VyKCQoIm1haW4iKSwgZ2xvYmFsLnBhcmFt
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9waWNr
ZXJDb21tb24uanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9waWNrZXJD
b21tb24uanMKaW5kZXggYWQ5NTQyY2M0MDZjZWM5OWE3ZTQ2N2E0ZTUxMmQ5ZmRmMjA3ZmVjYS4u
NWIwODdiNGY2OTg5Mzc1MDdmMTI1MGFiYjFlODhlNzdhM2I5NTIwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tlckNvbW1vbi5qcwpAQCAtNzYs
NiArNzYsMTggQEAgZnVuY3Rpb24gZ2V0U2Nyb2xsYmFyV2lkdGgoKSB7CiB9CiAKIC8qKgorICog
QHBhcmFtIHshc3RyaW5nfSBjbGFzc05hbWUKKyAqIEByZXR1cm4gez9FbGVtZW50fQorICovCitm
dW5jdGlvbiBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKHNlbGZOb2RlLCBjbGFzc05hbWUp
Cit7CisgICAgZm9yICh2YXIgbm9kZSA9IHNlbGZOb2RlOyBub2RlICYmIG5vZGUgIT09IHNlbGZO
b2RlLm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpCisgICAgICAgIGlmIChu
b2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBub2RlLmNsYXNzTGlzdC5jb250
YWlucyhjbGFzc05hbWUpKQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgcmV0dXJuIG51
bGw7Cit9OworCisvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQHBhcmFtIHshRWxlbWVudH0gZWxl
bWVudAogICogQHBhcmFtIHshT2JqZWN0fSBjb25maWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzIGIvU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5jc3MKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYWNhNDdkZGZmNzlhYTIzNzAwNzMxYmIxZDIxMjBkZGYzYzJkYTE3MAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNr
ZXIuY3NzCkBAIC0wLDAgKzEsNDMgQEAKKy5zdWdnZXN0aW9uLWxpc3QgeworICAgIGxpc3Qtc3R5
bGU6IG5vbmU7CisgICAgcGFkZGluZzogMDsKKyAgICBtYXJnaW46IDA7CisgICAgZm9udDogLXdl
YmtpdC1zbWFsbC1jb250cm9sOworICAgIGJvcmRlcjogMXB4IHNvbGlkICM3ZjlkYjk7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgb3ZlcmZsb3cteTogYXV0bzsKK30KKworLnN1
Z2dlc3Rpb24tbGlzdC1lbnRyeSB7CisgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKKyAgICBoZWln
aHQ6IDEuNzNlbTsKKyAgICBsaW5lLWhlaWdodDogMS43M2VtOworICAgIC13ZWJraXQtc2VsZWN0
OiBub25lOworICAgIGN1cnNvcjogZGVmYXVsdDsKK30KKworLnN1Z2dlc3Rpb24tbGlzdC1lbnRy
eTpmb2N1cyB7CisgICAgb3V0bGluZTogbm9uZTsKK30KKworLnN1Z2dlc3Rpb24tbGlzdC1lbnRy
eSAuY29udGVudCB7CisgICAgcGFkZGluZzogMCA0cHg7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3Qt
ZW50cnkgLmxhYmVsIHsKKyAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjog
cmlnaHQ7CisgICAgY29sb3I6ICM3MzczNzM7CisgICAgZmxvYXQ6IHJpZ2h0OworICAgIG1hcmdp
bi1yaWdodDogNHB4OworfQorCisubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWxpc3QtZW50
cnkgLmxhYmVsIHsKKyAgICBmbG9hdDogbm9uZTsKKyAgICBtYXJnaW4tcmlnaHQ6IDA7Cit9CisK
Ky5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvciB7CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlk
ICNkY2RjZGM7CisgICAgaGVpZ2h0OiAwOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
UmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTQ1
YWE4Nzg1NTZiNjdmOGNmNmRjNmQzMjhlYzY5ZDVkMWM4ZDgwMQotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMK
QEAgLTAsMCArMSwzMTEgQEAKKyJ1c2Ugc3RyaWN0IjsKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisvKioKKyAqIEBwYXJh
bSB7IUVsZW1lbnR9IGVsZW1lbnQKKyAqIEBwYXJhbSB7IU9iamVjdH0gY29uZmlnCisgKi8KK2Z1
bmN0aW9uIFN1Z2dlc3Rpb25QaWNrZXIoZWxlbWVudCwgY29uZmlnKSB7CisgICAgUGlja2VyLmNh
bGwodGhpcywgZWxlbWVudCwgY29uZmlnKTsKKyAgICB0aGlzLl9pc0ZvY3VzQnlNb3VzZSA9IGZh
bHNlOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQgPSBudWxsOworICAgIHRoaXMuX3NldENv
bG9ycygpOworICAgIHRoaXMuX2xheW91dCgpOworICAgIHRoaXMuX2ZpeFdpbmRvd1NpemUoKTsK
KyAgICB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJvdW5kID0gdGhpcy5faGFuZGxlQm9keUtleURv
d24uYmluZCh0aGlzKTsKKyAgICBkb2N1bWVudC5ib2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRv
d24iLCB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJvdW5kKTsKKyAgICB0aGlzLl9lbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5faGFuZGxlTW91c2VPdXQuYmluZCh0aGlz
KSwgZmFsc2UpOworfTsKK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShQaWNrZXIucHJvdG90eXBlKTsKKworU3VnZ2VzdGlvblBpY2tlci5OdW1iZXJPZlZpc2libGVF
bnRyaWVzID0gMjA7CisKKy8vIEFuIGVudHJ5IG5lZWRzIHRvIGJlIGF0IGxlYXN0IHRoaXMgbWFu
eSBwaXhlbHMgdmlzaWJsZSBmb3IgaXQgdG8gYmUgYSB2aXNpYmxlIGVudHJ5LgorU3VnZ2VzdGlv
blBpY2tlci5WaXNpYmxlRW50cnlUaHJlc2hvbGRIZWlnaHQgPSA0OworCitTdWdnZXN0aW9uUGlj
a2VyLkFjdGlvbk5hbWVzID0geworICAgIE9wZW5DYWxlbmRhclBpY2tlcjogIm9wZW5DYWxlbmRh
clBpY2tlciIKK307CisKK1N1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MgPSAic3VnZ2Vz
dGlvbi1saXN0LWVudHJ5IjsKKworU3VnZ2VzdGlvblBpY2tlci52YWxpZGF0ZUNvbmZpZyA9IGZ1
bmN0aW9uKGNvbmZpZykgeworICAgIGlmIChjb25maWcuc2hvd090aGVyRGF0ZUVudHJ5ICYmICFj
b25maWcub3RoZXJEYXRlTGFiZWwpCisgICAgICAgIHJldHVybiAiTm8gb3RoZXJEYXRlTGFiZWwu
IjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvciAmJiAhY29uZmlnLnN1
Z2dlc3Rpb25IaWdobGlnaHRDb2xvcikKKyAgICAgICAgcmV0dXJuICJObyBzdWdnZXN0aW9uSGln
aGxpZ2h0Q29sb3IuIjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29s
b3IgJiYgIWNvbmZpZy5zdWdnZXN0aW9uSGlnaGxpZ2h0VGV4dENvbG9yKQorICAgICAgICByZXR1
cm4gIk5vIHN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3IuIjsKKyAgICBpZiAoY29uZmlnLnN1
Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoICE9PSBjb25maWcubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVl
cy5sZW5ndGgpCisgICAgICAgIHJldHVybiAibG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5n
dGggbXVzdCBlcXVhbCBzdWdnZXN0aW9uVmFsdWVzLmxlbmd0aC4iOworICAgIGlmIChjb25maWcu
c3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggIT09IGNvbmZpZy5zdWdnZXN0aW9uTGFiZWxzLmxlbmd0
aCkKKyAgICAgICAgcmV0dXJuICJzdWdnZXN0aW9uTGFiZWxzLmxlbmd0aCBtdXN0IGVxdWFsIHN1
Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoLiI7CisgICAgaWYgKHR5cGVvZiBjb25maWcuaW5wdXRXaWR0
aCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJldHVybiAiTm8gaW5wdXRXaWR0aC4iOworICAg
IHJldHVybiBudWxsOworfTsKKworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX3NldENvbG9y
cyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXh0ID0gIi5zdWdnZXN0aW9uLWxpc3QtZW50cnk6
Zm9jdXMge1wKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIiArIHRoaXMuX2NvbmZpZy5zdWdn
ZXN0aW9uSGlnaGxpZ2h0Q29sb3IgKyAiO1wKKyAgICAgICAgY29sb3I6ICIgKyB0aGlzLl9jb25m
aWcuc3VnZ2VzdGlvbkhpZ2hsaWdodFRleHRDb2xvciArICI7IH0iOworICAgIHRleHQgKz0gIi5z
dWdnZXN0aW9uLWxpc3QtZW50cnk6Zm9jdXMgLmxhYmVsIHsgY29sb3I6ICIgKyB0aGlzLl9jb25m
aWcuc3VnZ2VzdGlvbkhpZ2hsaWdodFRleHRDb2xvciArICI7IH0iOworICAgIGRvY3VtZW50Lmhl
YWQuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgic3R5bGUiLCBudWxsLCB0ZXh0KSk7Cit9Owor
CitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5jbGVhbnVwID0gZnVuY3Rpb24oKSB7CisgICAg
ZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5faGFuZGxl
Qm9keUtleURvd25Cb3VuZCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFzdHJpbmd9
IHRpdGxlCisgKiBAcGFyYW0geyFzdHJpbmd9IGxhYmVsCisgKiBAcGFyYW0geyFzdHJpbmd9IHZh
bHVlCisgKiBAcmV0dXJuIHshRWxlbWVudH0KKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5
cGUuX2NyZWF0ZVN1Z2dlc3Rpb25FbnRyeUVsZW1lbnQgPSBmdW5jdGlvbih0aXRsZSwgbGFiZWws
IHZhbHVlKSB7CisgICAgdmFyIGVudHJ5RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoImxpIiwgU3Vn
Z2VzdGlvblBpY2tlci5MaXN0RW50cnlDbGFzcyk7CisgICAgZW50cnlFbGVtZW50LnRhYkluZGV4
ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0YXNldC52YWx1ZSA9IHZhbHVlOworICAgIHZhciBj
b250ZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJjb250ZW50Iik7CisgICAgZW50cnlFbGVt
ZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHZhciB0aXRsZUVsZW1lbnQgPSBjcmVhdGVF
bGVtZW50KCJzcGFuIiwgInRpdGxlIiwgdGl0bGUpOworICAgIGNvbnRlbnQuYXBwZW5kQ2hpbGQo
dGl0bGVFbGVtZW50KTsKKyAgICBpZiAobGFiZWwpIHsKKyAgICAgICAgdmFyIGxhYmVsRWxlbWVu
dCA9IGNyZWF0ZUVsZW1lbnQoInNwYW4iLCAibGFiZWwiLCBsYWJlbCk7CisgICAgICAgIGNvbnRl
bnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKKyAgICB9CisgICAgZW50cnlFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2hhbmRsZUVudHJ5TW91c2VPdmVyLmJp
bmQodGhpcyksIGZhbHNlKTsKKyAgICByZXR1cm4gZW50cnlFbGVtZW50OworfTsKKworLyoqCisg
KiBAcGFyYW0geyFzdHJpbmd9IHRpdGxlCisgKiBAcGFyYW0geyFzdHJpbmd9IGFjdGlvbk5hbWUK
KyAqIEByZXR1cm4geyFFbGVtZW50fQorICovCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5f
Y3JlYXRlQWN0aW9uRW50cnlFbGVtZW50ID0gZnVuY3Rpb24odGl0bGUsIGFjdGlvbk5hbWUpIHsK
KyAgICB2YXIgZW50cnlFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgibGkiLCBTdWdnZXN0aW9uUGlj
a2VyLkxpc3RFbnRyeUNsYXNzKTsKKyAgICBlbnRyeUVsZW1lbnQudGFiSW5kZXggPSAwOworICAg
IGVudHJ5RWxlbWVudC5kYXRhc2V0LmFjdGlvbiA9IGFjdGlvbk5hbWU7CisgICAgdmFyIGNvbnRl
bnQgPSBjcmVhdGVFbGVtZW50KCJzcGFuIiwgImNvbnRlbnQiKTsKKyAgICBlbnRyeUVsZW1lbnQu
YXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgdmFyIHRpdGxlRWxlbWVudCA9IGNyZWF0ZUVsZW1l
bnQoInNwYW4iLCAidGl0bGUiLCB0aXRsZSk7CisgICAgY29udGVudC5hcHBlbmRDaGlsZCh0aXRs
ZUVsZW1lbnQpOworICAgIGVudHJ5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW92ZXIi
LCB0aGlzLl9oYW5kbGVFbnRyeU1vdXNlT3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgcmV0
dXJuIGVudHJ5RWxlbWVudDsKK307CisKKy8qKgorKiBAcmV0dXJuIHshbnVtYmVyfQorKi8KK1N1
Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9tZWFzdXJlTWF4Q29udGVudFdpZHRoID0gZnVuY3Rp
b24oKSB7CisgICAgLy8gVG8gbWVhc3VyZSB0aGUgcmVxdWlyZWQgd2lkdGgsIHdlIGZpcnN0IHNl
dCB0aGUgY2xhc3MgdG8gIm1lYXN1cmluZy13aWR0aCIgd2hpY2gKKyAgICAvLyBsZWZ0IGFsaWdu
cyBhbGwgdGhlIGNvbnRlbnQgaW5jbHVkaW5nIGxhYmVsLgorICAgIHRoaXMuX2NvbnRhaW5lckVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgibWVhc3VyaW5nLXdpZHRoIik7CisgICAgdmFyIG1heENvbnRl
bnRXaWR0aCA9IDA7CisgICAgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcuaW5wdXRXaWR0aCA9PT0g
Im51bWJlciIpCisgICAgICAgIG1heENvbnRlbnRXaWR0aCA9IHRoaXMuX2NvbmZpZy5pbnB1dFdp
ZHRoOworICAgIHZhciBjb250ZW50RWxlbWVudHMgPSB0aGlzLl9jb250YWluZXJFbGVtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoImNvbnRlbnQiKTsKKyAgICBmb3IgKHZhciBpPTA7IGkgPCBj
b250ZW50RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgbWF4Q29udGVudFdpZHRoID0g
TWF0aC5tYXgobWF4Q29udGVudFdpZHRoLCBjb250ZW50RWxlbWVudHNbaV0ub2Zmc2V0V2lkdGgp
OworICAgIH0KKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoIm1l
YXN1cmluZy13aWR0aCIpOworICAgIHJldHVybiBtYXhDb250ZW50V2lkdGg7Cit9OworCitTdWdn
ZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZml4V2luZG93U2l6ZSA9IGZ1bmN0aW9uKCkgeworICAg
IHZhciBMaXN0Qm9yZGVyID0gMjsKKyAgICB2YXIgZGVzaXJlZFdpbmRvd1dpZHRoID0gdGhpcy5f
bWVhc3VyZU1heENvbnRlbnRXaWR0aCgpICsgTGlzdEJvcmRlcjsKKyAgICB2YXIgdG90YWxIZWln
aHQgPSBMaXN0Qm9yZGVyOworICAgIHZhciBtYXhIZWlnaHQgPSAwOworICAgIHZhciBlbnRyeUNv
dW50ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQu
Y2hpbGROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQuY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNv
bnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKQorICAgICAgICAgICAgZW50
cnlDb3VudCsrOworICAgICAgICB0b3RhbEhlaWdodCArPSBub2RlLm9mZnNldEhlaWdodDsKKyAg
ICAgICAgaWYgKG1heEhlaWdodCA9PT0gMCAmJiBlbnRyeUNvdW50ID09IFN1Z2dlc3Rpb25QaWNr
ZXIuTnVtYmVyT2ZWaXNpYmxlRW50cmllcykKKyAgICAgICAgICAgIG1heEhlaWdodCA9IHRvdGFs
SGVpZ2h0OworICAgIH0KKyAgICB2YXIgZGVzaXJlZFdpbmRvd0hlaWdodCA9IHRvdGFsSGVpZ2h0
OworICAgIGlmIChtYXhIZWlnaHQgIT09IDAgJiYgdG90YWxIZWlnaHQgPiBtYXhIZWlnaHQpIHsK
KyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSAobWF4SGVp
Z2h0IC0gTGlzdEJvcmRlcikgKyAicHgiOworICAgICAgICBkZXNpcmVkV2luZG93V2lkdGggKz0g
Z2V0U2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgZGVzaXJlZFdpbmRvd0hlaWdodCA9IG1heEhl
aWdodDsKKyAgICB9CisKKyAgICByZXNpemVXaW5kb3coZGVzaXJlZFdpbmRvd1dpZHRoLCBkZXNp
cmVkV2luZG93SGVpZ2h0KTsKK307CisKK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9sYXlv
dXQgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gY3JlYXRlRWxl
bWVudCgidWwiLCAic3VnZ2VzdGlvbi1saXN0Iik7CisgICAgdGhpcy5fY29udGFpbmVyRWxlbWVu
dC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUVudHJ5Q2xpY2suYmluZCh0
aGlzKSwgZmFsc2UpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29uZmlnLnN1Z2dl
c3Rpb25WYWx1ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVu
dC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTdWdnZXN0aW9uRW50cnlFbGVtZW50KHRoaXMuX2Nv
bmZpZy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzW2ldLCB0aGlzLl9jb25maWcuc3VnZ2VzdGlv
bkxhYmVsc1tpXSwgdGhpcy5fY29uZmlnLnN1Z2dlc3Rpb25WYWx1ZXNbaV0pKTsKKyAgICB9Cisg
ICAgaWYgKHRoaXMuX2NvbmZpZy5zaG93T3RoZXJEYXRlRW50cnkpIHsKKyAgICAgICAgLy8gQWRk
IHNlcGFyYXRvcgorICAgICAgICB2YXIgc2VwYXJhdG9yID0gY3JlYXRlRWxlbWVudCgiZGl2Iiwg
InNlcGFyYXRvciIpOworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVuZENoaWxk
KHNlcGFyYXRvcik7CisKKyAgICAgICAgLy8gQWRkICJPdGhlci4uLiIgZW50cnkKKyAgICAgICAg
dmFyIG90aGVyRW50cnkgPSB0aGlzLl9jcmVhdGVBY3Rpb25FbnRyeUVsZW1lbnQodGhpcy5fY29u
ZmlnLm90aGVyRGF0ZUxhYmVsLCBTdWdnZXN0aW9uUGlja2VyLkFjdGlvbk5hbWVzLk9wZW5DYWxl
bmRhclBpY2tlcik7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5kQ2hpbGQo
b3RoZXJFbnRyeSk7CisgICAgfQorICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5f
Y29udGFpbmVyRWxlbWVudCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9IGVudHJ5
CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLnNlbGVjdEVudHJ5ID0gZnVuY3Rpb24o
ZW50cnkpIHsKKyAgICBpZiAodHlwZW9mIGVudHJ5LmRhdGFzZXQudmFsdWUgIT09ICJ1bmRlZmlu
ZWQiKSB7CisgICAgICAgIHRoaXMuc3VibWl0VmFsdWUoZW50cnkuZGF0YXNldC52YWx1ZSk7Cisg
ICAgfSBlbHNlIGlmIChlbnRyeS5kYXRhc2V0LmFjdGlvbiA9PT0gU3VnZ2VzdGlvblBpY2tlci5B
Y3Rpb25OYW1lcy5PcGVuQ2FsZW5kYXJQaWNrZXIpIHsKKyAgICAgICAgb3BlbkNhbGVuZGFyUGlj
a2VyKCk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLwor
U3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZUVudHJ5Q2xpY2sgPSBmdW5jdGlvbihl
dmVudCkgeworICAgIHZhciBlbnRyeSA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xhc3MoZXZl
bnQudGFyZ2V0LCBTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzKTsKKyAgICBpZiAoIWVu
dHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5zZWxlY3RFbnRyeShlbnRyeSk7CisgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHJldHVybiB7P0VsZW1lbnR9
CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5kRmlyc3RWaXNpYmxlRW50cnkg
PSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5fY29udGFpbmVyRWxlbWVu
dC5zY3JvbGxUb3A7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jb250YWluZXJFbGVtZW50
LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxlbmd0aDsg
KytpKSB7CisgICAgICAgIHZhciBub2RlID0gY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgaWYgKG5v
ZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8ICFub2RlLmNsYXNzTGlzdC5jb250
YWlucyhTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzKSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworICAgICAgICBpZiAobm9kZS5vZmZzZXRUb3AgKyBub2RlLm9mZnNldEhlaWdodCAtIHNj
cm9sbFRvcCA+IFN1Z2dlc3Rpb25QaWNrZXIuVmlzaWJsZUVudHJ5VGhyZXNob2xkSGVpZ2h0KQor
ICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOworfTsKKwor
LyoqCisgKiBAcmV0dXJuIHs/RWxlbWVudH0KKyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5
cGUuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHNjcm9sbEJv
dHRvbSA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wICsgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IGNoaWxkTm9kZXMubGVuZ3Ro
IC0gMTsgaSA+PSAwOyAtLWkpeworICAgICAgICB2YXIgbm9kZSA9IGNoaWxkTm9kZXNbaV07Cisg
ICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCAhbm9kZS5j
bGFzc0xpc3QuY29udGFpbnMoU3VnZ2VzdGlvblBpY2tlci5MaXN0RW50cnlDbGFzcykpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNjcm9sbEJvdHRvbSAtIG5vZGUub2Zmc2V0
VG9wID4gU3VnZ2VzdGlvblBpY2tlci5WaXNpYmxlRW50cnlUaHJlc2hvbGRIZWlnaHQpCisgICAg
ICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9OworCisvKioK
KyAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlw
ZS5faGFuZGxlQm9keUtleURvd24gPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBldmVudEhh
bmRsZWQgPSBmYWxzZTsKKyAgICB2YXIga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjsKKyAgICBp
ZiAoa2V5ID09PSAiVSswMDFCIikgeyAvLyBFU0MKKyAgICAgICAgdGhpcy5oYW5kbGVDYW5jZWwo
KTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PSAi
VXAiKSB7CisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5
Q2xhc3MpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxl
bWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBub2RlOyBub2RlID0gbm9kZS5wcmV2aW91c0Vs
ZW1lbnRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0LmNvbnRh
aW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKSB7CisgICAgICAgICAgICAgICAg
ICAgIHRoaXMuX2lzRm9jdXNCeU1vdXNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG5v
ZGUuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fZWxl
bWVudC5xdWVyeVNlbGVjdG9yKCIuIiArIFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3Mg
KyAiOmxhc3QtY2hpbGQiKS5mb2N1cygpOworICAgICAgICB9CisgICAgICAgIGV2ZW50SGFuZGxl
ZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIkRvd24iKSB7CisgICAgICAgIGlmIChk
b2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0
LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKSB7CisgICAgICAgICAg
ICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5uZXh0RWxlbWVudFNpYmxp
bmc7IG5vZGU7IG5vZGUgPSBub2RlLm5leHRFbGVtZW50U2libGluZykgeworICAgICAgICAgICAg
ICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucyhTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRy
eUNsYXNzKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0ZvY3VzQnlNb3VzZSA9IGZh
bHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3VzKCk7CisgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLiIgKyBTdWdn
ZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzICsgIjpmaXJzdC1jaGlsZCIpLmZvY3VzKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtl
eSA9PT0gIkVudGVyIikgeworICAgICAgICB0aGlzLnNlbGVjdEVudHJ5KGRvY3VtZW50LmFjdGl2
ZUVsZW1lbnQpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxzZSBpZiAo
a2V5ID09PSAiUGFnZVVwIikgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9s
bFRvcCAtPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgLy8g
U2Nyb2xsaW5nIGNhdXNlcyBtb3VzZW92ZXIgZXZlbnQgdG8gYmUgY2FsbGVkIGFuZCB0aGF0IHRy
aWVzIHRvIG1vdmUgdGhlIGZvY3VzIHRvby4KKyAgICAgICAgLy8gVG8gcHJldmVudCBmbGlja2Vy
aW5nIHdlIHdvbid0IGZvY3VzIGlmIHRoZSBjdXJyZW50IGZvY3VzIHdhcyBjYXVzZWQgYnkgdGhl
IG1vdXNlLgorICAgICAgICBpZiAoIXRoaXMuX2lzRm9jdXNCeU1vdXNlKQorICAgICAgICAgICAg
dGhpcy5fZmluZEZpcnN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZlbnRIYW5k
bGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0gIlBhZ2VEb3duIikgeworICAgICAg
ICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCArPSB0aGlzLl9jb250YWluZXJFbGVt
ZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0ZvY3VzQnlNb3VzZSkKKyAg
ICAgICAgICAgIHRoaXMuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAg
ZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV2ZW50SGFuZGxlZCkKKyAgICAg
ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHshRXZlbnR9
IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRyeU1vdXNl
T3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0gZW5jbG9zaW5nTm9kZU9y
U2VsZldpdGhDbGFzcyhldmVudC50YXJnZXQsIFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xh
c3MpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9pc0ZvY3Vz
QnlNb3VzZSA9IHRydWU7CisgICAgZW50cnkuZm9jdXMoKTsKKyAgICBldmVudC5wcmV2ZW50RGVm
YXVsdCgpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLworU3VnZ2Vz
dGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlT3V0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBpZiAoIWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFN1Z2dl
c3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5f
aXNGb2N1c0J5TW91c2UgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50LmJsdXIo
KTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXAvV2ViQ29yZS5neXAKaW5kZXggOTY3NjMyNjlmMjlkMGEwMTUwY2RmNjk5ZTAwN2MxZDgxODhi
ZmEwOS4uNWZhZDE3N2I1N2ZjMWIyY2RmNTcwY2NkOTNiOTY4Y2Q4Mzc4OTFiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTk0Niw2ICs5NDYsOCBAQAogICAgICAg
ICAgICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvY2Fs
ZW5kYXJQaWNrZXIuY3NzJywKICAgICAgICAgICAgICcuLi9SZXNvdXJjZXMvcGFnZXBvcHVwcy9j
YWxlbmRhclBpY2tlci5qcycsCisgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1cHMv
c3VnZ2VzdGlvblBpY2tlci5jc3MnLAorICAgICAgICAgICAgJy4uL1Jlc291cmNlcy9wYWdlcG9w
dXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMnLAogICAgICAgICAgIF0sCiAgICAgICAgICAgJ291dHB1
dHMnOiBbCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Via2l0L0Nh
bGVuZGFyUGlja2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
RGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRl
VGltZUNob29zZXJJbXBsLmNwcAppbmRleCBmYzNmNmNjMTkxYTY3OWY0YTU0MzdkOGFhYjQ5NjRh
MjJkOWM3YjAzLi40ZTJjNjllOWYwYmQ1YWFmNmFiNGFhNzdjOTNhYTAyZmNiZTJlMDAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJbXBsLmNw
cApAQCAtODgsNiArODgsNyBAQCB2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRlRG9jdW1l
bnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKIAogICAgIGFkZFN0cmluZygiPCFE
T0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIsIHdyaXRl
cik7CiAgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzLCBzaXplb2Yo
V2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6
c3VnZ2VzdGlvblBpY2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OnN1Z2dlc3Rpb25QaWNrZXJDc3Mp
KTsKICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcywgc2l6ZW9m
KFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CiAgICAgQ1N0cmluZyBleHRyYVN0eWxlID0g
V2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNhbGVuZGFyUGlja2Vy
U3R5bGVTaGVldCgpOwogICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQpAQCAtMTE0LDEwICsx
MTUsMTMgQEAgdm9pZCBEYXRlVGltZUNob29zZXJJbXBsOjp3cml0ZURvY3VtZW50KFdlYkNvcmU6
OkRvY3VtZW50V3JpdGVyJiB3cml0ZXIpCiAgICAgICAgIGFkZFByb3BlcnR5KCJzdWdnZXN0aW9u
TGFiZWxzIiwgbV9wYXJhbWV0ZXJzLnN1Z2dlc3Rpb25MYWJlbHMsIHdyaXRlcik7CiAgICAgICAg
IGFkZFByb3BlcnR5KCJzaG93T3RoZXJEYXRlRW50cnkiLCBtX3BhcmFtZXRlcnMudHlwZSA9PSBX
ZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZSgpLCB3cml0ZXIpOwogICAgICAgICBhZGRQcm9w
ZXJ0eSgib3RoZXJEYXRlTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxvY2FsaXpl
ZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6Ok90aGVyRGF0ZUxhYmVsKSwgd3JpdGVyKTsKKyAg
ICAgICAgYWRkUHJvcGVydHkoInN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvciIsIFdlYkNvcmU6OlJl
bmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJhY2tncm91
bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSwgd3JpdGVyKTsKKyAgICAgICAgYWRkUHJvcGVydHkoInN1
Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3IiLCBXZWJDb3JlOjpSZW5kZXJUaGVtZTo6ZGVmYXVs
dFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKS5zZXJpYWxp
emVkKCksIHdyaXRlcik7CiAgICAgfQogICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVyKTsKIAog
ICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzLCBzaXplb2YoV2ViQ29y
ZTo6cGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpzdWdnZXN0
aW9uUGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpzdWdnZXN0aW9uUGlja2VySnMpKTsKICAgICB3
cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBzaXplb2YoV2ViQ29yZTo6
Y2FsZW5kYXJQaWNrZXJKcykpOwogICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5PlxuIiwg
d3JpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBkZjc0
NDczZjAyZTUyOGI0MTBjYjI2MjI5NTk5OWIyNTljMjIxMWRlLi4zZjdkZGJiZjgyMTk3ZDA2NmM3
M2RlODgxOTY1YTZlY2UwMmVkM2RiIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMjIgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hp
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1Z2dlc3Rpb25QaWNrZXIgdG8gQ2FsZW5kYXJQ
aWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk3
MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBN
YW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbDogQWRkZWQgdGVzdHMgZm9yIFN1
Z2dlc3Rpb25QaWNrZXIuCisKIDIwMTItMDktMjAgIFNpbW9uIEhhdXNtYW5uICA8c2ltb24uaGF1
c21hbm5AZGlnaWEuY29tPgogCiAgICAgICAgIFtRdF0gUXRXZWJLaXQgbW9kdWxlIGhlYWRlciBp
bmNsdWRlcyBwcml2YXRlIGRlcGVuZGVuY2llcwpkaWZmIC0tZ2l0IGEvTWFudWFsVGVzdHMvZm9y
bXMvY2FsZW5kYXItcGlja2VyLmh0bWwgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNr
ZXIuaHRtbAppbmRleCA0MzhlYjZmNmY2ODUwZmY0MmFiMTllN2VlMjE3ZDA5NTE5NDc2NzIyLi4z
ZTNlMzNlODNiMjgyYzk3MjhjZjJkODA1YjEzMWVjNGIyYjM1MmZjIDEwMDY0NAotLS0gYS9NYW51
YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAorKysgYi9NYW51YWxUZXN0cy9mb3Jt
cy9jYWxlbmRhci1waWNrZXIuaHRtbApAQCAtMjMsNiArMjMsOCBAQCBpZnJhbWUgewogIDxvcHRp
b24+RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24+SmFwYW5lc2U8L29wdGlvbj4KICA8b3B0aW9u
PkFyYWJpYzwvb3B0aW9uPgorIDxvcHRpb24+d2l0aCBkYXRhbGlzdDwvb3B0aW9uPgorIDxvcHRp
b24+d2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CiA8L3NlbGVjdD4KIAogPGRpdj48aW5wdXQg
dHlwZT0idGV4dCIgaWQ9ImRhdGUiPjwvZGl2PgpAQCAtNjgsNiArNzAsODMgQEAgdmFyIGFyYWJp
Y0FyZ3VtZW50cyA9IHsKICAgICBzdGVwIDogMSwKICAgICBtYXggOiAnMjAyMC0wNS0xNScsCiB9
OwordmFyIGRhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2FsZTogJ2VuLVVTJywKKyAgICBt
b250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJpbCcsICdN
YXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdPY3RvYmVy
JywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFiZWxzIDogWydTdW4nLCAnTW9u
JywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwKKyAgICB0b2RheUxhYmVsIDog
J1RvZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAgICBjYW5jZWxMYWJlbCA6ICdD
YW5jZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3RlcCA6IDEsCisgICAgbWF4IDog
JzIwOTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXMgOiBbJzIwMTItMDEtMDEnLCAnMjAx
Mi0wNi0wMycsICcyMDEyLTA5LTA2JywgJzIwMTItMTItMjQnXSwKKyAgICBsb2NhbGl6ZWRTdWdn
ZXN0aW9uVmFsdWVzIDogWycxLzEvMTInLCAnNi8zLzEyJywgJzkvNi8xMicsICcxMi8yNC8xMidd
LAorICAgIHN1Z2dlc3Rpb25MYWJlbHMgOiBbJycsICdCaXJ0aGRheScsICcnLCAnQ2hyaXN0bWFz
J10sCisgICAgc2hvd090aGVyRGF0ZUVudHJ5OiB0cnVlLAorICAgIG90aGVyRGF0ZUxhYmVsOiAn
T3RoZXIuLi4nLAorICAgIGlucHV0V2lkdGg6IDEyNywKKyAgICBzdWdnZXN0aW9uSGlnaGxpZ2h0
Q29sb3I6ICIjMDAwMGZmIiwKKyAgICBzdWdnZXN0aW9uSGlnaGxpZ2h0VGV4dENvbG9yOiAiI2Zm
ZmZmZiIKK307Cit2YXIgbG9uZ0RhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2FsZTogJ2Vu
LVVTJywKKyAgICBtb250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcs
ICdBcHJpbCcsICdNYXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJl
cicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFiZWxzIDog
WydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwKKyAgICB0
b2RheUxhYmVsIDogJ1RvZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAgICBjYW5j
ZWxMYWJlbCA6ICdDYW5jZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3RlcCA6IDEs
CisgICAgbWF4IDogJzIwOTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXM6IFsiMjAxMi0w
MS0wMSIsICIyMDEyLTAxLTAyIiwgIjIwMTItMDEtMDMiLCAiMjAxMi0wMS0wNCIsCisgICAgICAg
ICIyMDEyLTAxLTA1IiwgIjIwMTItMDEtMDYiLCAiMjAxMi0wMS0wNyIsICIyMDEyLTAxLTA4Iiwg
IjIwMTItMDEtMDkiLAorICAgICAgICAiMjAxMi0wMS0xMCIsICIyMDEyLTAxLTExIiwgIjIwMTIt
MDEtMTIiLCAiMjAxMi0wMS0xMyIsICIyMDEyLTAxLTE0IiwKKyAgICAgICAgIjIwMTItMDEtMTUi
LCAiMjAxMi0wMS0xNiIsICIyMDEyLTAxLTE3IiwgIjIwMTItMDEtMTgiLCAiMjAxMi0wMS0xOSIs
CisgICAgICAgICIyMDEyLTAxLTIwIiwgIjIwMTItMDEtMjEiLCAiMjAxMi0wMS0yMiIsICIyMDEy
LTAxLTIzIiwgIjIwMTItMDEtMjQiLAorICAgICAgICAiMjAxMi0wMS0yNSIsICIyMDEyLTAxLTI2
IiwgIjIwMTItMDEtMjciLCAiMjAxMi0wMS0yOCIsICIyMDEyLTAxLTI5IiwKKyAgICAgICAgIjIw
MTItMDEtMzAiLCAiMjAxMi0wMS0zMSIsICIyMDEyLTAyLTAxIiwgIjIwMTItMDItMDIiLCAiMjAx
Mi0wMi0wMyIsCisgICAgICAgICIyMDEyLTAyLTA0IiwgIjIwMTItMDItMDUiLCAiMjAxMi0wMi0w
NiIsICIyMDEyLTAyLTA3IiwgIjIwMTItMDItMDgiLAorICAgICAgICAiMjAxMi0wMi0wOSIsICIy
MDEyLTAyLTEwIiwgIjIwMTItMDItMTEiLCAiMjAxMi0wMi0xMiIsICIyMDEyLTAyLTEzIiwKKyAg
ICAgICAgIjIwMTItMDItMTQiLCAiMjAxMi0wMi0xNSIsICIyMDEyLTAyLTE2IiwgIjIwMTItMDIt
MTciLCAiMjAxMi0wMi0xOCIsCisgICAgICAgICIyMDEyLTAyLTE5IiwgIjIwMTItMDItMjAiLCAi
MjAxMi0wMi0yMSIsICIyMDEyLTAyLTIyIiwgIjIwMTItMDItMjMiLAorICAgICAgICAiMjAxMi0w
Mi0yNCIsICIyMDEyLTAyLTI1IiwgIjIwMTItMDItMjYiLCAiMjAxMi0wMi0yNyIsICIyMDEyLTAy
LTI4IiwKKyAgICAgICAgIjIwMTItMDItMjkiLCAiMjAxMi0wMy0wMSIsICIyMDEyLTAzLTAyIiwg
IjIwMTItMDMtMDMiLCAiMjAxMi0wMy0wNCIsCisgICAgICAgICIyMDEyLTAzLTA1IiwgIjIwMTIt
MDMtMDYiLCAiMjAxMi0wMy0wNyIsICIyMDEyLTAzLTA4IiwgIjIwMTItMDMtMDkiLAorICAgICAg
ICAiMjAxMi0wMy0xMCIsICIyMDEyLTAzLTExIiwgIjIwMTItMDMtMTIiLCAiMjAxMi0wMy0xMyIs
ICIyMDEyLTAzLTE0IiwKKyAgICAgICAgIjIwMTItMDMtMTUiLCAiMjAxMi0wMy0xNiIsICIyMDEy
LTAzLTE3IiwgIjIwMTItMDMtMTgiLCAiMjAxMi0wMy0xOSIsCisgICAgICAgICIyMDEyLTAzLTIw
IiwgIjIwMTItMDMtMjEiLCAiMjAxMi0wMy0yMiIsICIyMDEyLTAzLTIzIiwgIjIwMTItMDMtMjQi
LAorICAgICAgICAiMjAxMi0wMy0yNSIsICIyMDEyLTAzLTI2IiwgIjIwMTItMDMtMjciLCAiMjAx
Mi0wMy0yOCIsICIyMDEyLTAzLTI5IiwKKyAgICAgICAgIjIwMTItMDMtMzAiLCAiMjAxMi0wMy0z
MSJdLAorICAgIGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXM6IFsiMS8xLzEyIiwgIjEvMi8xMiIs
ICIxLzMvMTIiLCAiMS80LzEyIiwKKyAgICAgICAgIjEvNS8xMiIsICIxLzYvMTIiLCAiMS83LzEy
IiwgIjEvOC8xMiIsICIxLzkvMTIiLCAiMS8xMC8xMiIsICIxLzExLzEyIiwKKyAgICAgICAgIjEv
MTIvMTIiLCAiMS8xMy8xMiIsICIxLzE0LzEyIiwgIjEvMTUvMTIiLCAiMS8xNi8xMiIsICIxLzE3
LzEyIiwKKyAgICAgICAgIjEvMTgvMTIiLCAiMS8xOS8xMiIsICIxLzIwLzEyIiwgIjEvMjEvMTIi
LCAiMS8yMi8xMiIsICIxLzIzLzEyIiwKKyAgICAgICAgIjEvMjQvMTIiLCAiMS8yNS8xMiIsICIx
LzI2LzEyIiwgIjEvMjcvMTIiLCAiMS8yOC8xMiIsICIxLzI5LzEyIiwKKyAgICAgICAgIjEvMzAv
MTIiLCAiMS8zMS8xMiIsICIyLzEvMTIiLCAiMi8yLzEyIiwgIjIvMy8xMiIsICIyLzQvMTIiLCAi
Mi81LzEyIiwKKyAgICAgICAgIjIvNi8xMiIsICIyLzcvMTIiLCAiMi84LzEyIiwgIjIvOS8xMiIs
ICIyLzEwLzEyIiwgIjIvMTEvMTIiLCAiMi8xMi8xMiIsCisgICAgICAgICIyLzEzLzEyIiwgIjIv
MTQvMTIiLCAiMi8xNS8xMiIsICIyLzE2LzEyIiwgIjIvMTcvMTIiLCAiMi8xOC8xMiIsCisgICAg
ICAgICIyLzE5LzEyIiwgIjIvMjAvMTIiLCAiMi8yMS8xMiIsICIyLzIyLzEyIiwgIjIvMjMvMTIi
LCAiMi8yNC8xMiIsCisgICAgICAgICIyLzI1LzEyIiwgIjIvMjYvMTIiLCAiMi8yNy8xMiIsICIy
LzI4LzEyIiwgIjIvMjkvMTIiLCAiMy8xLzEyIiwKKyAgICAgICAgIjMvMi8xMiIsICIzLzMvMTIi
LCAiMy80LzEyIiwgIjMvNS8xMiIsICIzLzYvMTIiLCAiMy83LzEyIiwgIjMvOC8xMiIsCisgICAg
ICAgICIzLzkvMTIiLCAiMy8xMC8xMiIsICIzLzExLzEyIiwgIjMvMTIvMTIiLCAiMy8xMy8xMiIs
ICIzLzE0LzEyIiwgCisgICAgICAgICIzLzE1LzEyIiwgIjMvMTYvMTIiLCAiMy8xNy8xMiIsICIz
LzE4LzEyIiwgIjMvMTkvMTIiLCAiMy8yMC8xMiIsCisgICAgICAgICIzLzIxLzEyIiwgIjMvMjIv
MTIiLCAiMy8yMy8xMiIsICIzLzI0LzEyIiwgIjMvMjUvMTIiLCAiMy8yNi8xMiIsCisgICAgICAg
ICIzLzI3LzEyIiwgIjMvMjgvMTIiLCAiMy8yOS8xMiIsICIzLzMwLzEyIiwgIjMvMzEvMTIiXSwK
KyAgICBzdWdnZXN0aW9uTGFiZWxzOiBbIlRvZGF5IiwgIlRvbW9ycm93IiwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAg
IiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAi
IiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAi
IiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiXSwKKyAgICBzaG93
T3RoZXJEYXRlRW50cnk6IHRydWUsCisgICAgb3RoZXJEYXRlTGFiZWw6ICdPdGhlci4uLicsCisg
ICAgaW5wdXRXaWR0aDogMTI3LAorICAgIHN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvcjogIiMwMDAw
ZmYiLAorICAgIHN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3I6ICIjZmZmZmZmIgorfTsKIAog
ZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICB2YXIgZnJhbWUgPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07CkBAIC03Nyw2ICsxNTYsMTAgQEAgZnVu
Y3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICBjb21tb25Dc3NMaW5rLnJlbCA9ICdzdHls
ZXNoZWV0JzsKICAgICBjb21tb25Dc3NMaW5rLmhyZWYgPSAnLi4vLi4vU291cmNlL1dlYkNvcmUv
UmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmNzcz8nICsgKG5ldyBEYXRlKCkpLmdl
dFRpbWUoKTsKICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZChjb21tb25Dc3NMaW5rKTsKKyAgICB2
YXIgc3VnZ2VzdGlvblBpY2tlckNzc0xpbmsgPSBkb2MuY3JlYXRlRWxlbWVudCgnbGluaycpOwor
ICAgIHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5rLnJlbCA9ICdzdHlsZXNoZWV0JzsKKyAgICBzdWdn
ZXN0aW9uUGlja2VyQ3NzTGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzPycgKyAobmV3IERhdGUoKSkuZ2V0VGlt
ZSgpOworICAgIGRvYy5oZWFkLmFwcGVuZENoaWxkKHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5rKTsK
ICAgICB2YXIgbGluayA9IGRvYy5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CiAgICAgbGluay5yZWwg
PSAnc3R5bGVzaGVldCc7CiAgICAgbGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzcz8nICsgKG5ldyBEYXRlKCkpLmdl
dFRpbWUoKTsKQEAgLTg0LDYgKzE2Nyw5IEBAIGZ1bmN0aW9uIG9wZW5DYWxlbmRhcihhcmdzKSB7
CiAgICAgdmFyIGNvbW1vbkpzU2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpOwog
ICAgIGNvbW1vbkpzU2NyaXB0LnNyYyA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGFnZXBvcHVwcy9waWNrZXJDb21tb24uanM/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7CiAg
ICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoY29tbW9uSnNTY3JpcHQpOworICAgIHZhciBzdWdnZXN0
aW9uUGlja2VySnNTY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7CisgICAgc3Vn
Z2VzdGlvblBpY2tlckpzU2NyaXB0LnNyYyA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmpzPycgKyAobmV3IERhdGUoKSkuZ2V0VGlt
ZSgpOworICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHN1Z2dlc3Rpb25QaWNrZXJKc1NjcmlwdCk7
CiAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAgICBzY3Jp
cHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVu
ZGFyUGlja2VyLmpzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgIGRvYy5ib2R5LmFw
cGVuZENoaWxkKHNjcmlwdCk7CkBAIC0xMjEsNiArMjA3LDEyIEBAIGZ1bmN0aW9uIHNlbGVjdGVk
KHNlbGVjdCkgewogICAgIGNhc2UgMjoKICAgICAgICAgb3BlbkNhbGVuZGFyKGFyYWJpY0FyZ3Vt
ZW50cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgb3BlbkNhbGVuZGFy
KGRhdGFsaXN0QXJndW1lbnRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0OgorICAgICAg
ICBvcGVuQ2FsZW5kYXIobG9uZ0RhdGFsaXN0QXJndW1lbnRzKTsKKyAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165306</attachid>
            <date>2012-09-23 20:47:32 -0700</date>
            <delta_ts>2012-09-23 21:38:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-97201-20120924124653.patch</filename>
            <type>text/plain</type>
            <size>30055</size>
            <attacher name="Keishi Hattori">keishi</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGZkNmZhODNjMGU2YmY3
NDFlZmFkZDI1MTdlNzZkZmVmMWY0ZTUzNC4uMTEzOTc4NjkyNmE3N2U4YWUzMTY5ZDhhODUyMzAz
MzVlZWY4MmRiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTA5LTIyICBLZWlz
aGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBzdWdnZXN0aW9u
UGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtlbnQgVGFtdXJh
LgorCisgICAgICAgIFRoaXMgYWRkcyB0aGUgc3VnZ2VzdGlvblBpY2tlciB0byBDYWxlbmRhclBp
Y2tlci4gSXQgaXMgbm90IGF2YWlsYWJsZSB5ZXQgYXMgYSBkYXRhbGlzdCBVSSBidXQgaXQgY2Fu
IGJlIHVzZWQgaW5zaWRlIE1hbnVhbFRlc3RzL2Zvcm1zL2NhbGVuZGFyLXBpY2tlci5odG1sLgor
CisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU3VnZ2VzdGlvbiBQaWNrZXIgY2FuIGJlIHRlc3RlZCBp
biBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbC4KKworICAgICAgICAqIFJl
c291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmpzOgorICAgICAgICAoaW5pdGlhbGl6
ZSk6CisgICAgICAgIChvcGVuU3VnZ2VzdGlvblBpY2tlcik6CisgICAgICAgICogUmVzb3VyY2Vz
L3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmpzOgorICAgICAgICAoZW5jbG9zaW5nTm9kZU9yU2Vs
ZldpdGhDbGFzcyk6CisgICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBp
Y2tlci5jc3M6IEFkZGVkLgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdCk6CisgICAgICAgICgu
c3VnZ2VzdGlvbi1saXN0LWVudHJ5KToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QtZW50cnk6
Zm9jdXMpOgorICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpmb2N1cyAubGFiZWwpOgor
ICAgICAgICAoLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeSAuY29udGVudCk6CisgICAgICAgICguc3Vn
Z2VzdGlvbi1saXN0LWVudHJ5IC50aXRsZSk6CisgICAgICAgICguc3VnZ2VzdGlvbi1saXN0LWVu
dHJ5IC5sYWJlbCk6CisgICAgICAgICgubWVhc3VyaW5nLXdpZHRoIC5zdWdnZXN0aW9uLWxpc3Qt
ZW50cnkgLmxhYmVsKToKKyAgICAgICAgKC5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvcik6Cisg
ICAgICAgICogUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlvblBpY2tlci5qczogQWRkZWQu
CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyKToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIu
dmFsaWRhdGVDb25maWcpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuY2xl
YW51cCk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fc2V0Q29sb3JzKTog
Q3JlYXRlcyBjc3MgcnVsZXMgdGhhdCBzZXRzIGhpZ2hsaWdodCBjb2xvcnMuCisgICAgICAgIChT
dWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fY3JlYXRlU3VnZ2VzdGlvbkVudHJ5RWxlbWVudCk6
IENyZWF0ZXMgYW4gZW50cnkgdGhhdCB3aGVuIHNlbGVjdGVkIHN1Ym1pdHMgdGhlIHZhbHVlLgor
ICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2NyZWF0ZUFjdGlvbkVudHJ5RWxl
bWVudCk6IENyZWF0ZXMgYW4gZW50cnkgdGhhdCBjYXVzZXMgYW4gYWN0aW9uLiAoZS54LiAiT3Ro
ZXIuLi4iKQorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX21lYXN1cmVNYXhD
b250ZW50V2lkdGgpOiBUZW1wb3JhcmlseSBsZWZ0IGFsaWduIGV2ZXJ5dGhpbmcgdG8gbWVhc3Vy
ZSB0aGUgd2lkdGguCisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZml4V2lu
ZG93U2l6ZSk6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fbGF5b3V0KToK
KyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLnNlbGVjdEVudHJ5KToKKyAgICAg
ICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRyeUNsaWNrKToKKyAgICAg
ICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5kRmlyc3RWaXNpYmxlRW50cnkpOgor
ICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5
KToKKyAgICAgICAgKFN1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVCb2R5S2V5RG93
bik6CisgICAgICAgIChTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5faGFuZGxlRW50cnlNb3Vz
ZU92ZXIpOgorICAgICAgICAoU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZU1vdXNl
T3V0KToKKyAgICAgICAgKiBXZWJDb3JlLmd5cC9XZWJDb3JlLmd5cDoKKwogMjAxMi0wOS0yMyAg
Qnl1bmd3b28gTGVlICA8Ync4MC5sZWVAZ21haWwuY29tPgogCiAgICAgICAgIEZpeCBidWlsZCB3
YXJuaW5ncyA6IC1XdW51c2VkLXBhcmFtZXRlciwgLVdwYXJlbnRoZXNlcywgLVd1bmluaXRpYWxp
emVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3NzFmMTQ3ZGZjYzI1NzY1ZTRhOGY4
ZDlhNWVlNzE5OWQzZjBiMGI1Li5hZWI2MjVkMzY3ZTVhOTkwNTcxNjhhODYxYWE0ZTQ0NmJjNTQ0
Y2E5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEyLTA5
LTIyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBz
dWdnZXN0aW9uUGlja2VyIHRvIENhbGVuZGFyUGlja2VyCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NzIwMQorCisgICAgICAgIFJldmlld2VkIGJ5IEtl
bnQgVGFtdXJhLgorCisgICAgICAgICogc3JjL0RhdGVUaW1lQ2hvb3NlckltcGwuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpEYXRlVGltZUNob29zZXJJbXBsOjp3cml0ZURvY3VtZW50KTogQWRkIGpz
L2NzcyBmb3IgU3VnZ2VzdGlvblBpY2tlciB0byBwYWdlIHBpY2tlci4gQWRkIGhpZ2hsaWdodCBj
b2xvciB0byBhcmdzLgorCiAyMDEyLTA5LTIxICBLZW5pY2hpIElzaGliYXNoaSAgPGJhc2hpQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIFVzZSBPcGVuVHlwZVZlcnRpY2FsRGF0
YSBvbiBMaW51eApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1
cHMvY2FsZW5kYXJQaWNrZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVw
cy9jYWxlbmRhclBpY2tlci5qcwppbmRleCAyMGE4NWZkNGE4YTVhNWQ1ODQ3ZmE4OWFjNDkyZjRk
NTRhMmM4YTE4Li5kYjk4NGE1MzhhYzk5MWZjZGJmOWM4OTdiNTliNDQ3MGY0NGM3MGFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBpY2tl
ci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMvcGFnZXBvcHVwcy9jYWxlbmRhclBp
Y2tlci5qcwpAQCAtMjY4LDEzICsyNjgsMTggQEAgQ2FsZW5kYXJQaWNrZXIudmFsaWRhdGVDb25m
aWcgPSBmdW5jdGlvbihjb25maWcpIHsKICAqLwogZnVuY3Rpb24gaW5pdGlhbGl6ZShhcmdzKSB7
CiAgICAgdmFyIGVycm9yU3RyaW5nID0gQ2FsZW5kYXJQaWNrZXIudmFsaWRhdGVDb25maWcoYXJn
cyk7CisgICAgaWYgKGFyZ3Muc3VnZ2VzdGlvblZhbHVlcykKKyAgICAgICAgZXJyb3JTdHJpbmcg
PSBlcnJvclN0cmluZyB8fCBTdWdnZXN0aW9uUGlja2VyLnZhbGlkYXRlQ29uZmlnKGFyZ3MpCiAg
ICAgaWYgKGVycm9yU3RyaW5nKSB7CiAgICAgICAgIHZhciBtYWluID0gJCgibWFpbiIpOwogICAg
ICAgICBtYWluLnRleHRDb250ZW50ID0gIkludGVybmFsIGVycm9yOiAiICsgZXJyb3JTdHJpbmc7
CiAgICAgICAgIHJlc2l6ZVdpbmRvdyhtYWluLm9mZnNldFdpZHRoLCBtYWluLm9mZnNldEhlaWdo
dCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZ2xvYmFsLnBhcmFtcyA9IGFyZ3M7Ci0gICAgICAg
IG9wZW5DYWxlbmRhclBpY2tlcigpOworICAgICAgICBpZiAoZ2xvYmFsLnBhcmFtcy5zdWdnZXN0
aW9uVmFsdWVzICYmIGdsb2JhbC5wYXJhbXMuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGgpCisgICAg
ICAgICAgICBvcGVuU3VnZ2VzdGlvblBpY2tlcigpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBvcGVuQ2FsZW5kYXJQaWNrZXIoKTsKICAgICB9CiB9CiAKQEAgLTI4Niw2ICsyOTEsMTEgQEAg
ZnVuY3Rpb24gY2xvc2VQaWNrZXIoKSB7CiAgICAgbWFpbi5jbGFzc05hbWUgPSAiIjsKIH07CiAK
K2Z1bmN0aW9uIG9wZW5TdWdnZXN0aW9uUGlja2VyKCkgeworICAgIGNsb3NlUGlja2VyKCk7Cisg
ICAgZ2xvYmFsLnBpY2tlciA9IG5ldyBTdWdnZXN0aW9uUGlja2VyKCQoIm1haW4iKSwgZ2xvYmFs
LnBhcmFtcyk7Cit9OworCiBmdW5jdGlvbiBvcGVuQ2FsZW5kYXJQaWNrZXIoKSB7CiAgICAgY2xv
c2VQaWNrZXIoKTsKICAgICBnbG9iYWwucGlja2VyID0gbmV3IENhbGVuZGFyUGlja2VyKCQoIm1h
aW4iKSwgZ2xvYmFsLnBhcmFtcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJj
ZXMvcGFnZXBvcHVwcy9waWNrZXJDb21tb24uanMgYi9Tb3VyY2UvV2ViQ29yZS9SZXNvdXJjZXMv
cGFnZXBvcHVwcy9waWNrZXJDb21tb24uanMKaW5kZXggYWQ5NTQyY2M0MDZjZWM5OWE3ZTQ2N2E0
ZTUxMmQ5ZmRmMjA3ZmVjYS4uNjE5ZjJlZTc2ZTVkMGQ1MjJhOWViMTJjNzYyY2Q3YThhNTZkZGY4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2Vy
Q29tbW9uLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3BpY2tl
ckNvbW1vbi5qcwpAQCAtNzYsNiArNzYsMTkgQEAgZnVuY3Rpb24gZ2V0U2Nyb2xsYmFyV2lkdGgo
KSB7CiB9CiAKIC8qKgorICogQHBhcmFtIHshc3RyaW5nfSBjbGFzc05hbWUKKyAqIEByZXR1cm4g
ez9FbGVtZW50fQorICovCitmdW5jdGlvbiBlbmNsb3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKHNl
bGZOb2RlLCBjbGFzc05hbWUpCit7CisgICAgZm9yICh2YXIgbm9kZSA9IHNlbGZOb2RlOyBub2Rl
ICYmIG5vZGUgIT09IHNlbGZOb2RlLm93bmVyRG9jdW1lbnQ7IG5vZGUgPSBub2RlLnBhcmVudE5v
ZGUpIHsKKyAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYm
IG5vZGUuY2xhc3NMaXN0LmNvbnRhaW5zKGNsYXNzTmFtZSkpCisgICAgICAgICAgICByZXR1cm4g
bm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9OworCisvKioKICAqIEBjb25zdHJ1Y3Rv
cgogICogQHBhcmFtIHshRWxlbWVudH0gZWxlbWVudAogICogQHBhcmFtIHshT2JqZWN0fSBjb25m
aWcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dl
c3Rpb25QaWNrZXIuY3NzIGIvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3Vn
Z2VzdGlvblBpY2tlci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWNhNDdkZGZmNzlhYTIzNzAwNzMxYmIxZDIx
MjBkZGYzYzJkYTE3MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNl
cy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzCkBAIC0wLDAgKzEsNDMgQEAKKy5zdWdn
ZXN0aW9uLWxpc3QgeworICAgIGxpc3Qtc3R5bGU6IG5vbmU7CisgICAgcGFkZGluZzogMDsKKyAg
ICBtYXJnaW46IDA7CisgICAgZm9udDogLXdlYmtpdC1zbWFsbC1jb250cm9sOworICAgIGJvcmRl
cjogMXB4IHNvbGlkICM3ZjlkYjk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAg
b3ZlcmZsb3cteTogYXV0bzsKK30KKworLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeSB7CisgICAgd2hp
dGUtc3BhY2U6IG5vd3JhcDsKKyAgICBoZWlnaHQ6IDEuNzNlbTsKKyAgICBsaW5lLWhlaWdodDog
MS43M2VtOworICAgIC13ZWJraXQtc2VsZWN0OiBub25lOworICAgIGN1cnNvcjogZGVmYXVsdDsK
K30KKworLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeTpmb2N1cyB7CisgICAgb3V0bGluZTogbm9uZTsK
K30KKworLnN1Z2dlc3Rpb24tbGlzdC1lbnRyeSAuY29udGVudCB7CisgICAgcGFkZGluZzogMCA0
cHg7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QtZW50cnkgLmxhYmVsIHsKKyAgICBwYWRkaW5nLWxl
ZnQ6IDIwcHg7CisgICAgdGV4dC1hbGlnbjogcmlnaHQ7CisgICAgY29sb3I6ICM3MzczNzM7Cisg
ICAgZmxvYXQ6IHJpZ2h0OworICAgIG1hcmdpbi1yaWdodDogNHB4OworfQorCisubWVhc3VyaW5n
LXdpZHRoIC5zdWdnZXN0aW9uLWxpc3QtZW50cnkgLmxhYmVsIHsKKyAgICBmbG9hdDogbm9uZTsK
KyAgICBtYXJnaW4tcmlnaHQ6IDA7Cit9CisKKy5zdWdnZXN0aW9uLWxpc3QgLnNlcGFyYXRvciB7
CisgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICNkY2RjZGM7CisgICAgaGVpZ2h0OiAwOworfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvc3VnZ2VzdGlv
blBpY2tlci5qcyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rp
b25QaWNrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzc4YjFlMDU5NjYyYjgzZWFlNDJkMGQ1ZDMxY2NmMzMz
NTY1OWZhMwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdl
cG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMKQEAgLTAsMCArMSwzMTEgQEAKKyJ1c2Ugc3RyaWN0
IjsKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisvKioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9IGVsZW1lbnQKKyAqIEBwYXJh
bSB7IU9iamVjdH0gY29uZmlnCisgKi8KK2Z1bmN0aW9uIFN1Z2dlc3Rpb25QaWNrZXIoZWxlbWVu
dCwgY29uZmlnKSB7CisgICAgUGlja2VyLmNhbGwodGhpcywgZWxlbWVudCwgY29uZmlnKTsKKyAg
ICB0aGlzLl9pc0ZvY3VzQnlNb3VzZSA9IGZhbHNlOworICAgIHRoaXMuX2NvbnRhaW5lckVsZW1l
bnQgPSBudWxsOworICAgIHRoaXMuX3NldENvbG9ycygpOworICAgIHRoaXMuX2xheW91dCgpOwor
ICAgIHRoaXMuX2ZpeFdpbmRvd1NpemUoKTsKKyAgICB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJv
dW5kID0gdGhpcy5faGFuZGxlQm9keUtleURvd24uYmluZCh0aGlzKTsKKyAgICBkb2N1bWVudC5i
b2R5LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVCb2R5S2V5RG93bkJv
dW5kKTsKKyAgICB0aGlzLl9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhp
cy5faGFuZGxlTW91c2VPdXQuYmluZCh0aGlzKSwgZmFsc2UpOworfTsKK1N1Z2dlc3Rpb25QaWNr
ZXIucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShQaWNrZXIucHJvdG90eXBlKTsKKworU3VnZ2Vz
dGlvblBpY2tlci5OdW1iZXJPZlZpc2libGVFbnRyaWVzID0gMjA7CisKKy8vIEFuIGVudHJ5IG5l
ZWRzIHRvIGJlIGF0IGxlYXN0IHRoaXMgbWFueSBwaXhlbHMgdmlzaWJsZSBmb3IgaXQgdG8gYmUg
YSB2aXNpYmxlIGVudHJ5LgorU3VnZ2VzdGlvblBpY2tlci5WaXNpYmxlRW50cnlUaHJlc2hvbGRI
ZWlnaHQgPSA0OworCitTdWdnZXN0aW9uUGlja2VyLkFjdGlvbk5hbWVzID0geworICAgIE9wZW5D
YWxlbmRhclBpY2tlcjogIm9wZW5DYWxlbmRhclBpY2tlciIKK307CisKK1N1Z2dlc3Rpb25QaWNr
ZXIuTGlzdEVudHJ5Q2xhc3MgPSAic3VnZ2VzdGlvbi1saXN0LWVudHJ5IjsKKworU3VnZ2VzdGlv
blBpY2tlci52YWxpZGF0ZUNvbmZpZyA9IGZ1bmN0aW9uKGNvbmZpZykgeworICAgIGlmIChjb25m
aWcuc2hvd090aGVyRGF0ZUVudHJ5ICYmICFjb25maWcub3RoZXJEYXRlTGFiZWwpCisgICAgICAg
IHJldHVybiAiTm8gb3RoZXJEYXRlTGFiZWwuIjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25I
aWdobGlnaHRDb2xvciAmJiAhY29uZmlnLnN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvcikKKyAgICAg
ICAgcmV0dXJuICJObyBzdWdnZXN0aW9uSGlnaGxpZ2h0Q29sb3IuIjsKKyAgICBpZiAoY29uZmln
LnN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3IgJiYgIWNvbmZpZy5zdWdnZXN0aW9uSGlnaGxp
Z2h0VGV4dENvbG9yKQorICAgICAgICByZXR1cm4gIk5vIHN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0
Q29sb3IuIjsKKyAgICBpZiAoY29uZmlnLnN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoICE9PSBjb25m
aWcubG9jYWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGgpCisgICAgICAgIHJldHVybiAibG9j
YWxpemVkU3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggbXVzdCBlcXVhbCBzdWdnZXN0aW9uVmFsdWVz
Lmxlbmd0aC4iOworICAgIGlmIChjb25maWcuc3VnZ2VzdGlvblZhbHVlcy5sZW5ndGggIT09IGNv
bmZpZy5zdWdnZXN0aW9uTGFiZWxzLmxlbmd0aCkKKyAgICAgICAgcmV0dXJuICJzdWdnZXN0aW9u
TGFiZWxzLmxlbmd0aCBtdXN0IGVxdWFsIHN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoLiI7CisgICAg
aWYgKHR5cGVvZiBjb25maWcuaW5wdXRXaWR0aCA9PT0gInVuZGVmaW5lZCIpCisgICAgICAgIHJl
dHVybiAiTm8gaW5wdXRXaWR0aC4iOworICAgIHJldHVybiBudWxsOworfTsKKworU3VnZ2VzdGlv
blBpY2tlci5wcm90b3R5cGUuX3NldENvbG9ycyA9IGZ1bmN0aW9uKCkgeworICAgIHZhciB0ZXh0
ID0gIi4iICsgU3VnZ2VzdGlvblBpY2tlci5MaXN0RW50cnlDbGFzcyArICI6Zm9jdXMge1wKKyAg
ICAgICAgYmFja2dyb3VuZC1jb2xvcjogIiArIHRoaXMuX2NvbmZpZy5zdWdnZXN0aW9uSGlnaGxp
Z2h0Q29sb3IgKyAiO1wKKyAgICAgICAgY29sb3I6ICIgKyB0aGlzLl9jb25maWcuc3VnZ2VzdGlv
bkhpZ2hsaWdodFRleHRDb2xvciArICI7IH0iOworICAgIHRleHQgKz0gIi4iICsgU3VnZ2VzdGlv
blBpY2tlci5MaXN0RW50cnlDbGFzcyArICI6Zm9jdXMgLmxhYmVsIHsgY29sb3I6ICIgKyB0aGlz
Ll9jb25maWcuc3VnZ2VzdGlvbkhpZ2hsaWdodFRleHRDb2xvciArICI7IH0iOworICAgIGRvY3Vt
ZW50LmhlYWQuYXBwZW5kQ2hpbGQoY3JlYXRlRWxlbWVudCgic3R5bGUiLCBudWxsLCB0ZXh0KSk7
Cit9OworCitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5jbGVhbnVwID0gZnVuY3Rpb24oKSB7
CisgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVFdmVudExpc3RlbmVyKCJrZXlkb3duIiwgdGhpcy5f
aGFuZGxlQm9keUtleURvd25Cb3VuZCwgZmFsc2UpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFz
dHJpbmd9IHRpdGxlCisgKiBAcGFyYW0geyFzdHJpbmd9IGxhYmVsCisgKiBAcGFyYW0geyFzdHJp
bmd9IHZhbHVlCisgKiBAcmV0dXJuIHshRWxlbWVudH0KKyAqLworU3VnZ2VzdGlvblBpY2tlci5w
cm90b3R5cGUuX2NyZWF0ZVN1Z2dlc3Rpb25FbnRyeUVsZW1lbnQgPSBmdW5jdGlvbih0aXRsZSwg
bGFiZWwsIHZhbHVlKSB7CisgICAgdmFyIGVudHJ5RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoImxp
IiwgU3VnZ2VzdGlvblBpY2tlci5MaXN0RW50cnlDbGFzcyk7CisgICAgZW50cnlFbGVtZW50LnRh
YkluZGV4ID0gMDsKKyAgICBlbnRyeUVsZW1lbnQuZGF0YXNldC52YWx1ZSA9IHZhbHVlOworICAg
IHZhciBjb250ZW50ID0gY3JlYXRlRWxlbWVudCgic3BhbiIsICJjb250ZW50Iik7CisgICAgZW50
cnlFbGVtZW50LmFwcGVuZENoaWxkKGNvbnRlbnQpOworICAgIHZhciB0aXRsZUVsZW1lbnQgPSBj
cmVhdGVFbGVtZW50KCJzcGFuIiwgInRpdGxlIiwgdGl0bGUpOworICAgIGNvbnRlbnQuYXBwZW5k
Q2hpbGQodGl0bGVFbGVtZW50KTsKKyAgICBpZiAobGFiZWwpIHsKKyAgICAgICAgdmFyIGxhYmVs
RWxlbWVudCA9IGNyZWF0ZUVsZW1lbnQoInNwYW4iLCAibGFiZWwiLCBsYWJlbCk7CisgICAgICAg
IGNvbnRlbnQuYXBwZW5kQ2hpbGQobGFiZWxFbGVtZW50KTsKKyAgICB9CisgICAgZW50cnlFbGVt
ZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3ZlciIsIHRoaXMuX2hhbmRsZUVudHJ5TW91c2VP
dmVyLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICByZXR1cm4gZW50cnlFbGVtZW50OworfTsKKwor
LyoqCisgKiBAcGFyYW0geyFzdHJpbmd9IHRpdGxlCisgKiBAcGFyYW0geyFzdHJpbmd9IGFjdGlv
bk5hbWUKKyAqIEByZXR1cm4geyFFbGVtZW50fQorICovCitTdWdnZXN0aW9uUGlja2VyLnByb3Rv
dHlwZS5fY3JlYXRlQWN0aW9uRW50cnlFbGVtZW50ID0gZnVuY3Rpb24odGl0bGUsIGFjdGlvbk5h
bWUpIHsKKyAgICB2YXIgZW50cnlFbGVtZW50ID0gY3JlYXRlRWxlbWVudCgibGkiLCBTdWdnZXN0
aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzKTsKKyAgICBlbnRyeUVsZW1lbnQudGFiSW5kZXggPSAw
OworICAgIGVudHJ5RWxlbWVudC5kYXRhc2V0LmFjdGlvbiA9IGFjdGlvbk5hbWU7CisgICAgdmFy
IGNvbnRlbnQgPSBjcmVhdGVFbGVtZW50KCJzcGFuIiwgImNvbnRlbnQiKTsKKyAgICBlbnRyeUVs
ZW1lbnQuYXBwZW5kQ2hpbGQoY29udGVudCk7CisgICAgdmFyIHRpdGxlRWxlbWVudCA9IGNyZWF0
ZUVsZW1lbnQoInNwYW4iLCAidGl0bGUiLCB0aXRsZSk7CisgICAgY29udGVudC5hcHBlbmRDaGls
ZCh0aXRsZUVsZW1lbnQpOworICAgIGVudHJ5RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3Vz
ZW92ZXIiLCB0aGlzLl9oYW5kbGVFbnRyeU1vdXNlT3Zlci5iaW5kKHRoaXMpLCBmYWxzZSk7Cisg
ICAgcmV0dXJuIGVudHJ5RWxlbWVudDsKK307CisKKy8qKgorKiBAcmV0dXJuIHshbnVtYmVyfQor
Ki8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9tZWFzdXJlTWF4Q29udGVudFdpZHRoID0g
ZnVuY3Rpb24oKSB7CisgICAgLy8gVG8gbWVhc3VyZSB0aGUgcmVxdWlyZWQgd2lkdGgsIHdlIGZp
cnN0IHNldCB0aGUgY2xhc3MgdG8gIm1lYXN1cmluZy13aWR0aCIgd2hpY2gKKyAgICAvLyBsZWZ0
IGFsaWducyBhbGwgdGhlIGNvbnRlbnQgaW5jbHVkaW5nIGxhYmVsLgorICAgIHRoaXMuX2NvbnRh
aW5lckVsZW1lbnQuY2xhc3NMaXN0LmFkZCgibWVhc3VyaW5nLXdpZHRoIik7CisgICAgdmFyIG1h
eENvbnRlbnRXaWR0aCA9IDA7CisgICAgaWYgKHR5cGVvZiB0aGlzLl9jb25maWcuaW5wdXRXaWR0
aCA9PT0gIm51bWJlciIpCisgICAgICAgIG1heENvbnRlbnRXaWR0aCA9IHRoaXMuX2NvbmZpZy5p
bnB1dFdpZHRoOworICAgIHZhciBjb250ZW50RWxlbWVudHMgPSB0aGlzLl9jb250YWluZXJFbGVt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImNvbnRlbnQiKTsKKyAgICBmb3IgKHZhciBpPTA7
IGkgPCBjb250ZW50RWxlbWVudHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgbWF4Q29udGVudFdp
ZHRoID0gTWF0aC5tYXgobWF4Q29udGVudFdpZHRoLCBjb250ZW50RWxlbWVudHNbaV0ub2Zmc2V0
V2lkdGgpOworICAgIH0KKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoIm1lYXN1cmluZy13aWR0aCIpOworICAgIHJldHVybiBtYXhDb250ZW50V2lkdGg7Cit9Owor
CitTdWdnZXN0aW9uUGlja2VyLnByb3RvdHlwZS5fZml4V2luZG93U2l6ZSA9IGZ1bmN0aW9uKCkg
eworICAgIHZhciBMaXN0Qm9yZGVyID0gMjsKKyAgICB2YXIgZGVzaXJlZFdpbmRvd1dpZHRoID0g
dGhpcy5fbWVhc3VyZU1heENvbnRlbnRXaWR0aCgpICsgTGlzdEJvcmRlcjsKKyAgICB2YXIgdG90
YWxIZWlnaHQgPSBMaXN0Qm9yZGVyOworICAgIHZhciBtYXhIZWlnaHQgPSAwOworICAgIHZhciBl
bnRyeUNvdW50ID0gMDsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuX2NvbnRhaW5lckVs
ZW1lbnQuY2hpbGROb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgbm9kZSA9IHRoaXMu
X2NvbnRhaW5lckVsZW1lbnQuY2hpbGROb2Rlc1tpXTsKKyAgICAgICAgaWYgKG5vZGUuY2xhc3NM
aXN0LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKQorICAgICAgICAg
ICAgZW50cnlDb3VudCsrOworICAgICAgICB0b3RhbEhlaWdodCArPSBub2RlLm9mZnNldEhlaWdo
dDsKKyAgICAgICAgaWYgKG1heEhlaWdodCA9PT0gMCAmJiBlbnRyeUNvdW50ID09IFN1Z2dlc3Rp
b25QaWNrZXIuTnVtYmVyT2ZWaXNpYmxlRW50cmllcykKKyAgICAgICAgICAgIG1heEhlaWdodCA9
IHRvdGFsSGVpZ2h0OworICAgIH0KKyAgICB2YXIgZGVzaXJlZFdpbmRvd0hlaWdodCA9IHRvdGFs
SGVpZ2h0OworICAgIGlmIChtYXhIZWlnaHQgIT09IDAgJiYgdG90YWxIZWlnaHQgPiBtYXhIZWln
aHQpIHsKKyAgICAgICAgdGhpcy5fY29udGFpbmVyRWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSAo
bWF4SGVpZ2h0IC0gTGlzdEJvcmRlcikgKyAicHgiOworICAgICAgICBkZXNpcmVkV2luZG93V2lk
dGggKz0gZ2V0U2Nyb2xsYmFyV2lkdGgoKTsKKyAgICAgICAgZGVzaXJlZFdpbmRvd0hlaWdodCA9
IG1heEhlaWdodDsKKyAgICB9CisKKyAgICByZXNpemVXaW5kb3coZGVzaXJlZFdpbmRvd1dpZHRo
LCBkZXNpcmVkV2luZG93SGVpZ2h0KTsKK307CisKK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBl
Ll9sYXlvdXQgPSBmdW5jdGlvbigpIHsKKyAgICB0aGlzLl9jb250YWluZXJFbGVtZW50ID0gY3Jl
YXRlRWxlbWVudCgidWwiLCAic3VnZ2VzdGlvbi1saXN0Iik7CisgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2hhbmRsZUVudHJ5Q2xpY2su
YmluZCh0aGlzKSwgZmFsc2UpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fY29uZmln
LnN1Z2dlc3Rpb25WYWx1ZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgdGhpcy5fY29udGFpbmVy
RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLl9jcmVhdGVTdWdnZXN0aW9uRW50cnlFbGVtZW50KHRo
aXMuX2NvbmZpZy5sb2NhbGl6ZWRTdWdnZXN0aW9uVmFsdWVzW2ldLCB0aGlzLl9jb25maWcuc3Vn
Z2VzdGlvbkxhYmVsc1tpXSwgdGhpcy5fY29uZmlnLnN1Z2dlc3Rpb25WYWx1ZXNbaV0pKTsKKyAg
ICB9CisgICAgaWYgKHRoaXMuX2NvbmZpZy5zaG93T3RoZXJEYXRlRW50cnkpIHsKKyAgICAgICAg
Ly8gQWRkIHNlcGFyYXRvcgorICAgICAgICB2YXIgc2VwYXJhdG9yID0gY3JlYXRlRWxlbWVudCgi
ZGl2IiwgInNlcGFyYXRvciIpOworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LmFwcGVu
ZENoaWxkKHNlcGFyYXRvcik7CisKKyAgICAgICAgLy8gQWRkICJPdGhlci4uLiIgZW50cnkKKyAg
ICAgICAgdmFyIG90aGVyRW50cnkgPSB0aGlzLl9jcmVhdGVBY3Rpb25FbnRyeUVsZW1lbnQodGhp
cy5fY29uZmlnLm90aGVyRGF0ZUxhYmVsLCBTdWdnZXN0aW9uUGlja2VyLkFjdGlvbk5hbWVzLk9w
ZW5DYWxlbmRhclBpY2tlcik7CisgICAgICAgIHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuYXBwZW5k
Q2hpbGQob3RoZXJFbnRyeSk7CisgICAgfQorICAgIHRoaXMuX2VsZW1lbnQuYXBwZW5kQ2hpbGQo
dGhpcy5fY29udGFpbmVyRWxlbWVudCk7Cit9OworCisvKioKKyAqIEBwYXJhbSB7IUVsZW1lbnR9
IGVudHJ5CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLnNlbGVjdEVudHJ5ID0gZnVu
Y3Rpb24oZW50cnkpIHsKKyAgICBpZiAodHlwZW9mIGVudHJ5LmRhdGFzZXQudmFsdWUgIT09ICJ1
bmRlZmluZWQiKSB7CisgICAgICAgIHRoaXMuc3VibWl0VmFsdWUoZW50cnkuZGF0YXNldC52YWx1
ZSk7CisgICAgfSBlbHNlIGlmIChlbnRyeS5kYXRhc2V0LmFjdGlvbiA9PT0gU3VnZ2VzdGlvblBp
Y2tlci5BY3Rpb25OYW1lcy5PcGVuQ2FsZW5kYXJQaWNrZXIpIHsKKyAgICAgICAgb3BlbkNhbGVu
ZGFyUGlja2VyKCk7CisgICAgfQorfTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQK
KyAqLworU3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZUVudHJ5Q2xpY2sgPSBmdW5j
dGlvbihldmVudCkgeworICAgIHZhciBlbnRyeSA9IGVuY2xvc2luZ05vZGVPclNlbGZXaXRoQ2xh
c3MoZXZlbnQudGFyZ2V0LCBTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzKTsKKyAgICBp
ZiAoIWVudHJ5KQorICAgICAgICByZXR1cm47CisgICAgdGhpcy5zZWxlY3RFbnRyeShlbnRyeSk7
CisgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHJldHVybiB7P0Vs
ZW1lbnR9CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9maW5kRmlyc3RWaXNpYmxl
RW50cnkgPSBmdW5jdGlvbigpIHsKKyAgICB2YXIgc2Nyb2xsVG9wID0gdGhpcy5fY29udGFpbmVy
RWxlbWVudC5zY3JvbGxUb3A7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9jb250YWluZXJF
bGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZE5vZGVzLmxl
bmd0aDsgKytpKSB7CisgICAgICAgIHZhciBub2RlID0gY2hpbGROb2Rlc1tpXTsKKyAgICAgICAg
aWYgKG5vZGUubm9kZVR5cGUgIT09IE5vZGUuRUxFTUVOVF9OT0RFIHx8ICFub2RlLmNsYXNzTGlz
dC5jb250YWlucyhTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzKSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICBpZiAobm9kZS5vZmZzZXRUb3AgKyBub2RlLm9mZnNldEhlaWdo
dCAtIHNjcm9sbFRvcCA+IFN1Z2dlc3Rpb25QaWNrZXIuVmlzaWJsZUVudHJ5VGhyZXNob2xkSGVp
Z2h0KQorICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgfQorICAgIHJldHVybiBudWxsOwor
fTsKKworLyoqCisgKiBAcmV0dXJuIHs/RWxlbWVudH0KKyAqLworU3VnZ2VzdGlvblBpY2tlci5w
cm90b3R5cGUuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5ID0gZnVuY3Rpb24oKSB7CisgICAgdmFyIHNj
cm9sbEJvdHRvbSA9IHRoaXMuX2NvbnRhaW5lckVsZW1lbnQuc2Nyb2xsVG9wICsgdGhpcy5fY29u
dGFpbmVyRWxlbWVudC5vZmZzZXRIZWlnaHQ7CisgICAgdmFyIGNoaWxkTm9kZXMgPSB0aGlzLl9j
b250YWluZXJFbGVtZW50LmNoaWxkTm9kZXM7CisgICAgZm9yICh2YXIgaSA9IGNoaWxkTm9kZXMu
bGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpeworICAgICAgICB2YXIgbm9kZSA9IGNoaWxkTm9kZXNb
aV07CisgICAgICAgIGlmIChub2RlLm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSB8fCAh
bm9kZS5jbGFzc0xpc3QuY29udGFpbnMoU3VnZ2VzdGlvblBpY2tlci5MaXN0RW50cnlDbGFzcykp
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNjcm9sbEJvdHRvbSAtIG5vZGUu
b2Zmc2V0VG9wID4gU3VnZ2VzdGlvblBpY2tlci5WaXNpYmxlRW50cnlUaHJlc2hvbGRIZWlnaHQp
CisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7Cit9Owor
CisvKioKKyAqIEBwYXJhbSB7IUV2ZW50fSBldmVudAorICovCitTdWdnZXN0aW9uUGlja2VyLnBy
b3RvdHlwZS5faGFuZGxlQm9keUtleURvd24gPSBmdW5jdGlvbihldmVudCkgeworICAgIHZhciBl
dmVudEhhbmRsZWQgPSBmYWxzZTsKKyAgICB2YXIga2V5ID0gZXZlbnQua2V5SWRlbnRpZmllcjsK
KyAgICBpZiAoa2V5ID09PSAiVSswMDFCIikgeyAvLyBFU0MKKyAgICAgICAgdGhpcy5oYW5kbGVD
YW5jZWwoKTsKKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtl
eSA9PSAiVXAiKSB7CisgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3Vt
ZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlz
dEVudHJ5Q2xhc3MpKSB7CisgICAgICAgICAgICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0
aXZlRWxlbWVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nOyBub2RlOyBub2RlID0gbm9kZS5wcmV2
aW91c0VsZW1lbnRTaWJsaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG5vZGUuY2xhc3NMaXN0
LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKSB7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX2lzRm9jdXNCeU1vdXNlID0gZmFsc2U7CisgICAgICAgICAgICAgICAg
ICAgIG5vZGUuZm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhp
cy5fZWxlbWVudC5xdWVyeVNlbGVjdG9yKCIuIiArIFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5
Q2xhc3MgKyAiOmxhc3QtY2hpbGQiKS5mb2N1cygpOworICAgICAgICB9CisgICAgICAgIGV2ZW50
SGFuZGxlZCA9IHRydWU7CisgICAgfSBlbHNlIGlmIChrZXkgPT0gIkRvd24iKSB7CisgICAgICAg
IGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xh
c3NMaXN0LmNvbnRhaW5zKFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKSB7CisgICAg
ICAgICAgICBmb3IgKHZhciBub2RlID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudC5uZXh0RWxlbWVu
dFNpYmxpbmc7IG5vZGU7IG5vZGUgPSBub2RlLm5leHRFbGVtZW50U2libGluZykgeworICAgICAg
ICAgICAgICAgIGlmIChub2RlLmNsYXNzTGlzdC5jb250YWlucyhTdWdnZXN0aW9uUGlja2VyLkxp
c3RFbnRyeUNsYXNzKSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc0ZvY3VzQnlNb3Vz
ZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBub2RlLmZvY3VzKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2VsZW1lbnQucXVlcnlTZWxlY3RvcigiLiIg
KyBTdWdnZXN0aW9uUGlja2VyLkxpc3RFbnRyeUNsYXNzICsgIjpmaXJzdC1jaGlsZCIpLmZvY3Vz
KCk7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2Ug
aWYgKGtleSA9PT0gIkVudGVyIikgeworICAgICAgICB0aGlzLnNlbGVjdEVudHJ5KGRvY3VtZW50
LmFjdGl2ZUVsZW1lbnQpOworICAgICAgICBldmVudEhhbmRsZWQgPSB0cnVlOworICAgIH0gZWxz
ZSBpZiAoa2V5ID09PSAiUGFnZVVwIikgeworICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50
LnNjcm9sbFRvcCAtPSB0aGlzLl9jb250YWluZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAg
ICAgLy8gU2Nyb2xsaW5nIGNhdXNlcyBtb3VzZW92ZXIgZXZlbnQgdG8gYmUgY2FsbGVkIGFuZCB0
aGF0IHRyaWVzIHRvIG1vdmUgdGhlIGZvY3VzIHRvby4KKyAgICAgICAgLy8gVG8gcHJldmVudCBm
bGlja2VyaW5nIHdlIHdvbid0IGZvY3VzIGlmIHRoZSBjdXJyZW50IGZvY3VzIHdhcyBjYXVzZWQg
YnkgdGhlIG1vdXNlLgorICAgICAgICBpZiAoIXRoaXMuX2lzRm9jdXNCeU1vdXNlKQorICAgICAg
ICAgICAgdGhpcy5fZmluZEZpcnN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAgICAgICAgZXZl
bnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKGtleSA9PT0gIlBhZ2VEb3duIikgewor
ICAgICAgICB0aGlzLl9jb250YWluZXJFbGVtZW50LnNjcm9sbFRvcCArPSB0aGlzLl9jb250YWlu
ZXJFbGVtZW50LmNsaWVudEhlaWdodDsKKyAgICAgICAgaWYgKCF0aGlzLl9pc0ZvY3VzQnlNb3Vz
ZSkKKyAgICAgICAgICAgIHRoaXMuX2ZpbmRMYXN0VmlzaWJsZUVudHJ5KCkuZm9jdXMoKTsKKyAg
ICAgICAgZXZlbnRIYW5kbGVkID0gdHJ1ZTsKKyAgICB9CisgICAgaWYgKGV2ZW50SGFuZGxlZCkK
KyAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKK307CisKKy8qKgorICogQHBhcmFtIHsh
RXZlbnR9IGV2ZW50CisgKi8KK1N1Z2dlc3Rpb25QaWNrZXIucHJvdG90eXBlLl9oYW5kbGVFbnRy
eU1vdXNlT3ZlciA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgdmFyIGVudHJ5ID0gZW5jbG9zaW5n
Tm9kZU9yU2VsZldpdGhDbGFzcyhldmVudC50YXJnZXQsIFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVu
dHJ5Q2xhc3MpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlzLl9p
c0ZvY3VzQnlNb3VzZSA9IHRydWU7CisgICAgZW50cnkuZm9jdXMoKTsKKyAgICBldmVudC5wcmV2
ZW50RGVmYXVsdCgpOworfTsKKworLyoqCisgKiBAcGFyYW0geyFFdmVudH0gZXZlbnQKKyAqLwor
U3VnZ2VzdGlvblBpY2tlci5wcm90b3R5cGUuX2hhbmRsZU1vdXNlT3V0ID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBpZiAoIWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5z
KFN1Z2dlc3Rpb25QaWNrZXIuTGlzdEVudHJ5Q2xhc3MpKQorICAgICAgICByZXR1cm47CisgICAg
dGhpcy5faXNGb2N1c0J5TW91c2UgPSBmYWxzZTsKKyAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50
LmJsdXIoKTsKKyAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpOworfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXAvV2ViQ29yZS5neXAKaW5kZXggYzY2M2IyODdkOTY1ODY0NmMxMWYyOTJlYzQ1YTE2
ZTFkN2UzYmJhYy4uZDlhNTU5MTFlYzdhMTY5NzkzNmY0ZTRiMjhhYzRiOWZkYWEzMzZkOCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXAvV2ViQ29yZS5neXAKQEAgLTk0Niw2ICs5NDYsOCBAQAog
ICAgICAgICAgICdpbnB1dHMnOiBbCiAgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vwb3B1
cHMvY2FsZW5kYXJQaWNrZXIuY3NzJywKICAgICAgICAgICAgICcuLi9SZXNvdXJjZXMvcGFnZXBv
cHVwcy9jYWxlbmRhclBpY2tlci5qcycsCisgICAgICAgICAgICAnLi4vUmVzb3VyY2VzL3BhZ2Vw
b3B1cHMvc3VnZ2VzdGlvblBpY2tlci5jc3MnLAorICAgICAgICAgICAgJy4uL1Jlc291cmNlcy9w
YWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuanMnLAogICAgICAgICAgIF0sCiAgICAgICAgICAg
J291dHB1dHMnOiBbCiAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvd2Vi
a2l0L0NhbGVuZGFyUGlja2VyLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRGF0ZVRpbWVDaG9vc2VySW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9EYXRlVGltZUNob29zZXJJbXBsLmNwcAppbmRleCBmYzNmNmNjMTkxYTY3OWY0YTU0MzdkOGFh
YjQ5NjRhMjJkOWM3YjAzLi40ZTJjNjllOWYwYmQ1YWFmNmFiNGFhNzdjOTNhYTAyZmNiZTJlMDAx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJ
bXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRlVGltZUNob29zZXJJ
bXBsLmNwcApAQCAtODgsNiArODgsNyBAQCB2b2lkIERhdGVUaW1lQ2hvb3NlckltcGw6OndyaXRl
RG9jdW1lbnQoV2ViQ29yZTo6RG9jdW1lbnRXcml0ZXImIHdyaXRlcikKIAogICAgIGFkZFN0cmlu
ZygiPCFET0NUWVBFIGh0bWw+PGhlYWQ+PG1ldGEgY2hhcnNldD0nVVRGLTgnPjxzdHlsZT5cbiIs
IHdyaXRlcik7CiAgICAgd3JpdGVyLmFkZERhdGEoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzLCBz
aXplb2YoV2ViQ29yZTo6cGlja2VyQ29tbW9uQ3NzKSk7CisgICAgd3JpdGVyLmFkZERhdGEoV2Vi
Q29yZTo6c3VnZ2VzdGlvblBpY2tlckNzcywgc2l6ZW9mKFdlYkNvcmU6OnN1Z2dlc3Rpb25QaWNr
ZXJDc3MpKTsKICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckNzcywg
c2l6ZW9mKFdlYkNvcmU6OmNhbGVuZGFyUGlja2VyQ3NzKSk7CiAgICAgQ1N0cmluZyBleHRyYVN0
eWxlID0gV2ViQ29yZTo6UmVuZGVyVGhlbWU6OmRlZmF1bHRUaGVtZSgpLT5leHRyYUNhbGVuZGFy
UGlja2VyU3R5bGVTaGVldCgpOwogICAgIGlmIChleHRyYVN0eWxlLmxlbmd0aCgpKQpAQCAtMTE0
LDEwICsxMTUsMTMgQEAgdm9pZCBEYXRlVGltZUNob29zZXJJbXBsOjp3cml0ZURvY3VtZW50KFdl
YkNvcmU6OkRvY3VtZW50V3JpdGVyJiB3cml0ZXIpCiAgICAgICAgIGFkZFByb3BlcnR5KCJzdWdn
ZXN0aW9uTGFiZWxzIiwgbV9wYXJhbWV0ZXJzLnN1Z2dlc3Rpb25MYWJlbHMsIHdyaXRlcik7CiAg
ICAgICAgIGFkZFByb3BlcnR5KCJzaG93T3RoZXJEYXRlRW50cnkiLCBtX3BhcmFtZXRlcnMudHlw
ZSA9PSBXZWJDb3JlOjpJbnB1dFR5cGVOYW1lczo6ZGF0ZSgpLCB3cml0ZXIpOwogICAgICAgICBh
ZGRQcm9wZXJ0eSgib3RoZXJEYXRlTGFiZWwiLCBQbGF0Zm9ybTo6Y3VycmVudCgpLT5xdWVyeUxv
Y2FsaXplZFN0cmluZyhXZWJMb2NhbGl6ZWRTdHJpbmc6Ok90aGVyRGF0ZUxhYmVsKSwgd3JpdGVy
KTsKKyAgICAgICAgYWRkUHJvcGVydHkoInN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvciIsIFdlYkNv
cmU6OlJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+YWN0aXZlTGlzdEJveFNlbGVjdGlvbkJh
Y2tncm91bmRDb2xvcigpLnNlcmlhbGl6ZWQoKSwgd3JpdGVyKTsKKyAgICAgICAgYWRkUHJvcGVy
dHkoInN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3IiLCBXZWJDb3JlOjpSZW5kZXJUaGVtZTo6
ZGVmYXVsdFRoZW1lKCktPmFjdGl2ZUxpc3RCb3hTZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKS5z
ZXJpYWxpemVkKCksIHdyaXRlcik7CiAgICAgfQogICAgIGFkZFN0cmluZygifVxuIiwgd3JpdGVy
KTsKIAogICAgIHdyaXRlci5hZGREYXRhKFdlYkNvcmU6OnBpY2tlckNvbW1vbkpzLCBzaXplb2Yo
V2ViQ29yZTo6cGlja2VyQ29tbW9uSnMpKTsKKyAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpz
dWdnZXN0aW9uUGlja2VySnMsIHNpemVvZihXZWJDb3JlOjpzdWdnZXN0aW9uUGlja2VySnMpKTsK
ICAgICB3cml0ZXIuYWRkRGF0YShXZWJDb3JlOjpjYWxlbmRhclBpY2tlckpzLCBzaXplb2YoV2Vi
Q29yZTo6Y2FsZW5kYXJQaWNrZXJKcykpOwogICAgIGFkZFN0cmluZygiPC9zY3JpcHQ+PC9ib2R5
PlxuIiwgd3JpdGVyKTsKIH0KZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRl
eCA4ZGM1M2Y1YzU5OThmMDBlNjNmY2Y1MjJlNzg4MzQ2ZDFiNWQ0ZGYwLi45N2E2MWFmNjhhY2Yz
ZDgwMzNiNGQyNmQ1YjIyMjg1N2E5MzgxMGEwIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTItMDktMjIgIEtlaXNoaSBIYXR0b3JpICA8
a2Vpc2hpQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHN1Z2dlc3Rpb25QaWNrZXIgdG8gQ2Fs
ZW5kYXJQaWNrZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk3MjAxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCisKKyAgICAgICAg
KiBNYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbDogQWRkZWQgdGVzdHMgZm9y
IFN1Z2dlc3Rpb25QaWNrZXIuCisKIDIwMTItMDktMjEgIEFtaSBGaXNjaG1hbiAgPGZpc2NobWFu
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBIVE1MTWVkaWFFbGVtZW50IGlzbid0IGdhcmJhZ2Ug
Y29sbGVjdGVkIGJldHdlZW4gZG9jdW1lbnQgcmVsb2FkcwpkaWZmIC0tZ2l0IGEvTWFudWFsVGVz
dHMvZm9ybXMvY2FsZW5kYXItcGlja2VyLmh0bWwgYi9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRh
ci1waWNrZXIuaHRtbAppbmRleCA0MzhlYjZmNmY2ODUwZmY0MmFiMTllN2VlMjE3ZDA5NTE5NDc2
NzIyLi4zZTNlMzNlODNiMjgyYzk3MjhjZjJkODA1YjEzMWVjNGIyYjM1MmZjIDEwMDY0NAotLS0g
YS9NYW51YWxUZXN0cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbAorKysgYi9NYW51YWxUZXN0
cy9mb3Jtcy9jYWxlbmRhci1waWNrZXIuaHRtbApAQCAtMjMsNiArMjMsOCBAQCBpZnJhbWUgewog
IDxvcHRpb24+RW5nbGlzaDwvb3B0aW9uPgogIDxvcHRpb24+SmFwYW5lc2U8L29wdGlvbj4KICA8
b3B0aW9uPkFyYWJpYzwvb3B0aW9uPgorIDxvcHRpb24+d2l0aCBkYXRhbGlzdDwvb3B0aW9uPgor
IDxvcHRpb24+d2l0aCBsb25nIGRhdGFsaXN0PC9vcHRpb24+CiA8L3NlbGVjdD4KIAogPGRpdj48
aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImRhdGUiPjwvZGl2PgpAQCAtNjgsNiArNzAsODMgQEAgdmFy
IGFyYWJpY0FyZ3VtZW50cyA9IHsKICAgICBzdGVwIDogMSwKICAgICBtYXggOiAnMjAyMC0wNS0x
NScsCiB9OwordmFyIGRhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2FsZTogJ2VuLVVTJywK
KyAgICBtb250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdNYXJjaCcsICdBcHJp
bCcsICdNYXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1NlcHRlbWJlcicsICdP
Y3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFiZWxzIDogWydTdW4n
LCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwKKyAgICB0b2RheUxh
YmVsIDogJ1RvZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAgICBjYW5jZWxMYWJl
bCA6ICdDYW5jZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3RlcCA6IDEsCisgICAg
bWF4IDogJzIwOTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXMgOiBbJzIwMTItMDEtMDEn
LCAnMjAxMi0wNi0wMycsICcyMDEyLTA5LTA2JywgJzIwMTItMTItMjQnXSwKKyAgICBsb2NhbGl6
ZWRTdWdnZXN0aW9uVmFsdWVzIDogWycxLzEvMTInLCAnNi8zLzEyJywgJzkvNi8xMicsICcxMi8y
NC8xMiddLAorICAgIHN1Z2dlc3Rpb25MYWJlbHMgOiBbJycsICdCaXJ0aGRheScsICcnLCAnQ2hy
aXN0bWFzJ10sCisgICAgc2hvd090aGVyRGF0ZUVudHJ5OiB0cnVlLAorICAgIG90aGVyRGF0ZUxh
YmVsOiAnT3RoZXIuLi4nLAorICAgIGlucHV0V2lkdGg6IDEyNywKKyAgICBzdWdnZXN0aW9uSGln
aGxpZ2h0Q29sb3I6ICIjMDAwMGZmIiwKKyAgICBzdWdnZXN0aW9uSGlnaGxpZ2h0VGV4dENvbG9y
OiAiI2ZmZmZmZiIKK307Cit2YXIgbG9uZ0RhdGFsaXN0QXJndW1lbnRzID0geworICAgIGxvY2Fs
ZTogJ2VuLVVTJywKKyAgICBtb250aExhYmVscyA6IFsnSmFudWFyeScsICdGZWJydWFyeScsICdN
YXJjaCcsICdBcHJpbCcsICdNYXknLCAnSnVuZScsCisgICAgJ0p1bHknLCAnQXVndXN0JywgJ1Nl
cHRlbWJlcicsICdPY3RvYmVyJywgJ05vdmVtYmVyJywgJ0RlY2VtYmVyJ10sCisgICAgZGF5TGFi
ZWxzIDogWydTdW4nLCAnTW9uJywgJ1R1ZScsICdXZWQnLCAnVGh1JywgJ0ZyaScsICdTYXQnXSwK
KyAgICB0b2RheUxhYmVsIDogJ1RvZGF5JywKKyAgICBjbGVhckxhYmVsIDogJ0NsZWFyJywKKyAg
ICBjYW5jZWxMYWJlbCA6ICdDYW5jZWwnLAorICAgIHdlZWtTdGFydERheSA6IDAsCisgICAgc3Rl
cCA6IDEsCisgICAgbWF4IDogJzIwOTktMTItMzEnLAorICAgIHN1Z2dlc3Rpb25WYWx1ZXM6IFsi
MjAxMi0wMS0wMSIsICIyMDEyLTAxLTAyIiwgIjIwMTItMDEtMDMiLCAiMjAxMi0wMS0wNCIsCisg
ICAgICAgICIyMDEyLTAxLTA1IiwgIjIwMTItMDEtMDYiLCAiMjAxMi0wMS0wNyIsICIyMDEyLTAx
LTA4IiwgIjIwMTItMDEtMDkiLAorICAgICAgICAiMjAxMi0wMS0xMCIsICIyMDEyLTAxLTExIiwg
IjIwMTItMDEtMTIiLCAiMjAxMi0wMS0xMyIsICIyMDEyLTAxLTE0IiwKKyAgICAgICAgIjIwMTIt
MDEtMTUiLCAiMjAxMi0wMS0xNiIsICIyMDEyLTAxLTE3IiwgIjIwMTItMDEtMTgiLCAiMjAxMi0w
MS0xOSIsCisgICAgICAgICIyMDEyLTAxLTIwIiwgIjIwMTItMDEtMjEiLCAiMjAxMi0wMS0yMiIs
ICIyMDEyLTAxLTIzIiwgIjIwMTItMDEtMjQiLAorICAgICAgICAiMjAxMi0wMS0yNSIsICIyMDEy
LTAxLTI2IiwgIjIwMTItMDEtMjciLCAiMjAxMi0wMS0yOCIsICIyMDEyLTAxLTI5IiwKKyAgICAg
ICAgIjIwMTItMDEtMzAiLCAiMjAxMi0wMS0zMSIsICIyMDEyLTAyLTAxIiwgIjIwMTItMDItMDIi
LCAiMjAxMi0wMi0wMyIsCisgICAgICAgICIyMDEyLTAyLTA0IiwgIjIwMTItMDItMDUiLCAiMjAx
Mi0wMi0wNiIsICIyMDEyLTAyLTA3IiwgIjIwMTItMDItMDgiLAorICAgICAgICAiMjAxMi0wMi0w
OSIsICIyMDEyLTAyLTEwIiwgIjIwMTItMDItMTEiLCAiMjAxMi0wMi0xMiIsICIyMDEyLTAyLTEz
IiwKKyAgICAgICAgIjIwMTItMDItMTQiLCAiMjAxMi0wMi0xNSIsICIyMDEyLTAyLTE2IiwgIjIw
MTItMDItMTciLCAiMjAxMi0wMi0xOCIsCisgICAgICAgICIyMDEyLTAyLTE5IiwgIjIwMTItMDIt
MjAiLCAiMjAxMi0wMi0yMSIsICIyMDEyLTAyLTIyIiwgIjIwMTItMDItMjMiLAorICAgICAgICAi
MjAxMi0wMi0yNCIsICIyMDEyLTAyLTI1IiwgIjIwMTItMDItMjYiLCAiMjAxMi0wMi0yNyIsICIy
MDEyLTAyLTI4IiwKKyAgICAgICAgIjIwMTItMDItMjkiLCAiMjAxMi0wMy0wMSIsICIyMDEyLTAz
LTAyIiwgIjIwMTItMDMtMDMiLCAiMjAxMi0wMy0wNCIsCisgICAgICAgICIyMDEyLTAzLTA1Iiwg
IjIwMTItMDMtMDYiLCAiMjAxMi0wMy0wNyIsICIyMDEyLTAzLTA4IiwgIjIwMTItMDMtMDkiLAor
ICAgICAgICAiMjAxMi0wMy0xMCIsICIyMDEyLTAzLTExIiwgIjIwMTItMDMtMTIiLCAiMjAxMi0w
My0xMyIsICIyMDEyLTAzLTE0IiwKKyAgICAgICAgIjIwMTItMDMtMTUiLCAiMjAxMi0wMy0xNiIs
ICIyMDEyLTAzLTE3IiwgIjIwMTItMDMtMTgiLCAiMjAxMi0wMy0xOSIsCisgICAgICAgICIyMDEy
LTAzLTIwIiwgIjIwMTItMDMtMjEiLCAiMjAxMi0wMy0yMiIsICIyMDEyLTAzLTIzIiwgIjIwMTIt
MDMtMjQiLAorICAgICAgICAiMjAxMi0wMy0yNSIsICIyMDEyLTAzLTI2IiwgIjIwMTItMDMtMjci
LCAiMjAxMi0wMy0yOCIsICIyMDEyLTAzLTI5IiwKKyAgICAgICAgIjIwMTItMDMtMzAiLCAiMjAx
Mi0wMy0zMSJdLAorICAgIGxvY2FsaXplZFN1Z2dlc3Rpb25WYWx1ZXM6IFsiMS8xLzEyIiwgIjEv
Mi8xMiIsICIxLzMvMTIiLCAiMS80LzEyIiwKKyAgICAgICAgIjEvNS8xMiIsICIxLzYvMTIiLCAi
MS83LzEyIiwgIjEvOC8xMiIsICIxLzkvMTIiLCAiMS8xMC8xMiIsICIxLzExLzEyIiwKKyAgICAg
ICAgIjEvMTIvMTIiLCAiMS8xMy8xMiIsICIxLzE0LzEyIiwgIjEvMTUvMTIiLCAiMS8xNi8xMiIs
ICIxLzE3LzEyIiwKKyAgICAgICAgIjEvMTgvMTIiLCAiMS8xOS8xMiIsICIxLzIwLzEyIiwgIjEv
MjEvMTIiLCAiMS8yMi8xMiIsICIxLzIzLzEyIiwKKyAgICAgICAgIjEvMjQvMTIiLCAiMS8yNS8x
MiIsICIxLzI2LzEyIiwgIjEvMjcvMTIiLCAiMS8yOC8xMiIsICIxLzI5LzEyIiwKKyAgICAgICAg
IjEvMzAvMTIiLCAiMS8zMS8xMiIsICIyLzEvMTIiLCAiMi8yLzEyIiwgIjIvMy8xMiIsICIyLzQv
MTIiLCAiMi81LzEyIiwKKyAgICAgICAgIjIvNi8xMiIsICIyLzcvMTIiLCAiMi84LzEyIiwgIjIv
OS8xMiIsICIyLzEwLzEyIiwgIjIvMTEvMTIiLCAiMi8xMi8xMiIsCisgICAgICAgICIyLzEzLzEy
IiwgIjIvMTQvMTIiLCAiMi8xNS8xMiIsICIyLzE2LzEyIiwgIjIvMTcvMTIiLCAiMi8xOC8xMiIs
CisgICAgICAgICIyLzE5LzEyIiwgIjIvMjAvMTIiLCAiMi8yMS8xMiIsICIyLzIyLzEyIiwgIjIv
MjMvMTIiLCAiMi8yNC8xMiIsCisgICAgICAgICIyLzI1LzEyIiwgIjIvMjYvMTIiLCAiMi8yNy8x
MiIsICIyLzI4LzEyIiwgIjIvMjkvMTIiLCAiMy8xLzEyIiwKKyAgICAgICAgIjMvMi8xMiIsICIz
LzMvMTIiLCAiMy80LzEyIiwgIjMvNS8xMiIsICIzLzYvMTIiLCAiMy83LzEyIiwgIjMvOC8xMiIs
CisgICAgICAgICIzLzkvMTIiLCAiMy8xMC8xMiIsICIzLzExLzEyIiwgIjMvMTIvMTIiLCAiMy8x
My8xMiIsICIzLzE0LzEyIiwgCisgICAgICAgICIzLzE1LzEyIiwgIjMvMTYvMTIiLCAiMy8xNy8x
MiIsICIzLzE4LzEyIiwgIjMvMTkvMTIiLCAiMy8yMC8xMiIsCisgICAgICAgICIzLzIxLzEyIiwg
IjMvMjIvMTIiLCAiMy8yMy8xMiIsICIzLzI0LzEyIiwgIjMvMjUvMTIiLCAiMy8yNi8xMiIsCisg
ICAgICAgICIzLzI3LzEyIiwgIjMvMjgvMTIiLCAiMy8yOS8xMiIsICIzLzMwLzEyIiwgIjMvMzEv
MTIiXSwKKyAgICBzdWdnZXN0aW9uTGFiZWxzOiBbIlRvZGF5IiwgIlRvbW9ycm93IiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIi
LCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAg
ICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIs
ICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwKKyAgICAgICAgIiIs
ICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwg
IiIsICIiLCAiIiwKKyAgICAgICAgIiIsICIiLCAiIiwgIiIsICIiLCAiIiwgIiIsICIiXSwKKyAg
ICBzaG93T3RoZXJEYXRlRW50cnk6IHRydWUsCisgICAgb3RoZXJEYXRlTGFiZWw6ICdPdGhlci4u
LicsCisgICAgaW5wdXRXaWR0aDogMTI3LAorICAgIHN1Z2dlc3Rpb25IaWdobGlnaHRDb2xvcjog
IiMwMDAwZmYiLAorICAgIHN1Z2dlc3Rpb25IaWdobGlnaHRUZXh0Q29sb3I6ICIjZmZmZmZmIgor
fTsKIAogZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICB2YXIgZnJhbWUgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaWZyYW1lJylbMF07CkBAIC03Nyw2ICsxNTYsMTAg
QEAgZnVuY3Rpb24gb3BlbkNhbGVuZGFyKGFyZ3MpIHsKICAgICBjb21tb25Dc3NMaW5rLnJlbCA9
ICdzdHlsZXNoZWV0JzsKICAgICBjb21tb25Dc3NMaW5rLmhyZWYgPSAnLi4vLi4vU291cmNlL1dl
YkNvcmUvUmVzb3VyY2VzL3BhZ2Vwb3B1cHMvcGlja2VyQ29tbW9uLmNzcz8nICsgKG5ldyBEYXRl
KCkpLmdldFRpbWUoKTsKICAgICBkb2MuaGVhZC5hcHBlbmRDaGlsZChjb21tb25Dc3NMaW5rKTsK
KyAgICB2YXIgc3VnZ2VzdGlvblBpY2tlckNzc0xpbmsgPSBkb2MuY3JlYXRlRWxlbWVudCgnbGlu
aycpOworICAgIHN1Z2dlc3Rpb25QaWNrZXJDc3NMaW5rLnJlbCA9ICdzdHlsZXNoZWV0JzsKKyAg
ICBzdWdnZXN0aW9uUGlja2VyQ3NzTGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jl
c291cmNlcy9wYWdlcG9wdXBzL3N1Z2dlc3Rpb25QaWNrZXIuY3NzPycgKyAobmV3IERhdGUoKSku
Z2V0VGltZSgpOworICAgIGRvYy5oZWFkLmFwcGVuZENoaWxkKHN1Z2dlc3Rpb25QaWNrZXJDc3NM
aW5rKTsKICAgICB2YXIgbGluayA9IGRvYy5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CiAgICAgbGlu
ay5yZWwgPSAnc3R5bGVzaGVldCc7CiAgICAgbGluay5ocmVmID0gJy4uLy4uL1NvdXJjZS9XZWJD
b3JlL1Jlc291cmNlcy9wYWdlcG9wdXBzL2NhbGVuZGFyUGlja2VyLmNzcz8nICsgKG5ldyBEYXRl
KCkpLmdldFRpbWUoKTsKQEAgLTg0LDYgKzE2Nyw5IEBAIGZ1bmN0aW9uIG9wZW5DYWxlbmRhcihh
cmdzKSB7CiAgICAgdmFyIGNvbW1vbkpzU2NyaXB0ID0gZG9jLmNyZWF0ZUVsZW1lbnQoJ3Njcmlw
dCcpOwogICAgIGNvbW1vbkpzU2NyaXB0LnNyYyA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9SZXNv
dXJjZXMvcGFnZXBvcHVwcy9waWNrZXJDb21tb24uanM/JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1l
KCk7CiAgICAgZG9jLmJvZHkuYXBwZW5kQ2hpbGQoY29tbW9uSnNTY3JpcHQpOworICAgIHZhciBz
dWdnZXN0aW9uUGlja2VySnNTY3JpcHQgPSBkb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7Cisg
ICAgc3VnZ2VzdGlvblBpY2tlckpzU2NyaXB0LnNyYyA9ICcuLi8uLi9Tb3VyY2UvV2ViQ29yZS9S
ZXNvdXJjZXMvcGFnZXBvcHVwcy9zdWdnZXN0aW9uUGlja2VyLmpzPycgKyAobmV3IERhdGUoKSku
Z2V0VGltZSgpOworICAgIGRvYy5ib2R5LmFwcGVuZENoaWxkKHN1Z2dlc3Rpb25QaWNrZXJKc1Nj
cmlwdCk7CiAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsKICAg
ICBzY3JpcHQuc3JjID0gJy4uLy4uL1NvdXJjZS9XZWJDb3JlL1Jlc291cmNlcy9wYWdlcG9wdXBz
L2NhbGVuZGFyUGlja2VyLmpzPycgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpOwogICAgIGRvYy5i
b2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7CkBAIC0xMjEsNiArMjA3LDEyIEBAIGZ1bmN0aW9uIHNl
bGVjdGVkKHNlbGVjdCkgewogICAgIGNhc2UgMjoKICAgICAgICAgb3BlbkNhbGVuZGFyKGFyYWJp
Y0FyZ3VtZW50cyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgb3BlbkNh
bGVuZGFyKGRhdGFsaXN0QXJndW1lbnRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSA0Ogor
ICAgICAgICBvcGVuQ2FsZW5kYXIobG9uZ0RhdGFsaXN0QXJndW1lbnRzKTsKKyAgICAgICAgYnJl
YWs7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>