<?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>40228</bug_id>
          
          <creation_ts>2010-06-07 04:36:07 -0700</creation_ts>
          <short_desc>Web Inspector: Enable serialization/deserialization of the frontend state</short_desc>
          <delta_ts>2010-07-05 05:28:55 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>234788</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-07 04:36:07 -0700</bug_when>
    <thetext>In order to introduce CSS source patching on style modification via the Web Inspector, the changes made should be persisted by the frontend and restored next time the frontend is opened for the same inspector session (i.e., unless the user has navigated away from the inspected page). I believe, we are likely to expand the scope of data persisted/loaded this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234825</commentid>
    <comment_count>1</comment_count>
      <attachid>58024</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-07 06:48:43 -0700</bug_when>
    <thetext>Created attachment 58024
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234831</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-07 06:58:37 -0700</bug_when>
    <thetext>Attachment 58024 did not build on mac:
Build output: http://webkit-commit-queue.appspot.com/results/3070210</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234854</commentid>
    <comment_count>3</comment_count>
      <attachid>58030</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-07 08:05:27 -0700</bug_when>
    <thetext>Created attachment 58030
[PATCH] Fixed compilability on mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234873</commentid>
    <comment_count>4</comment_count>
      <attachid>58030</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 08:35:44 -0700</bug_when>
    <thetext>Comment on attachment 58030
[PATCH] Fixed compilability on mac

WebCore/inspector/InspectorBackend.idl:38
 +          void saveFrontendSession(in DOMString sessionData);
I would introduce a setSessionProperty (with corresponding push method on front-end) instead. You can use new InspectorValue class as a dictionary that can be JSON-stringified.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234946</commentid>
    <comment_count>5</comment_count>
      <attachid>58052</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-07 11:24:51 -0700</bug_when>
    <thetext>Created attachment 58052
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234948</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-07 11:26:27 -0700</bug_when>
    <thetext>Attachment 58052 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/inspector/front-end/Settings.js:71:  Line contains tab character.  [whitespace/tab] [5]
WebCore/inspector/front-end/Settings.js:111:  Line contains tab character.  [whitespace/tab] [5]
WebCore/inspector/front-end/Settings.js:113:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 3 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234950</commentid>
    <comment_count>7</comment_count>
      <attachid>58054</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-07 11:30:47 -0700</bug_when>
    <thetext>Created attachment 58054
[PATCH] Style fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>234976</commentid>
    <comment_count>8</comment_count>
      <attachid>58054</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-07 11:52:10 -0700</bug_when>
    <thetext>Comment on attachment 58054
[PATCH] Style fixed

We are using same control flow / data structures for the &quot;FrontendSettings&quot; and &quot;SessionProperties&quot;. Furthermore, data structure is called Settings on the front-end side. I think we should align the naming better. I realize that &apos;settings&apos; is not the best name for the session store, but I don&apos;t like the way you name the new thing. Rest of the patch seems to be fine. Clearing r? flag while I am thinking of the better names. Please think about it too and suggest things!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235256</commentid>
    <comment_count>9</comment_count>
      <attachid>58138</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-08 07:59:04 -0700</bug_when>
    <thetext>Created attachment 58138
[PATCH] Implemented suggested naming convention

Settled on &quot;applicationSettings&quot; for persistence across launches, &quot;sessionSettings&quot; for persistence across frontends in a single session (until didCommitLoad() is called).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235371</commentid>
    <comment_count>10</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-08 11:05:33 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; Created an attachment (id=58138) [details]
&gt; [PATCH] Implemented suggested naming convention
&gt; 
&gt; Settled on &quot;applicationSettings&quot; for persistence across launches,
&gt; &quot;sessionSettings&quot; for persistence across frontends in a single
&gt; session (until didCommitLoad() is called).&apos;

This last patch looks great to me. I&apos;ll let Pavel take a final
look at it though, as he knows more about this.

What type of sessionSettings do you envision?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235380</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-08 11:13:09 -0700</bug_when>
    <thetext>The upcoming use is going to be the changes to the CSS source a user makes via the Styles pane (all source deltas are going to be computed/stored in the frontend and, as such, will be lost when the inspector window is closed). This patch is aimed to prevent this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235388</commentid>
    <comment_count>12</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2010-06-08 11:21:29 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The upcoming use is going to be the changes to the CSS source a
user makes via the Styles pane (all source deltas are going to be
computed/stored in the frontend and, as such, will be lost when the
inspector window is closed). This patch is aimed to prevent this.

Sounds good! Thats what it sounded like from the original comment,
but I thought there might be some other ideas as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235437</commentid>
    <comment_count>13</comment_count>
      <attachid>58138</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-08 12:41:30 -0700</bug_when>
    <thetext>Comment on attachment 58138
[PATCH] Implemented suggested naming convention

I&apos;m going to be a bit more picky than Joe.

WebCore/inspector/InspectorBackend.cpp:90
 +      m_inspectorController-&gt;setSessionSettings(settings);
Just as above, you should always test for inspector&apos;s availability prior to calling into it. InspectorBackend is refcounted due to being the binding. It can exist after the page + inspector controller are removed. r- for this one.


WebCore/inspector/InspectorController.cpp:283
 +  void InspectorController::setSessionSettings(const String&amp; settings)
I&apos;d call parameter settingsJSON


WebCore/inspector/InspectorController.cpp:283
 +  void InspectorController::setSessionSettings(const String&amp; settings)
Also, I think this API should be setSetting(name, value) + we probably should do the same for application settings. I am sure I mentioned it in one of the previous reviews.


WebCore/inspector/InspectorController.h:128
 +      String setting(const String&amp; key) const;
These are now worth renaming in case they are internal (not sure they are though - could you pleaes check the clients first? I remember some WebKit code using these).


WebCore/inspector/front-end/Settings.js:64
 +      WebInspector.sessionSettings._load(settingsString);
Will this work without installing settings explicitly as above?


WebCore/inspector/front-end/Settings.js:108
 +              var store = JSON.stringify(this._store);
So making it setSettung(name, value) gets tricky due to this code. But I think we should do the same to the application settings. Something like InspectorBackend.saveSetting(name, value, isSession).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235772</commentid>
    <comment_count>14</comment_count>
      <attachid>58242</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-09 07:21:31 -0700</bug_when>
    <thetext>Created attachment 58242
[PATCH] Comments addressed, property-wise persistence introduced</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235781</commentid>
    <comment_count>15</comment_count>
      <attachid>58242</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-06-09 07:54:51 -0700</bug_when>
    <thetext>Comment on attachment 58242
[PATCH] Comments addressed, property-wise persistence introduced

WebCore/inspector/InspectorController.cpp:234
 +  void InspectorController::setFrontendProperty(const String&amp; name, const String&amp; valueJSON, bool session)
valueJSON -&gt; value

I don&apos;t think we need to require value to be JSON-stringified object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235795</commentid>
    <comment_count>16</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-09 08:46:17 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 58242 [details])
&gt; WebCore/inspector/InspectorController.cpp:234
&gt;  +  void InspectorController::setFrontendProperty(const String&amp; name, const String&amp; valueJSON, bool session)
&gt; valueJSON -&gt; value
&gt; 
&gt; I don&apos;t think we need to require value to be JSON-stringified object.

Making InspectorController::setFrontendProperty type-agnostic (i.e. it should save plain strings rather than parse valueJSON into InspectorValues). This breaks the format of the &quot;frontendSettings&quot; setting in the backend store, which is not acceptable (and this case is also not detectable by the backend code, as the property values are interpreted in the frontend by WebInspector.Settings).

Persisting separate application-wide frontend properties into the backing store by their own [prefixed] names is also not an option from the design standpoint; those properties are pushed into the frontend at once (currently, as a single object), and a list of them should be added to InspectorController and kept in sync with that found in Settings.js.

This issue should be resolved before we can move forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236769</commentid>
    <comment_count>17</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-11 04:16:06 -0700</bug_when>
    <thetext>&gt; Making InspectorController::setFrontendProperty type-agnostic (i.e. it should save plain strings rather than parse valueJSON into InspectorValues). This breaks the format of the &quot;frontendSettings&quot; setting in the backend store, which is not acceptable (and this case is also not detectable by the backend code, as the property values are interpreted in the frontend by WebInspector.Settings).

I have attempted a migration of the frontendSettings property format from stringified
store: [key -&gt; objectValue]
to
store: [key -&gt; JSON.stringify(objectValue)]

but the Safari preferences backend fails to properly store value strings like
{&quot;resources-large-rows&quot;:&quot;false&quot;}
turning them into
{&quot;resources-large-rows&quot;:&quot;\&quot;\\\&quot;\\\\\\\&quot;\\\\\\\\\\\\\\\&quot;\\\\\\\\\\\\\\\\\.....

hence I&apos;m reverting to the patch 58138 with comments addressed, but without property-wise persistence (the stores contain objects, and are sent to InspectorBackend as a single stringified object).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236770</commentid>
    <comment_count>18</comment_count>
      <attachid>58461</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-06-11 04:17:56 -0700</bug_when>
    <thetext>Created attachment 58461
[PATCH] Revert to serializing the entire Settings stores (not property-wise)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246591</commentid>
    <comment_count>19</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-07-05 05:28:55 -0700</bug_when>
    <thetext>Committed r61014: &lt;http://trac.webkit.org/changeset/61014&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58024</attachid>
            <date>2010-06-07 06:48:43 -0700</date>
            <delta_ts>2010-06-07 08:05:27 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>9088</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjlhZDBjYS4uNjlmMzk4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc2Vzc2lvbiBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckJhY2tlbmQ6OnNhdmVGcm9udGVuZFNlc3Npb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlc3Npb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6cG9wdWxhdGVGcm9udGVuZFNlc3Npb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5hcHBseVN0eWxlVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuc2V0VXNlckNoYW5nZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRT
ZXNzaW9uKToKKwogMjAxMC0wNi0wNyAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCAzNmY0MWI4Li42YTc5NGZlIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtNDIzLDYgKzQyMywxMiBAQCB2b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OmFkZFJ1bGUobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYgc2VsZWN0b3Is
IGxvbmcgc2VsZWN0ZQogICAgICAgICBkb21BZ2VudC0+YWRkUnVsZShjYWxsSWQsIHNlbGVjdG9y
LCBzZWxlY3RlZE5vZGVJZCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2F2ZUZyb250
ZW5kU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25EYXRhKQoreworICAgIGlmIChJbnNwZWN0
b3JET01BZ2VudCogZG9tQWdlbnQgPSBpbnNwZWN0b3JET01BZ2VudCgpKQorICAgICAgICBtX2lu
c3BlY3RvckNvbnRyb2xsZXItPnNldFNlc3Npb25EYXRhKHNlc3Npb25EYXRhKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpoaWdobGlnaHRET01Ob2RlKGxvbmcgbm9kZUlkKQogewogICAg
IGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmgKaW5kZXggMGViOGU0Yy4uNDIxMGI1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaApAQCAtMTI5LDYgKzEyOSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRvZ2ds
ZVN0eWxlRW5hYmxlZChsb25nIGNhbGxJZCwgbG9uZyBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHBy
b3BlcnR5TmFtZSwgYm9vbCBkaXNhYmxlZCk7CiAgICAgdm9pZCBzZXRSdWxlU2VsZWN0b3IobG9u
ZyBjYWxsSWQsIGxvbmcgcnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBsb25nIHNlbGVj
dGVkTm9kZUlkKTsKICAgICB2b2lkIGFkZFJ1bGUobG9uZyBjYWxsSWQsIGNvbnN0IFN0cmluZyYg
c2VsZWN0b3IsIGxvbmcgc2VsZWN0ZWROb2RlSWQpOworICAgIHZvaWQgc2F2ZUZyb250ZW5kU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25EYXRhKTsKIAogICAgIHZvaWQgaGlnaGxpZ2h0RE9N
Tm9kZShsb25nIG5vZGVJZCk7CiAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdodCgpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCBlOGNmZGI5Li5mZWZmOGY2IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtMzUsNiArMzUsNyBAQCBt
b2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoaW4gRE9NU3Ry
aW5nIHBhbmVsTmFtZSk7CiAKICAgICAgICAgdm9pZCBzYXZlRnJvbnRlbmRTZXR0aW5ncyhpbiBE
T01TdHJpbmcgc2V0dGluZ3MpOworICAgICAgICB2b2lkIHNhdmVGcm9udGVuZFNlc3Npb24oaW4g
RE9NU3RyaW5nIHNlc3Npb25EYXRhKTsKIAogICAgICAgICB2b2lkIGVuYWJsZVNlYXJjaGluZ0Zv
ck5vZGUoKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3YjJjZDdjLi41ZmIzYTIz
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMjc5LDYg
KzI3OSwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmhpZGVIaWdobGlnaHQoKQogICAg
IG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6c2V0U2Vzc2lvbkRhdGEoY29uc3QgU3RyaW5nJiBzZXNzaW9uRGF0YSkKK3sKKyAgICBtX3Nl
c3Npb25EYXRhID0gc2Vzc2lvbkRhdGE7Cit9CisKIGJvb2wgSW5zcGVjdG9yQ29udHJvbGxlcjo6
d2luZG93VmlzaWJsZSgpCiB7CiAgICAgcmV0dXJuIG1fZnJvbnRlbmQ7CkBAIC01OTksNiArNjA0
LDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9iamVjdHMoKQog
CiAgICAgbV9mcm9udGVuZC0+cG9wdWxhdGVJbnRlcmZhY2UoKTsKIAorICAgIGlmICghbV9zZXNz
aW9uRGF0YS5pc0VtcHR5KCkpCisgICAgICAgIG1fZnJvbnRlbmQtPnBvcHVsYXRlRnJvbnRlbmRT
ZXNzaW9uKG1fc2Vzc2lvbkRhdGEpOworCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVu
ZCBjb21tYW5kcwogICAgIGZvciAoVmVjdG9yPHBhaXI8bG9uZywgU3RyaW5nPiA+OjppdGVyYXRv
ciBpdCA9IG1fcGVuZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmJlZ2luKCk7IGl0ICE9IG1fcGVu
ZGluZ0V2YWx1YXRlVGVzdENvbW1hbmRzLmVuZCgpOyArK2l0KQogICAgICAgICBtX2Zyb250ZW5k
LT5ldmFsdWF0ZUZvclRlc3RJbkZyb250ZW5kKCgqaXQpLmZpcnN0LCAoKml0KS5zZWNvbmQpOwpA
QCAtNjczLDYgKzY4MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9h
ZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICB1bmJpbmRBbGxSZXNvdXJjZXMoKTsK
IAogICAgICAgICBtX2Nzc1N0b3JlLT5yZXNldCgpOworICAgICAgICBtX3Nlc3Npb25EYXRhID0g
IiI7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kKSB7CiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5y
ZXNldCgpOwogICAgICAgICAgICAgbV9kb21BZ2VudC0+cmVzZXQoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBiYjZjMzg4Li40YzcwZDg4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0xMzAsNiArMTMwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBoaWdobGlnaHQoTm9kZSopOwog
ICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOworICAgIHZvaWQgc2V0U2Vzc2lvbkRhdGEoY29uc3Qg
U3RyaW5nJik7CiAKICAgICB2b2lkIHNob3coKTsKICAgICB2b2lkIHNob3dQYW5lbChTcGVjaWFs
UGFuZWxzKTsKQEAgLTM0MCw2ICszNDEsNyBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgU3BlY2lh
bFBhbmVscyBtX3Nob3dBZnRlclZpc2libGU7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0
ZWROb2RlOworICAgIFN0cmluZyBtX3Nlc3Npb25EYXRhOwogICAgIHVuc2lnbmVkIG1fZ3JvdXBM
ZXZlbDsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKICAgICBDb25zb2xlTWVzc2FnZSog
bV9wcmV2aW91c01lc3NhZ2U7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAK
aW5kZXggMzkwZWRhYi4uYTZiMWQ1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcApAQCAtOTQsNiArOTQsMTQgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxh
dGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCiAgICAgZnVuY3Rpb24u
Y2FsbCgpOwogfQogCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZUZyb250ZW5kU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25EYXRhKQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7CisgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoInBvcHVsYXRlRnJvbnRlbmRTZXNzaW9uIik7CisgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoc2Vzc2lvbkRhdGEpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwogdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5z
aWduZWQgY291bnQpCiB7CiAgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5z
cGVjdG9yLCAiZGlzcGF0Y2giKTsgCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApp
bmRleCBiOWY4N2VmLi5mYzM1NzRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmgKQEAgLTYwLDYgKzYwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRp
ZENvbW1pdExvYWQoKTsKIAogICAgICAgICB2b2lkIHBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyhj
b25zdCBTdHJpbmcmIHNldHRpbmdzKTsKKyAgICAgICAgdm9pZCBwb3B1bGF0ZUZyb250ZW5kU2Vz
c2lvbihjb25zdCBTdHJpbmcmIHNlc3Npb25EYXRhKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZUNv
bnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KHVuc2lnbmVkIGNvdW50KTsKICAgICAgICAgdm9pZCBh
ZGRDb25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZl
Y3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiA+JiBhcmd1bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCmluZGV4IDY2YTIwY2Uu
LjU3OTQ2MWMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHls
ZU1vZGVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVs
LmpzCkBAIC0xMDcsNSArMTA3LDExIEBAIFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuYXBwbHlTdHls
ZVRleHQoV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoY2FsbGJhY2spLCBzdHlsZUlkLCBzdHls
ZVRleHQsIHByb3BlcnR5TmFtZSk7CisgICAgfSwKKworICAgIHNldFVzZXJDaGFuZ2VzOiBmdW5j
dGlvbih1c2VyQ2hhbmdlcykKKyAgICB7CisgICAgICAgIC8vIEZJWE1FOiB0aGUgMzg1NzggYnVn
IHBhdGNoIHdpbGwgbWFrZSB0aGlzIG1ldGhvZCBpbnZva2UgcmUtcGF0Y2hpbmcgb2YgQ1NTIHN0
eWxlIHNvdXJjZXMKKyAgICAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSBjaGFuZ2VzIGEgdXNlciBt
YWRlIGluIHRoZSBwcmV2aW91cyBmcm9udGVuZCBpbnN0YW5jZSAoYmVmb3JlIHJlLW9wZW5pbmcg
b25lKS4KICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCA4YTc4Y2QyLi5hMGI0YzkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKQEAgLTEzNTMsNiArMTM1MywxMSBAQCBXZWJJbnNwZWN0b3IucG9wdWxhdGVJbnRl
cmZhY2UgPSBmdW5jdGlvbigpCiAgICAgfQogfQogCitXZWJJbnNwZWN0b3IucG9wdWxhdGVGcm9u
dGVuZFNlc3Npb24gPSBmdW5jdGlvbihzZXNzaW9uRGF0YSkKK3sKKyAgICB0aGlzLmNzc01vZGVs
LnNldFVzZXJDaGFuZ2VzKHNlc3Npb25EYXRhKTsKK30KKwogV2ViSW5zcGVjdG9yLnJlc2V0ID0g
ZnVuY3Rpb24oKQogewogICAgIGZvciAodmFyIHBhbmVsTmFtZSBpbiB0aGlzLnBhbmVscykgewpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKaW5kZXggNzEzMTVkYS4uMWVjZWVmMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZworKysgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTMgQEAKKzIwMTAtMDYtMDcgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9y
Zz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBFbmFibGUgc2VyaWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gb2YgdGhlIGZy
b250ZW5kIHNlc3Npb24gc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxl
ckltcGwuanM6CisgICAgICAgIChkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCk6CisKIDIw
MTAtMDYtMDcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pz
L0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCmluZGV4IDg2Zjg4NWEuLjI5YzgyYzUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwpA
QCAtNjgsNiArNjgsNyBAQCBkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCA9IGZ1bmN0aW9u
KCkKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVE
T01TdG9yYWdlSXRlbSIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oInJlbW92ZU5vZGUiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVy
RGVsZWdhdGVfKCJzYXZlRnJvbnRlbmRTZXR0aW5ncyIpOworICAgIHRoaXMuaW5zdGFsbEluc3Bl
Y3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNhdmVGcm9udGVuZFNlc3Npb24iKTsKICAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRBdHRyaWJ1dGUiKTsKICAg
ICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRET01TdG9yYWdl
SXRlbSIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNl
dEluamVjdGVkU2NyaXB0U291cmNlIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58030</attachid>
            <date>2010-06-07 08:05:27 -0700</date>
            <delta_ts>2010-06-07 11:24:51 -0700</delta_ts>
            <desc>[PATCH] Fixed compilability on mac</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>8880</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjlhZDBjYS4uNjlmMzk4ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc2Vzc2lvbiBzdGF0ZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgKKworICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckJhY2tlbmQ6OnNhdmVGcm9udGVuZFNlc3Npb24pOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlc3Npb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVsYXRlU2NyaXB0T2JqZWN0cyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6cG9wdWxhdGVGcm9udGVuZFNlc3Npb24pOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NTdHlsZU1vZGVsLnByb3Rv
dHlwZS5hcHBseVN0eWxlVGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTU3R5bGVNb2Rl
bC5wcm90b3R5cGUuc2V0VXNlckNoYW5nZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRT
ZXNzaW9uKToKKwogMjAxMC0wNi0wNyAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JCYWNrZW5kLmNwcAppbmRleCAzNmY0MWI4Li5mYmM4YWY3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcApAQCAtODUsNiArODUsMTEgQEAgdm9pZCBJbnNwZWN0
b3JCYWNrZW5kOjpzYXZlRnJvbnRlbmRTZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRpbmdzKQog
ICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldFNldHRpbmcoSW5zcGVjdG9yQ29udHJv
bGxlcjo6ZnJvbnRlbmRTZXR0aW5nc1NldHRpbmdOYW1lKCksIHNldHRpbmdzKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JCYWNrZW5kOjpzYXZlRnJvbnRlbmRTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vz
c2lvbkRhdGEpCit7CisgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRTZXNzaW9uRGF0YShz
ZXNzaW9uRGF0YSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c3RvcmVMYXN0QWN0aXZl
UGFuZWwoY29uc3QgU3RyaW5nJiBwYW5lbE5hbWUpCiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29u
dHJvbGxlcikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAppbmRleCAwZWI4ZTRjLi4w
YmM2MDM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCkBAIC01OCw2ICs1OCw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2luc3BlY3Rv
ckNvbnRyb2xsZXIgPSAwOyB9CiAKICAgICB2b2lkIHNhdmVGcm9udGVuZFNldHRpbmdzKGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgc2F2ZUZyb250ZW5kU2Vzc2lvbihjb25zdCBTdHJpbmcmIHNl
c3Npb25EYXRhKTsKIAogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoY29uc3QgU3RyaW5n
JiBwYW5lbE5hbWUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4
IGU4Y2ZkYjkuLmZlZmY4ZjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckJhY2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRs
CkBAIC0zNSw2ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RB
Y3RpdmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAogICAgICAgICB2b2lkIHNhdmVG
cm9udGVuZFNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgc2F2
ZUZyb250ZW5kU2Vzc2lvbihpbiBET01TdHJpbmcgc2Vzc2lvbkRhdGEpOwogCiAgICAgICAgIHZv
aWQgZW5hYmxlU2VhcmNoaW5nRm9yTm9kZSgpOwogICAgICAgICB2b2lkIGRpc2FibGVTZWFyY2hp
bmdGb3JOb2RlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmlu
ZGV4IDdiMmNkN2MuLjVmYjNhMjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRy
b2xsZXIuY3BwCkBAIC0yNzksNiArMjc5LDExIEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
aGlkZUhpZ2hsaWdodCgpCiAgICAgbV9jbGllbnQtPmhpZGVIaWdobGlnaHQoKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmIHNlc3Np
b25EYXRhKQoreworICAgIG1fc2Vzc2lvbkRhdGEgPSBzZXNzaW9uRGF0YTsKK30KKwogYm9vbCBJ
bnNwZWN0b3JDb250cm9sbGVyOjp3aW5kb3dWaXNpYmxlKCkKIHsKICAgICByZXR1cm4gbV9mcm9u
dGVuZDsKQEAgLTU5OSw2ICs2MDQsOSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVs
YXRlU2NyaXB0T2JqZWN0cygpCiAKICAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVyZmFjZSgp
OwogCisgICAgaWYgKCFtX3Nlc3Npb25EYXRhLmlzRW1wdHkoKSkKKyAgICAgICAgbV9mcm9udGVu
ZC0+cG9wdWxhdGVGcm9udGVuZFNlc3Npb24obV9zZXNzaW9uRGF0YSk7CisKICAgICAvLyBEaXNw
YXRjaCBwZW5kaW5nIGZyb250ZW5kIGNvbW1hbmRzCiAgICAgZm9yIChWZWN0b3I8cGFpcjxsb25n
LCBTdHJpbmc+ID46Oml0ZXJhdG9yIGl0ID0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMu
YmVnaW4oKTsgaXQgIT0gbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuZW5kKCk7ICsraXQp
CiAgICAgICAgIG1fZnJvbnRlbmQtPmV2YWx1YXRlRm9yVGVzdEluRnJvbnRlbmQoKCppdCkuZmly
c3QsICgqaXQpLnNlY29uZCk7CkBAIC02NzMsNiArNjgxLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIHVu
YmluZEFsbFJlc291cmNlcygpOwogCiAgICAgICAgIG1fY3NzU3RvcmUtPnJlc2V0KCk7CisgICAg
ICAgIG1fc2Vzc2lvbkRhdGEgPSAiIjsKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsKICAgICAg
ICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiAgICAgICAgICAgICBtX2RvbUFnZW50LT5yZXNl
dCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCmluZGV4IGJiNmMzODgu
LjRjNzBkODggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKQEAgLTEz
MCw2ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnNwZWN0KE5vZGUqKTsKICAgICB2b2lk
IGhpZ2hsaWdodChOb2RlKik7CiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CisgICAgdm9pZCBz
ZXRTZXNzaW9uRGF0YShjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgc2hvdygpOwogICAgIHZv
aWQgc2hvd1BhbmVsKFNwZWNpYWxQYW5lbHMpOwpAQCAtMzQwLDYgKzM0MSw3IEBAIHByaXZhdGU6
CiAjZW5kaWYKICAgICBTcGVjaWFsUGFuZWxzIG1fc2hvd0FmdGVyVmlzaWJsZTsKICAgICBSZWZQ
dHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7CisgICAgU3RyaW5nIG1fc2Vzc2lvbkRhdGE7CiAg
ICAgdW5zaWduZWQgbV9ncm91cExldmVsOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwog
ICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kLmNwcAppbmRleCAzOTBlZGFiLi5hNmIxZDU0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCkBAIC05NCw2ICs5NCwxNCBAQCB2b2lkIEluc3Bl
Y3RvckZyb250ZW5kOjpwb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0
aW5ncykKICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6
OnBvcHVsYXRlRnJvbnRlbmRTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbkRhdGEpCit7Cisg
ICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2gi
KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgicG9wdWxhdGVGcm9udGVuZFNlc3Npb24i
KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzZXNzaW9uRGF0YSk7CisgICAgZnVuY3Rp
b24uY2FsbCgpOworfQorCiB2b2lkIEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVDb25zb2xlTWVz
c2FnZUV4cGlyZWRDb3VudCh1bnNpZ25lZCBjb3VudCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOyAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IGI5Zjg3ZWYuLmZjMzU3NGQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtNjAsNiArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogCiAgICAgICAgIHZvaWQgcG9wdWxh
dGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpOworICAgICAgICB2b2lk
IHBvcHVsYXRlRnJvbnRlbmRTZXNzaW9uKGNvbnN0IFN0cmluZyYgc2Vzc2lvbkRhdGEpOwogCiAg
ICAgICAgIHZvaWQgdXBkYXRlQ29uc29sZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291
bnQpOwogICAgICAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYg
bWVzc2FnZU9iaiwgY29uc3QgVmVjdG9yPFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVj
dG9yPFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+ID4mIGFyZ3VtZW50cywgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
U1NTdHlsZU1vZGVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9k
ZWwuanMKaW5kZXggNjZhMjBjZS4uNTc5NDYxYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKQEAgLTEwNyw1ICsxMDcsMTEgQEAgV2ViSW5zcGVjdG9y
LkNTU1N0eWxlTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgSW5zcGVj
dG9yQmFja2VuZC5hcHBseVN0eWxlVGV4dChXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChjYWxs
YmFjayksIHN0eWxlSWQsIHN0eWxlVGV4dCwgcHJvcGVydHlOYW1lKTsKKyAgICB9LAorCisgICAg
c2V0VXNlckNoYW5nZXM6IGZ1bmN0aW9uKHVzZXJDaGFuZ2VzKQorICAgIHsKKyAgICAgICAgLy8g
RklYTUU6IHRoZSAzODU3OCBidWcgcGF0Y2ggd2lsbCBtYWtlIHRoaXMgbWV0aG9kIGludm9rZSBy
ZS1wYXRjaGluZyBvZiBDU1Mgc3R5bGUgc291cmNlcworICAgICAgICAvLyBhY2NvcmRpbmcgdG8g
dGhlIGNoYW5nZXMgYSB1c2VyIG1hZGUgaW4gdGhlIHByZXZpb3VzIGZyb250ZW5kIGluc3RhbmNl
IChiZWZvcmUgcmUtb3BlbmluZyBvbmUpLgogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhhNzhjZDIuLmEwYjRjOTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTM1Myw2ICsxMzUzLDExIEBAIFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUludGVyZmFjZSA9IGZ1bmN0aW9uKCkKICAgICB9CiB9CiAKK1dlYklu
c3BlY3Rvci5wb3B1bGF0ZUZyb250ZW5kU2Vzc2lvbiA9IGZ1bmN0aW9uKHNlc3Npb25EYXRhKQor
eworICAgIHRoaXMuY3NzTW9kZWwuc2V0VXNlckNoYW5nZXMoc2Vzc2lvbkRhdGEpOworfQorCiBX
ZWJJbnNwZWN0b3IucmVzZXQgPSBmdW5jdGlvbigpCiB7CiAgICAgZm9yICh2YXIgcGFuZWxOYW1l
IGluIHRoaXMucGFuZWxzKSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA3MTMxNWRhLi4xZWNlZWYwIDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBhdmxvdiAg
PGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9uL2Rlc2Vy
aWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc2Vzc2lvbiBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgKKworICAgICAgICAqIHNyYy9q
cy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qczoKKyAgICAgICAgKGRldnRvb2xzLkluc3BlY3Rv
ckJhY2tlbmRJbXBsKToKKwogMjAxMC0wNi0wNyAgQW5kcmVpIFBvcGVzY3UgIDxhbmRyZWlwQGdv
b2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9ybG93LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKaW5kZXggODZm
ODg1YS4uMjljODJjNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0
b3JDb250cm9sbGVySW1wbC5qcworKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3Rv
ckNvbnRyb2xsZXJJbXBsLmpzCkBAIC02OCw2ICs2OCw3IEBAIGRldnRvb2xzLkluc3BlY3RvckJh
Y2tlbmRJbXBsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xs
ZXJEZWxlZ2F0ZV8oInJlbW92ZURPTVN0b3JhZ2VJdGVtIik7CiAgICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlTm9kZSIpOwogICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNhdmVGcm9udGVuZFNldHRpbmdzIik7Cisg
ICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2F2ZUZyb250ZW5k
U2Vzc2lvbiIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
InNldEF0dHJpYnV0ZSIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oInNldERPTVN0b3JhZ2VJdGVtIik7CiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29u
dHJvbGxlckRlbGVnYXRlXygic2V0SW5qZWN0ZWRTY3JpcHRTb3VyY2UiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58052</attachid>
            <date>2010-06-07 11:24:51 -0700</date>
            <delta_ts>2010-06-07 11:30:47 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>12720</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjlhZDBjYS4uMTc3MzE4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kOjpzYXZlU2Vzc2lvblByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2Vzc2lvblByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmpl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExv
YWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZVNlc3Npb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucG9wdWxhdGVTZXNzaW9uUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNldHRpbmdzLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0
dGluZ3MucHJvdG90eXBlLl9sb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncy5w
cm90b3R5cGUuX3NldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5yZXNldCk6CisKIDIwMTAtMDYtMDcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggMzZmNDFiOC4uZGYwMDBlZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTg1LDYgKzg1LDExIEBAIHZvaWQgSW5zcGVj
dG9yQmFja2VuZDo6c2F2ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykK
ICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRTZXR0aW5nKEluc3BlY3RvckNvbnRy
b2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpLCBzZXR0aW5ncyk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yQmFja2VuZDo6c2F2ZVNlc3Npb25Qcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYg
cHJvcGVydGllcykKK3sKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldFNlc3Npb25Qcm9w
ZXJ0aWVzKHByb3BlcnRpZXMpOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnN0b3JlTGFz
dEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKQogewogICAgIGlmIChtX2luc3Bl
Y3RvckNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggMGVi
OGU0Yy4uZmExMjc2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtNTgs
NiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9p
bnNwZWN0b3JDb250cm9sbGVyID0gMDsgfQogCiAgICAgdm9pZCBzYXZlRnJvbnRlbmRTZXR0aW5n
cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNhdmVTZXNzaW9uUHJvcGVydGllcyhjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoY29uc3QgU3RyaW5nJiBw
YW5lbE5hbWUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IGU4
Y2ZkYjkuLjJiMGY4MDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBA
IC0zNSw2ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3Rp
dmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAogICAgICAgICB2b2lkIHNhdmVGcm9u
dGVuZFNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgc2F2ZVNl
c3Npb25Qcm9wZXJ0aWVzKGluIERPTVN0cmluZyBwcm9wZXJ0aWVzKTsKIAogICAgICAgICB2b2lk
IGVuYWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU2VhcmNoaW5n
Rm9yTm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRl
eCA3YjJjZDdjLi5iZmMyNzI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBt
X2Nzc1N0b3JlKG5ldyBJbnNwZWN0b3JDU1NTdG9yZSh0aGlzKSkKICAgICAsIG1fZXhwaXJlZENv
bnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShDdXJyZW50UGFu
ZWwpCisgICAgLCBtX3Nlc3Npb25Qcm9wZXJ0aWVzKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
CiAgICAgLCBtX2dyb3VwTGV2ZWwoMCkKICAgICAsIG1fc2VhcmNoaW5nRm9yTm9kZShmYWxzZSkK
ICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCkBAIC0yNzksNiArMjgwLDExIEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiAgICAgbV9jbGllbnQtPmhpZGVIaWdo
bGlnaHQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXNzaW9uUHJvcGVy
dGllcyhjb25zdCBTdHJpbmcmIGpzb25WYWx1ZSkKK3sKKyAgICBtX3Nlc3Npb25Qcm9wZXJ0aWVz
ID0gSW5zcGVjdG9yVmFsdWU6OnJlYWRKU09OKGpzb25WYWx1ZSk7Cit9CisKIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6d2luZG93VmlzaWJsZSgpCiB7CiAgICAgcmV0dXJuIG1fZnJvbnRlbmQ7
CkBAIC01OTcsNiArNjAzLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoKQogICAgICAgICBtX2Zyb250ZW5kLT5kaWRDcmVhdGVXb3JrZXIoKml0LT5z
ZWNvbmQpOwogI2VuZGlmCiAKKyAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZVNlc3Npb25Qcm9wZXJ0
aWVzKG1fc2Vzc2lvblByb3BlcnRpZXMtPnRvSlNPTlN0cmluZygpKTsKICAgICBtX2Zyb250ZW5k
LT5wb3B1bGF0ZUludGVyZmFjZSgpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVu
ZCBjb21tYW5kcwpAQCAtNjczLDYgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICB1bmJpbmRBbGxS
ZXNvdXJjZXMoKTsKIAogICAgICAgICBtX2Nzc1N0b3JlLT5yZXNldCgpOworICAgICAgICBtX3Nl
c3Npb25Qcm9wZXJ0aWVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYg
KG1fZnJvbnRlbmQpIHsKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiAgICAgICAg
ICAgICBtX2RvbUFnZW50LT5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCmluZGV4IGJiNmMzODguLjQyNjcwMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgpAQCAt
MTMwLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwogICAgIHZv
aWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKyAgICB2b2lk
IHNldFNlc3Npb25Qcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzaG93KCk7
CiAgICAgdm9pZCBzaG93UGFuZWwoU3BlY2lhbFBhbmVscyk7CkBAIC0zNDAsNiArMzQyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIFNwZWNpYWxQYW5lbHMgbV9zaG93QWZ0ZXJWaXNpYmxlOwog
ICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IG1fc2Vzc2lvblByb3BlcnRpZXM7CiAgICAgdW5zaWduZWQgbV9ncm91cExldmVsOwog
ICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZp
b3VzTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCAz
OTBlZGFiLi42ZmZjYzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
CkBAIC05NCw2ICs5NCwxNCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZUZyb250
ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKICAgICBmdW5jdGlvbi5jYWxsKCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlU2Vzc2lvblByb3BlcnRpZXMo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0aWVzKQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoInBvcHVsYXRlU2Vzc2lvblByb3BlcnRpZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChwcm9wZXJ0aWVzKTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KHVuc2lnbmVk
IGNvdW50KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3BlY3Rv
ciwgImRpc3BhdGNoIik7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXgg
YjlmODdlZi4uODVlNTdiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBA
IC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkaWRDb21t
aXRMb2FkKCk7CiAKICAgICAgICAgdm9pZCBwb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJiBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgcG9wdWxhdGVTZXNzaW9uUHJvcGVydGll
cyhjb25zdCBTdHJpbmcmIHByb3BlcnRpZXMpOwogCiAgICAgICAgIHZvaWQgdXBkYXRlQ29uc29s
ZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpOwogICAgICAgICB2b2lkIGFkZENv
bnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9y
PFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+ID4mIGFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBiOWI1Zjc1Li40MDlkZjJhIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NywxMyArNDcsMzcgQEAg
dmFyIFByZWZlcmVuY2VzID0gewogV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5n
cyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQogewogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5fbG9hZChzZXR0aW5nc1N0cmluZyk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0
YWxsU2V0dGluZygiZXZlbnRMaXN0ZW5lcnNGaWx0ZXIiLCAiZXZlbnQtbGlzdGVuZXJzLWZpbHRl
ciIsICJhbGwiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJj
b2xvckZvcm1hdCIsICJjb2xvci1mb3JtYXQiLCAiaGV4Iik7CisgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLl9pbnN0YWxsU2V0dGluZygicmVzb3VyY2VzTGFyZ2VSb3dzIiwgInJlc291cmNlcy1s
YXJnZS1yb3dzIiwgdHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0YWxsU2V0
dGluZygid2F0Y2hFeHByZXNzaW9ucyIsICJ3YXRjaC1leHByZXNzaW9ucyIsIFtdKTsKKyAgICBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0Rmls
ZSIsICJsYXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5faW5zdGFsbFNldHRpbmcoInNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcyIs
ICJzaG93LWluaGVyaXRlZC1jb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVzIiwgZmFsc2UpOworICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInNob3dVc2VyQWdlbnRTdHls
ZXMiLCAic2hvdy11c2VyLWFnZW50LXN0eWxlcyIsIHRydWUpOworICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInJlc291cmNlVmlld1RhYiIsICJyZXNvdXJjZS12aWV3
LXRhYiIsICJjb250ZW50Iik7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0YWxsU2V0
dGluZygiY29uc29sZUhpc3RvcnkiLCAiY29uc29sZS1oaXN0b3J5IiwgW10pOworICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOwogfQog
Ci1XZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IucG9wdWxh
dGVTZXNzaW9uUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXNTdHJpbmcpCiB7CisgICAg
V2ViSW5zcGVjdG9yLnNlc3Npb25Qcm9wZXJ0aWVzLl9sb2FkKHByb3BlcnRpZXNTdHJpbmcpOwor
ICAgIFdlYkluc3BlY3Rvci5zZXNzaW9uUHJvcGVydGllcy5faW5zdGFsbFNldHRpbmcoInN0eWxl
U2hlZXREZWx0YXMiLCAic3R5bGVzaGVldC1kZWx0YXMiLCB7fSk7CisgICAgV2ViSW5zcGVjdG9y
LnNlc3Npb25Qcm9wZXJ0aWVzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibG9hZGVkIik7Cit9
CisKK1dlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKHNlc3Npb25TY29wZSkKK3sKKwl0
aGlzLl9zZXNzaW9uU2NvcGUgPSBzZXNzaW9uU2NvcGU7CiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0
aW5ncy5wcm90b3R5cGUgPSB7CisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3N0b3JlID0ge307CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXNzaW9uUHJvcGVydGll
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOworICAgIH0sCisKICAgICBfbG9h
ZDogZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCiAgICAgewogICAgICAgICB0cnkgewpAQCAtNjIs
MTcgKzg2LDYgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIC8vIE1heSBmYWlsOwogICAgICAgICAgICAgdGhpcy5fc3RvcmUgPSB7fTsKICAgICAgICAg
fQotCi0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJldmVudExpc3RlbmVyc0ZpbHRlciIs
ICJldmVudC1saXN0ZW5lcnMtZmlsdGVyIiwgImFsbCIpOwotICAgICAgICB0aGlzLl9pbnN0YWxs
U2V0dGluZygiY29sb3JGb3JtYXQiLCAiY29sb3ItZm9ybWF0IiwgImhleCIpOwotICAgICAgICB0
aGlzLl9pbnN0YWxsU2V0dGluZygicmVzb3VyY2VzTGFyZ2VSb3dzIiwgInJlc291cmNlcy1sYXJn
ZS1yb3dzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJ3YXRjaEV4cHJl
c3Npb25zIiwgIndhdGNoLWV4cHJlc3Npb25zIiwgW10pOwotICAgICAgICB0aGlzLl9pbnN0YWxs
U2V0dGluZygibGFzdFZpZXdlZFNjcmlwdEZpbGUiLCAibGFzdC12aWV3ZWQtc2NyaXB0LWZpbGUi
KTsKLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoInNob3dJbmhlcml0ZWRDb21wdXRlZFN0
eWxlUHJvcGVydGllcyIsICJzaG93LWluaGVyaXRlZC1jb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVz
IiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygic2hvd1VzZXJBZ2VudFN0
eWxlcyIsICJzaG93LXVzZXItYWdlbnQtc3R5bGVzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2lu
c3RhbGxTZXR0aW5nKCJyZXNvdXJjZVZpZXdUYWIiLCAicmVzb3VyY2Utdmlldy10YWIiLCAiY29u
dGVudCIpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygiY29uc29sZUhpc3RvcnkiLCAi
Y29uc29sZS1oaXN0b3J5IiwgW10pOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycygibG9hZGVkIik7CiAgICAgfSwKIAogICAgIF9pbnN0YWxsU2V0dGluZzogZnVuY3Rpb24o
bmFtZSwgcHJvcGVydHlOYW1lLCBkZWZhdWx0VmFsdWUpCkBAIC05Myw3ICsxMDYsMTEgQEAgV2Vi
SW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMuX3N0
b3JlW3Byb3BlcnR5TmFtZV0gPSBuZXdWYWx1ZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAg
IEluc3BlY3RvckJhY2tlbmQuc2F2ZUZyb250ZW5kU2V0dGluZ3MoSlNPTi5zdHJpbmdpZnkodGhp
cy5fc3RvcmUpKTsKKyAgICAgICAgICAgIHZhciBzdG9yZSA9IEpTT04uc3RyaW5naWZ5KHRoaXMu
X3N0b3JlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uU2NvcGUpCisJICAgICAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5zYXZlU2Vzc2lvblByb3BlcnRpZXMoc3RvcmUpOworICAgICAg
ICAgICAgZWxzZQorCSAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2F2ZUZyb250ZW5kU2V0
dGluZ3Moc3RvcmUpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAvLyBNYXkg
ZmFpbDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMK
aW5kZXggOGE3OGNkMi4uZmI3YTczOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCkBAIC00NDAsNyArNDQwLDggQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0
aW9uKCkKICAgICB2YXIgcG9ydCA9IFdlYkluc3BlY3Rvci5wb3J0OwogICAgIGRvY3VtZW50LmJv
ZHkuYWRkU3R5bGVDbGFzcygicG9ydC0iICsgcG9ydCk7CiAKLSAgICB0aGlzLnNldHRpbmdzID0g
bmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncygpOworICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNldHRpbmdzKGZhbHNlKTsKKyAgICB0aGlzLnNlc3Npb25Qcm9wZXJ0aWVzID0g
bmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncyh0cnVlKTsKICAgICB0aGlzLl9yZWdpc3RlclNob3J0
Y3V0cygpOwogCiAgICAgLy8gc2V0IG9yZGVyIG9mIHNvbWUgc2VjdGlvbnMgZXhwbGljaXRseQpA
QCAtMTM2MSw2ICsxMzYyLDcgQEAgV2ViSW5zcGVjdG9yLnJlc2V0ID0gZnVuY3Rpb24oKQogICAg
ICAgICAgICAgcGFuZWwucmVzZXQoKTsKICAgICB9CiAKKyAgICB0aGlzLnNlc3Npb25Qcm9wZXJ0
aWVzLnJlc2V0KCk7CiAgICAgdGhpcy5icmVha3BvaW50TWFuYWdlci5yZXNldCgpOwogCiAgICAg
Zm9yICh2YXIgY2F0ZWdvcnkgaW4gdGhpcy5yZXNvdXJjZUNhdGVnb3JpZXMpCmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpp
bmRleCA3MTMxNWRhLi42NWM3ZTI2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
MC0wNi0wNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEVuYWJsZSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3Rh
dGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4
CisKKyAgICAgICAgKiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6CisgICAgICAg
IChkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCk6CisKIDIwMTAtMDYtMDcgIEFuZHJlaSBQ
b3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVt
eSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29u
dHJvbGxlckltcGwuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xs
ZXJJbXBsLmpzCmluZGV4IDg2Zjg4NWEuLmU4MTMzOWMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwpAQCAtNjgsNiArNjgsNyBAQCBk
ZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCA9IGZ1bmN0aW9uKCkKICAgICB0aGlzLmluc3Rh
bGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVET01TdG9yYWdlSXRlbSIpOwog
ICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZU5vZGUi
KTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzYXZlRnJv
bnRlbmRTZXR0aW5ncyIpOworICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxl
Z2F0ZV8oInNhdmVTZXNzaW9uUHJvcGVydGllcyIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldEF0dHJpYnV0ZSIpOwogICAgIHRoaXMuaW5zdGFsbElu
c3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldERPTVN0b3JhZ2VJdGVtIik7CiAgICAgdGhp
cy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0SW5qZWN0ZWRTY3JpcHRT
b3VyY2UiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58054</attachid>
            <date>2010-06-07 11:30:47 -0700</date>
            <delta_ts>2010-06-08 07:59:04 -0700</delta_ts>
            <desc>[PATCH] Style fixed</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>12729</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjlhZDBjYS4uMTc3MzE4ZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNCBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kOjpzYXZlU2Vzc2lvblByb3BlcnRpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2Vzc2lvblByb3BlcnRpZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmpl
Y3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExv
YWQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZVNlc3Npb25Qcm9wZXJ0aWVzKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NldHRpbmdzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRT
ZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IucG9wdWxhdGVTZXNzaW9uUHJvcGVydGll
cyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNldHRpbmdzLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0
dGluZ3MucHJvdG90eXBlLl9sb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncy5w
cm90b3R5cGUuX3NldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anM6CisgICAgICAgIChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5yZXNldCk6CisKIDIwMTAtMDYtMDcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggMzZmNDFiOC4uZGYwMDBlZCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTg1LDYgKzg1LDExIEBAIHZvaWQgSW5zcGVj
dG9yQmFja2VuZDo6c2F2ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykK
ICAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5zZXRTZXR0aW5nKEluc3BlY3RvckNvbnRy
b2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpLCBzZXR0aW5ncyk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yQmFja2VuZDo6c2F2ZVNlc3Npb25Qcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYg
cHJvcGVydGllcykKK3sKKyAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldFNlc3Npb25Qcm9w
ZXJ0aWVzKHByb3BlcnRpZXMpOworfQorCiB2b2lkIEluc3BlY3RvckJhY2tlbmQ6OnN0b3JlTGFz
dEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKQogewogICAgIGlmIChtX2luc3Bl
Y3RvckNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKaW5kZXggMGVi
OGU0Yy4uZmExMjc2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaApAQCAtNTgs
NiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaXNjb25uZWN0Q29udHJvbGxlcigpIHsgbV9p
bnNwZWN0b3JDb250cm9sbGVyID0gMDsgfQogCiAgICAgdm9pZCBzYXZlRnJvbnRlbmRTZXR0aW5n
cyhjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNhdmVTZXNzaW9uUHJvcGVydGllcyhjb25zdCBT
dHJpbmcmKTsKIAogICAgIHZvaWQgc3RvcmVMYXN0QWN0aXZlUGFuZWwoY29uc3QgU3RyaW5nJiBw
YW5lbE5hbWUpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCmluZGV4IGU4
Y2ZkYjkuLjJiMGY4MDkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsCkBA
IC0zNSw2ICszNSw3IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3Rp
dmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAogICAgICAgICB2b2lkIHNhdmVGcm9u
dGVuZFNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgc2F2ZVNl
c3Npb25Qcm9wZXJ0aWVzKGluIERPTVN0cmluZyBwcm9wZXJ0aWVzKTsKIAogICAgICAgICB2b2lk
IGVuYWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU2VhcmNoaW5n
Rm9yTm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRl
eCA3YjJjZDdjLi5iZmMyNzI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3Rv
ckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBt
X2Nzc1N0b3JlKG5ldyBJbnNwZWN0b3JDU1NTdG9yZSh0aGlzKSkKICAgICAsIG1fZXhwaXJlZENv
bnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShDdXJyZW50UGFu
ZWwpCisgICAgLCBtX3Nlc3Npb25Qcm9wZXJ0aWVzKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCkp
CiAgICAgLCBtX2dyb3VwTGV2ZWwoMCkKICAgICAsIG1fc2VhcmNoaW5nRm9yTm9kZShmYWxzZSkK
ICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCkBAIC0yNzksNiArMjgwLDExIEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6aGlkZUhpZ2hsaWdodCgpCiAgICAgbV9jbGllbnQtPmhpZGVIaWdo
bGlnaHQoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXNzaW9uUHJvcGVy
dGllcyhjb25zdCBTdHJpbmcmIGpzb25WYWx1ZSkKK3sKKyAgICBtX3Nlc3Npb25Qcm9wZXJ0aWVz
ID0gSW5zcGVjdG9yVmFsdWU6OnJlYWRKU09OKGpzb25WYWx1ZSk7Cit9CisKIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6d2luZG93VmlzaWJsZSgpCiB7CiAgICAgcmV0dXJuIG1fZnJvbnRlbmQ7
CkBAIC01OTcsNiArNjAzLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNj
cmlwdE9iamVjdHMoKQogICAgICAgICBtX2Zyb250ZW5kLT5kaWRDcmVhdGVXb3JrZXIoKml0LT5z
ZWNvbmQpOwogI2VuZGlmCiAKKyAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZVNlc3Npb25Qcm9wZXJ0
aWVzKG1fc2Vzc2lvblByb3BlcnRpZXMtPnRvSlNPTlN0cmluZygpKTsKICAgICBtX2Zyb250ZW5k
LT5wb3B1bGF0ZUludGVyZmFjZSgpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVu
ZCBjb21tYW5kcwpAQCAtNjczLDYgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICB1bmJpbmRBbGxS
ZXNvdXJjZXMoKTsKIAogICAgICAgICBtX2Nzc1N0b3JlLT5yZXNldCgpOworICAgICAgICBtX3Nl
c3Npb25Qcm9wZXJ0aWVzID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgaWYg
KG1fZnJvbnRlbmQpIHsKICAgICAgICAgICAgIG1fZnJvbnRlbmQtPnJlc2V0KCk7CiAgICAgICAg
ICAgICBtX2RvbUFnZW50LT5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJv
bGxlci5oCmluZGV4IGJiNmMzODguLjQyNjcwMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDb250cm9sbGVyLmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDb25zb2xlLmgiCiAj
aW5jbHVkZSAiQ29va2llLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNs
dWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2lu
Y2x1ZGUgIlNjcmlwdEFycmF5LmgiCiAjaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgpAQCAt
MTMwLDYgKzEzMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGluc3BlY3QoTm9kZSopOwogICAgIHZv
aWQgaGlnaGxpZ2h0KE5vZGUqKTsKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKKyAgICB2b2lk
IHNldFNlc3Npb25Qcm9wZXJ0aWVzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzaG93KCk7
CiAgICAgdm9pZCBzaG93UGFuZWwoU3BlY2lhbFBhbmVscyk7CkBAIC0zNDAsNiArMzQyLDcgQEAg
cHJpdmF0ZToKICNlbmRpZgogICAgIFNwZWNpYWxQYW5lbHMgbV9zaG93QWZ0ZXJWaXNpYmxlOwog
ICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
VmFsdWU+IG1fc2Vzc2lvblByb3BlcnRpZXM7CiAgICAgdW5zaWduZWQgbV9ncm91cExldmVsOwog
ICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZp
b3VzTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAppbmRleCAz
OTBlZGFiLi42ZmZjYzI0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3Bw
CkBAIC05NCw2ICs5NCwxNCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZUZyb250
ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKICAgICBmdW5jdGlvbi5jYWxsKCk7
CiB9CiAKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlU2Vzc2lvblByb3BlcnRpZXMo
Y29uc3QgU3RyaW5nJiBwcm9wZXJ0aWVzKQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihtX3dlYkluc3BlY3RvciwgImRpc3BhdGNoIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJn
dW1lbnQoInBvcHVsYXRlU2Vzc2lvblByb3BlcnRpZXMiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChwcm9wZXJ0aWVzKTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9CisKIHZvaWQgSW5z
cGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KHVuc2lnbmVk
IGNvdW50KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihtX3dlYkluc3BlY3Rv
ciwgImRpc3BhdGNoIik7IApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKaW5kZXgg
YjlmODdlZi4uODVlNTdiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCkBA
IC02MCw2ICs2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBkaWRDb21t
aXRMb2FkKCk7CiAKICAgICAgICAgdm9pZCBwb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MoY29uc3Qg
U3RyaW5nJiBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgcG9wdWxhdGVTZXNzaW9uUHJvcGVydGll
cyhjb25zdCBTdHJpbmcmIHByb3BlcnRpZXMpOwogCiAgICAgICAgIHZvaWQgdXBkYXRlQ29uc29s
ZU1lc3NhZ2VFeHBpcmVkQ291bnQodW5zaWduZWQgY291bnQpOwogICAgICAgICB2b2lkIGFkZENv
bnNvbGVNZXNzYWdlKGNvbnN0IFNjcmlwdE9iamVjdCYgbWVzc2FnZU9iaiwgY29uc3QgVmVjdG9y
PFNjcmlwdFN0cmluZz4mIGZyYW1lcywgY29uc3QgVmVjdG9yPFJlZlB0cjxTZXJpYWxpemVkU2Ny
aXB0VmFsdWU+ID4mIGFyZ3VtZW50cywgY29uc3QgU3RyaW5nJiBtZXNzYWdlKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwppbmRleCBiOWI1Zjc1Li44MTZhNjVlIDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCkBAIC00NywxMyArNDcsMzcgQEAg
dmFyIFByZWZlcmVuY2VzID0gewogV2ViSW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5n
cyA9IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQogewogICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5fbG9hZChzZXR0aW5nc1N0cmluZyk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0
YWxsU2V0dGluZygiZXZlbnRMaXN0ZW5lcnNGaWx0ZXIiLCAiZXZlbnQtbGlzdGVuZXJzLWZpbHRl
ciIsICJhbGwiKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJj
b2xvckZvcm1hdCIsICJjb2xvci1mb3JtYXQiLCAiaGV4Iik7CisgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLl9pbnN0YWxsU2V0dGluZygicmVzb3VyY2VzTGFyZ2VSb3dzIiwgInJlc291cmNlcy1s
YXJnZS1yb3dzIiwgdHJ1ZSk7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0YWxsU2V0
dGluZygid2F0Y2hFeHByZXNzaW9ucyIsICJ3YXRjaC1leHByZXNzaW9ucyIsIFtdKTsKKyAgICBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0Rmls
ZSIsICJsYXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOworICAgIFdlYkluc3BlY3Rvci5zZXR0aW5n
cy5faW5zdGFsbFNldHRpbmcoInNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcyIs
ICJzaG93LWluaGVyaXRlZC1jb21wdXRlZC1zdHlsZS1wcm9wZXJ0aWVzIiwgZmFsc2UpOworICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInNob3dVc2VyQWdlbnRTdHls
ZXMiLCAic2hvdy11c2VyLWFnZW50LXN0eWxlcyIsIHRydWUpOworICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInJlc291cmNlVmlld1RhYiIsICJyZXNvdXJjZS12aWV3
LXRhYiIsICJjb250ZW50Iik7CisgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLl9pbnN0YWxsU2V0
dGluZygiY29uc29sZUhpc3RvcnkiLCAiY29uc29sZS1oaXN0b3J5IiwgW10pOworICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOwogfQog
Ci1XZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IucG9wdWxh
dGVTZXNzaW9uUHJvcGVydGllcyA9IGZ1bmN0aW9uKHByb3BlcnRpZXNTdHJpbmcpCiB7CisgICAg
V2ViSW5zcGVjdG9yLnNlc3Npb25Qcm9wZXJ0aWVzLl9sb2FkKHByb3BlcnRpZXNTdHJpbmcpOwor
ICAgIFdlYkluc3BlY3Rvci5zZXNzaW9uUHJvcGVydGllcy5faW5zdGFsbFNldHRpbmcoInN0eWxl
U2hlZXREZWx0YXMiLCAic3R5bGVzaGVldC1kZWx0YXMiLCB7fSk7CisgICAgV2ViSW5zcGVjdG9y
LnNlc3Npb25Qcm9wZXJ0aWVzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibG9hZGVkIik7Cit9
CisKK1dlYkluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKHNlc3Npb25TY29wZSkKK3sKKyAg
ICB0aGlzLl9zZXNzaW9uU2NvcGUgPSBzZXNzaW9uU2NvcGU7CiB9CiAKIFdlYkluc3BlY3Rvci5T
ZXR0aW5ncy5wcm90b3R5cGUgPSB7CisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX3N0b3JlID0ge307CisgICAgICAgIFdlYkluc3BlY3Rvci5zZXNzaW9uUHJvcGVy
dGllcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOworICAgIH0sCisKICAgICBf
bG9hZDogZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCiAgICAgewogICAgICAgICB0cnkgewpAQCAt
NjIsMTcgKzg2LDYgQEAgV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZSA9IHsKICAgICAg
ICAgICAgIC8vIE1heSBmYWlsOwogICAgICAgICAgICAgdGhpcy5fc3RvcmUgPSB7fTsKICAgICAg
ICAgfQotCi0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJldmVudExpc3RlbmVyc0ZpbHRl
ciIsICJldmVudC1saXN0ZW5lcnMtZmlsdGVyIiwgImFsbCIpOwotICAgICAgICB0aGlzLl9pbnN0
YWxsU2V0dGluZygiY29sb3JGb3JtYXQiLCAiY29sb3ItZm9ybWF0IiwgImhleCIpOwotICAgICAg
ICB0aGlzLl9pbnN0YWxsU2V0dGluZygicmVzb3VyY2VzTGFyZ2VSb3dzIiwgInJlc291cmNlcy1s
YXJnZS1yb3dzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJ3YXRjaEV4
cHJlc3Npb25zIiwgIndhdGNoLWV4cHJlc3Npb25zIiwgW10pOwotICAgICAgICB0aGlzLl9pbnN0
YWxsU2V0dGluZygibGFzdFZpZXdlZFNjcmlwdEZpbGUiLCAibGFzdC12aWV3ZWQtc2NyaXB0LWZp
bGUiKTsKLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoInNob3dJbmhlcml0ZWRDb21wdXRl
ZFN0eWxlUHJvcGVydGllcyIsICJzaG93LWluaGVyaXRlZC1jb21wdXRlZC1zdHlsZS1wcm9wZXJ0
aWVzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygic2hvd1VzZXJBZ2Vu
dFN0eWxlcyIsICJzaG93LXVzZXItYWdlbnQtc3R5bGVzIiwgdHJ1ZSk7Ci0gICAgICAgIHRoaXMu
X2luc3RhbGxTZXR0aW5nKCJyZXNvdXJjZVZpZXdUYWIiLCAicmVzb3VyY2Utdmlldy10YWIiLCAi
Y29udGVudCIpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygiY29uc29sZUhpc3Rvcnki
LCAiY29uc29sZS1oaXN0b3J5IiwgW10pOwotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycygibG9hZGVkIik7CiAgICAgfSwKIAogICAgIF9pbnN0YWxsU2V0dGluZzogZnVuY3Rp
b24obmFtZSwgcHJvcGVydHlOYW1lLCBkZWZhdWx0VmFsdWUpCkBAIC05Myw3ICsxMDYsMTEgQEAg
V2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMu
X3N0b3JlW3Byb3BlcnR5TmFtZV0gPSBuZXdWYWx1ZTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAg
ICAgIEluc3BlY3RvckJhY2tlbmQuc2F2ZUZyb250ZW5kU2V0dGluZ3MoSlNPTi5zdHJpbmdpZnko
dGhpcy5fc3RvcmUpKTsKKyAgICAgICAgICAgIHZhciBzdG9yZSA9IEpTT04uc3RyaW5naWZ5KHRo
aXMuX3N0b3JlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZXNzaW9uU2NvcGUpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zYXZlU2Vzc2lvblByb3BlcnRpZXMoc3RvcmUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2F2ZUZy
b250ZW5kU2V0dGluZ3Moc3RvcmUpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAg
ICAvLyBNYXkgZmFpbDsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanMKaW5kZXggOGE3OGNkMi4uZmI3YTczOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00NDAsNyArNDQwLDggQEAgV2ViSW5zcGVjdG9yLmxvYWRl
ZCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgcG9ydCA9IFdlYkluc3BlY3Rvci5wb3J0OwogICAgIGRv
Y3VtZW50LmJvZHkuYWRkU3R5bGVDbGFzcygicG9ydC0iICsgcG9ydCk7CiAKLSAgICB0aGlzLnNl
dHRpbmdzID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncygpOworICAgIHRoaXMuc2V0dGluZ3Mg
PSBuZXcgV2ViSW5zcGVjdG9yLlNldHRpbmdzKGZhbHNlKTsKKyAgICB0aGlzLnNlc3Npb25Qcm9w
ZXJ0aWVzID0gbmV3IFdlYkluc3BlY3Rvci5TZXR0aW5ncyh0cnVlKTsKICAgICB0aGlzLl9yZWdp
c3RlclNob3J0Y3V0cygpOwogCiAgICAgLy8gc2V0IG9yZGVyIG9mIHNvbWUgc2VjdGlvbnMgZXhw
bGljaXRseQpAQCAtMTM2MSw2ICsxMzYyLDcgQEAgV2ViSW5zcGVjdG9yLnJlc2V0ID0gZnVuY3Rp
b24oKQogICAgICAgICAgICAgcGFuZWwucmVzZXQoKTsKICAgICB9CiAKKyAgICB0aGlzLnNlc3Np
b25Qcm9wZXJ0aWVzLnJlc2V0KCk7CiAgICAgdGhpcy5icmVha3BvaW50TWFuYWdlci5yZXNldCgp
OwogCiAgICAgZm9yICh2YXIgY2F0ZWdvcnkgaW4gdGhpcy5yZXNvdXJjZUNhdGVnb3JpZXMpCmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCA3MTMxNWRhLi42NWM3ZTI2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
MyBAQAorMjAxMC0wNi0wNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9uL2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJv
bnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTQwMjI4CisKKyAgICAgICAgKiBzcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanM6
CisgICAgICAgIChkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCk6CisKIDIwMTAtMDYtMDcg
IEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5z
cGVjdG9yQ29udHJvbGxlckltcGwuanMgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3Rv
ckNvbnRyb2xsZXJJbXBsLmpzCmluZGV4IDg2Zjg4NWEuLmU4MTMzOWMgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcwpAQCAtNjgsNiAr
NjgsNyBAQCBkZXZ0b29scy5JbnNwZWN0b3JCYWNrZW5kSW1wbCA9IGZ1bmN0aW9uKCkKICAgICB0
aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVET01TdG9yYWdl
SXRlbSIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJl
bW92ZU5vZGUiKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVf
KCJzYXZlRnJvbnRlbmRTZXR0aW5ncyIpOworICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRy
b2xsZXJEZWxlZ2F0ZV8oInNhdmVTZXNzaW9uUHJvcGVydGllcyIpOwogICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldEF0dHJpYnV0ZSIpOwogICAgIHRoaXMu
aW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNldERPTVN0b3JhZ2VJdGVtIik7
CiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0SW5qZWN0
ZWRTY3JpcHRTb3VyY2UiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58138</attachid>
            <date>2010-06-08 07:59:04 -0700</date>
            <delta_ts>2010-06-09 07:21:31 -0700</delta_ts>
            <desc>[PATCH] Implemented suggested naming convention</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>31838</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjlhZDBjYS4uYzBhN2I4NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMC0wNi0wOCAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kOjpzYXZlQXBwbGljYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JCYWNrZW5kOjpzYXZlU2Vzc2lvblNldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlc3Npb25TZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0
TG9hZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlLl9zZXR0aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9lbnRlcktleVByZXNzZWQucHJpbnRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZW50ZXJLZXlQcmVz
c2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanM6CisgICAgICAgICgu
V2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zYXZlQXBwbGljYXRp
b25TZXR0aW5ncyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZS5zYXZlU2Vzc2lvblNldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZp
ZXcucHJvdG90eXBlLl9zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
Vmlldy5wcm90b3R5cGUuX3NlbGVjdEhlYWRlcnNUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlVmlldy5wcm90b3R5cGUuc2VsZWN0Q29udGVudFRhYik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fc2V0dGluZ3NMb2Fk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fdG9n
Z2xlTGFyZ2VyUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zaG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IucG9wdWxhdGVB
cHBsaWNhdGlvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5wb3B1bGF0ZVNlc3Np
b25TZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLl9sb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
ZXR0aW5ncy5wcm90b3R5cGUuX3NldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NoYW5nZVNldHRpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fY2hhbmdlQ29sb3JGb3Jt
YXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5zZXR0
aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQ
YW5lLnNob3dJbmhlcml0ZWRUb2dnbGVGdW5jdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5X
YXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldhdGNo
RXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlLnNhdmVFeHByZXNzaW9u
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNldCk6CisK
IDIwMTAtMDYtMDcgIEFuZHJlaSBQb3Blc2N1ICA8YW5kcmVpcEBnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEplcmVteSBPcmxvdy4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5jcHAKaW5kZXggMzZmNDFiOC4uZDI5ZDRlYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5jcHAKQEAgLTc5LDEyICs3OSwxNyBAQCBJbnNwZWN0b3JCYWNrZW5kOjp+SW5z
cGVjdG9yQmFja2VuZCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2F2ZUZyb250
ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKK3ZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6c2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKIHsKICAg
ICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQogICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xs
ZXItPnNldFNldHRpbmcoSW5zcGVjdG9yQ29udHJvbGxlcjo6ZnJvbnRlbmRTZXR0aW5nc1NldHRp
bmdOYW1lKCksIHNldHRpbmdzKTsKIH0KIAordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzYXZlU2Vz
c2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCit7CisgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5zZXRTZXNzaW9uU2V0dGluZ3Moc2V0dGluZ3MpOworfQorCiB2b2lkIEluc3Bl
Y3RvckJhY2tlbmQ6OnN0b3JlTGFzdEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1l
KQogewogICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JCYWNrZW5kLmgKaW5kZXggMGViOGU0Yy4uZDBhNWRmYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaApAQCAtNTcsNyArNTcsOCBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ29u
dHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlcigpIHsgcmV0dXJuIG1faW5zcGVjdG9yQ29udHJv
bGxlcjsgfQogICAgIHZvaWQgZGlzY29ubmVjdENvbnRyb2xsZXIoKSB7IG1faW5zcGVjdG9yQ29u
dHJvbGxlciA9IDA7IH0KIAotICAgIHZvaWQgc2F2ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBzYXZlQXBwbGljYXRpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNhdmVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lk
IHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCBlOGNmZGI5Li5iMzkwOGE5IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApAQCAtMzQsNyArMzQsOCBAQCBtb2R1
bGUgY29yZSB7CiAgICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1JTlNQRUNUT1JdIEluc3BlY3Rv
ckJhY2tlbmQgewogICAgICAgICB2b2lkIHN0b3JlTGFzdEFjdGl2ZVBhbmVsKGluIERPTVN0cmlu
ZyBwYW5lbE5hbWUpOwogCi0gICAgICAgIHZvaWQgc2F2ZUZyb250ZW5kU2V0dGluZ3MoaW4gRE9N
U3RyaW5nIHNldHRpbmdzKTsKKyAgICAgICAgdm9pZCBzYXZlQXBwbGljYXRpb25TZXR0aW5ncyhp
biBET01TdHJpbmcgc2V0dGluZ3MpOworICAgICAgICB2b2lkIHNhdmVTZXNzaW9uU2V0dGluZ3Mo
aW4gRE9NU3RyaW5nIHNldHRpbmdzKTsKIAogICAgICAgICB2b2lkIGVuYWJsZVNlYXJjaGluZ0Zv
ck5vZGUoKTsKICAgICAgICAgdm9pZCBkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSgpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCA3YjJjZDdjLi5lODU5ZmVl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAor
KysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQ4LDYg
KzE0OCw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSog
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2Nzc1N0b3JlKG5ldyBJbnNw
ZWN0b3JDU1NTdG9yZSh0aGlzKSkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQo
MCkKICAgICAsIG1fc2hvd0FmdGVyVmlzaWJsZShDdXJyZW50UGFuZWwpCisgICAgLCBtX3Nlc3Np
b25TZXR0aW5ncyhJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpKQogICAgICwgbV9ncm91cExldmVs
KDApCiAgICAgLCBtX3NlYXJjaGluZ0Zvck5vZGUoZmFsc2UpCiAgICAgLCBtX3ByZXZpb3VzTWVz
c2FnZSgwKQpAQCAtMjc5LDYgKzI4MCwxMSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omhp
ZGVIaWdobGlnaHQoKQogICAgIG1fY2xpZW50LT5oaWRlSGlnaGxpZ2h0KCk7CiB9CiAKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2Vzc2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0
dGluZ3MpCit7CisgICAgbV9zZXNzaW9uU2V0dGluZ3MgPSBJbnNwZWN0b3JWYWx1ZTo6cmVhZEpT
T04oc2V0dGluZ3MpOworfQorCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OndpbmRvd1Zpc2li
bGUoKQogewogICAgIHJldHVybiBtX2Zyb250ZW5kOwpAQCAtNTUwLDcgKzU1Niw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKICAgICBpZiAoIW1f
ZnJvbnRlbmQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPnBvcHVsYXRlRnJv
bnRlbmRTZXR0aW5ncyhzZXR0aW5nKGZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpKSk7Cisg
ICAgbV9mcm9udGVuZC0+cG9wdWxhdGVBcHBsaWNhdGlvblNldHRpbmdzKHNldHRpbmcoZnJvbnRl
bmRTZXR0aW5nc1NldHRpbmdOYW1lKCkpKTsKIAogICAgIGlmIChtX3Jlc291cmNlVHJhY2tpbmdF
bmFibGVkKQogICAgICAgICBtX2Zyb250ZW5kLT5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgp
OwpAQCAtNTk3LDYgKzYwMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVT
Y3JpcHRPYmplY3RzKCkKICAgICAgICAgbV9mcm9udGVuZC0+ZGlkQ3JlYXRlV29ya2VyKCppdC0+
c2Vjb25kKTsKICNlbmRpZgogCisgICAgbV9mcm9udGVuZC0+cG9wdWxhdGVTZXNzaW9uU2V0dGlu
Z3MobV9zZXNzaW9uU2V0dGluZ3MtPnRvSlNPTlN0cmluZygpKTsKICAgICBtX2Zyb250ZW5kLT5w
b3B1bGF0ZUludGVyZmFjZSgpOwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBj
b21tYW5kcwpAQCAtNjczLDYgKzY4MCw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlk
Q29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyKQogICAgICAgICB1bmJpbmRBbGxSZXNv
dXJjZXMoKTsKIAogICAgICAgICBtX2Nzc1N0b3JlLT5yZXNldCgpOworICAgICAgICBtX3Nlc3Np
b25TZXR0aW5ncyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGlmIChtX2Zy
b250ZW5kKSB7CiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogICAgICAgICAgICAg
bV9kb21BZ2VudC0+cmVzZXQoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
aAppbmRleCBiYjZjMzg4Li5hZTRiMjA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1
ZGUgIkNvb2tpZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9yVmFsdWVzLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRl
ICJTY3JpcHRBcnJheS5oIgogI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKQEAgLTEyNiw2
ICsxMjcsNyBAQCBwdWJsaWM6CiAKICAgICBTdHJpbmcgc2V0dGluZyhjb25zdCBTdHJpbmcmIGtl
eSkgY29uc3Q7CiAgICAgdm9pZCBzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBT
dHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIHNldFNlc3Npb25TZXR0aW5ncyhjb25zdCBTdHJpbmcm
KTsKIAogICAgIHZvaWQgaW5zcGVjdChOb2RlKik7CiAgICAgdm9pZCBoaWdobGlnaHQoTm9kZSop
OwpAQCAtMzQwLDYgKzM0Miw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBTcGVjaWFsUGFuZWxz
IG1fc2hvd0FmdGVyVmlzaWJsZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7
CisgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBtX3Nlc3Npb25TZXR0aW5nczsKICAgICB1bnNp
Z25lZCBtX2dyb3VwTGV2ZWw7CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CiAgICAgQ29u
c29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmQuY3BwCmluZGV4IDM5MGVkYWIuLmVhOWQ2MWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5jcHAKQEAgLTg2LDEwICs4NiwxOCBAQCB2b2lkIEluc3BlY3RvckZy
b250ZW5kOjpkaWRDb21taXRMb2FkKCkKICAgICBjYWxsU2ltcGxlRnVuY3Rpb24oImRpZENvbW1p
dExvYWQiKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVGcm9udGVuZFNl
dHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpw
b3B1bGF0ZUFwcGxpY2F0aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKIHsKICAg
ICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIp
OwotICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCJwb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3Mi
KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgicG9wdWxhdGVBcHBsaWNhdGlvblNldHRp
bmdzIik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc2V0dGluZ3MpOworICAgIGZ1bmN0
aW9uLmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVTZXNzaW9u
U2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOworICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KCJwb3B1bGF0ZVNlc3Npb25TZXR0aW5ncyIpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHNldHRpbmdzKTsKICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCBiOWY4N2VmLi4zMTdjMDMwIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTU5LDcgKzU5LDggQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogCi0gICAgICAgIHZv
aWQgcG9wdWxhdGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpOworICAg
ICAgICB2b2lkIHBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRp
bmdzKTsKKyAgICAgICAgdm9pZCBwb3B1bGF0ZVNlc3Npb25TZXR0aW5ncyhjb25zdCBTdHJpbmcm
IHNldHRpbmdzKTsKIAogICAgICAgICB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENv
dW50KHVuc2lnbmVkIGNvdW50KTsKICAgICAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShjb25z
dCBTY3JpcHRPYmplY3QmIG1lc3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBm
cmFtZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiBhcmd1
bWVudHMsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ29uc29sZVZpZXcuanMKaW5kZXggODUyMWNiMy4uZDFmMzQ3YiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtNDgsNyArNDgsNyBAQCBXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcgPSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5wcm9tcHRFbGVt
ZW50LmNsYXNzTmFtZSA9ICJzb3VyY2UtY29kZSI7CiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9wcm9tcHRLZXlEb3duLmJpbmQodGhpcyks
IHRydWUpOwogICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRo
aXMucHJvbXB0RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9u
U3RvcENoYXJhY3RlcnMgKyAiLiIpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVu
dExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CisgICAgV2Vi
SW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwg
dGhpcy5fc2V0dGluZ3NMb2FkZWQsIHRoaXMpOwogCiAgICAgdGhpcy50b3BHcm91cCA9IG5ldyBX
ZWJJbnNwZWN0b3IuQ29uc29sZUdyb3VwKG51bGwsIDApOwogICAgIHRoaXMubWVzc2FnZXNFbGVt
ZW50Lmluc2VydEJlZm9yZSh0aGlzLnRvcEdyb3VwLmVsZW1lbnQsIHRoaXMucHJvbXB0RWxlbWVu
dCk7CkBAIC0xMDQsNyArMTA0LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rp
b24oZHJhd2VyKQogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBf
c2V0dGluZ3NMb2FkZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucHJvbXB0Lmhp
c3RvcnkgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rvcnk7CisgICAgICAgIHRo
aXMucHJvbXB0Lmhpc3RvcnkgPSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25z
b2xlSGlzdG9yeTsKICAgICB9LAogICAgIAogICAgIF91cGRhdGVGaWx0ZXI6IGZ1bmN0aW9uKGUp
CkBAIC01MzYsNyArNTM2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHNlbGYucHJvbXB0Lmhpc3RvcnlPZmZzZXQgPSAwOwogICAgICAgICAg
ICAgc2VsZi5wcm9tcHQudGV4dCA9ICIiOwogCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MuY29uc29sZUhpc3RvcnkgPSBzZWxmLnByb21wdC5oaXN0b3J5LnNsaWNlKC0zMCk7Cisg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25zb2xlSGlzdG9y
eSA9IHNlbGYucHJvbXB0Lmhpc3Rvcnkuc2xpY2UoLTMwKTsKIAogICAgICAgICAgICAgc2VsZi5h
ZGRNZXNzYWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBl
eGNlcHRpb24sIGNvbW1hbmRNZXNzYWdlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKaW5k
ZXggMDQ1ZDI5Yi4uNjc5ODg0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTQ2LDcgKzQ2LDcgQEAg
V2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAgICAg
b3B0aW9uLmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RlZCBOb2RlIE9ubHki
KTsKICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwog
Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHRo
aXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25T
ZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwg
dGhpcyk7CiAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCBmdW5jdGlvbihldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB9LCBmYWxz
ZSk7CiAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hh
bmdlIiwgdGhpcy5fY2hhbmdlU2V0dGluZy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTU2LDcg
KzU2LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlv
bigpCiBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7
CiAgICAgX3NldHRpbmdzTG9hZGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZmls
dGVyID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyOworICAgICAg
ICB2YXIgZmlsdGVyID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0
ZW5lcnNGaWx0ZXI7CiAgICAgICAgIGlmIChmaWx0ZXIgPT09ICJhbGwiKQogICAgICAgICAgICAg
dGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbMF0uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICBp
ZiAoZmlsdGVyID09PSAic2VsZWN0ZWQiKQpAQCAtMTEyLDcgKzExMiw3IEBAIFdlYkluc3BlY3Rv
ci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY2hhbmdlU2V0
dGluZzogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24g
PSB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFt0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5z
ZWxlY3RlZEluZGV4XTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmV2ZW50TGlzdGVu
ZXJzRmlsdGVyID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5h
cHBsaWNhdGlvblNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gc2VsZWN0ZWRPcHRpb24u
dmFsdWU7CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlY3Rpb25zLmxlbmd0
aDsgKytpKQogICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1tpXS51cGRhdGUoKTsKQEAgLTE0Miw3
ICsxNDIsNyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKICAgICB7CiAgICAgICAgIC8vIEEgRmlsdGVyZWQgQXJyYXkgc2ltcGxpZmllcyB3aGVuIHRv
IGNyZWF0ZSBjb25uZWN0b3JzCiAgICAgICAgIHZhciBmaWx0ZXJlZEV2ZW50TGlzdGVuZXJzID0g
dGhpcy5ldmVudExpc3RlbmVyczsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5l
dmVudExpc3RlbmVyc0ZpbHRlciA9PT0gInNlbGVjdGVkIikgeworICAgICAgICBpZiAoV2ViSW5z
cGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxl
Y3RlZCIpIHsKICAgICAgICAgICAgIGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMgPSBbXTsKICAgICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ldmVudExpc3RlbmVycy5sZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgICAgIHZhciBldmVudExpc3RlbmVyID0gdGhpcy5ldmVudExpc3Rl
bmVyc1tpXTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0
b3JCYWNrZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JC
YWNrZW5kU3R1Yi5qcwppbmRleCA0NjcwYWYxLi5iMjVjMzU5IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0yMzcsMTAg
KzIzNywxNCBAQCBXZWJJbnNwZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0g
ewogICAgIHsKICAgICB9LAogCi0gICAgc2F2ZUZyb250ZW5kU2V0dGluZ3M6IGZ1bmN0aW9uKCkK
KyAgICBzYXZlQXBwbGljYXRpb25TZXR0aW5nczogZnVuY3Rpb24oKQogICAgIHsKICAgICB9LAog
CisgICAgc2F2ZVNlc3Npb25TZXR0aW5nczogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorICAg
IAogICAgIGRpc3BhdGNoT25JbmplY3RlZFNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKICAgICB9
LApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5q
cyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYjhl
NGU4MC4uYmZkMTU3NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jl
c291cmNlVmlldy5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VW
aWV3LmpzCkBAIC0xNDMsNyArMTQzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90
b3R5cGUgPSB7CiAgICAgX3NlbGVjdFRhYjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYg
KHRoaXMuX2hlYWRlcnNWaXNpYmxlKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuaGFzQ29udGVu
dFRhYigpIHx8IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPT09ICJoZWFk
ZXJzIikKKyAgICAgICAgICAgIGlmICghdGhpcy5oYXNDb250ZW50VGFiKCkgfHwgV2ViSW5zcGVj
dG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiID09PSAiaGVhZGVycyIpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0SGVhZGVyc1RhYigpOwogICAgICAgICAgICAgZWxz
ZQogICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0Q29udGVudFRhYigpOwpAQCAtMTU0LDE0ICsx
NTQsMTQgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3Nl
bGVjdEhlYWRlcnNUYWI6IGZ1bmN0aW9uKHVwZGF0ZVByZWZzKQogICAgIHsKICAgICAgICAgaWYg
KHVwZGF0ZVByZWZzKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNl
Vmlld1RhYiA9ICJoZWFkZXJzIjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLnJlc291cmNlVmlld1RhYiA9ICJoZWFkZXJzIjsKICAgICAgICAgdGhpcy50YWJi
ZWRQYW5lLnNlbGVjdFRhYkJ5SWQoImhlYWRlcnMiKTsKICAgICB9LAogCiAgICAgc2VsZWN0Q29u
dGVudFRhYjogZnVuY3Rpb24odXBkYXRlUHJlZnMpCiAgICAgewogICAgICAgICBpZiAodXBkYXRl
UHJlZnMpCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VWaWV3VGFi
ID0gImNvbnRlbnQiOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGlu
Z3MucmVzb3VyY2VWaWV3VGFiID0gImNvbnRlbnQiOwogICAgICAgICB0aGlzLl9pbm5lclNlbGVj
dENvbnRlbnRUYWIoKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
UmVzb3VyY2VzUGFuZWwuanMKaW5kZXggYjJkZmExNS4uZWY2YWEyNiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTUxLDcgKzE1MSw3IEBA
IFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAg
ICB0aGlzLmxhcmdlclJlc291cmNlc0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFy
QnV0dG9uKFdlYkluc3BlY3Rvci5VSVN0cmluZygiVXNlIHNtYWxsIHJlc291cmNlIHJvd3MuIiks
ICJyZXNvdXJjZXMtbGFyZ2VyLXJlc291cmNlcy1zdGF0dXMtYmFyLWl0ZW0iKTsKIAotICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5f
c2V0dGluZ3NMb2FkZWQsIHRoaXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25T
ZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwg
dGhpcyk7CiAgICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fdG9nZ2xlTGFyZ2VyUmVzb3VyY2VzLmJpbmQodGhpcyksIGZhbHNl
KTsKICAgICAgICAgdGhpcy5zb3J0aW5nU2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoInNlbGVjdCIpOwogICAgICAgICB0aGlzLnNvcnRpbmdTZWxlY3RFbGVtZW50LmNsYXNz
TmFtZSA9ICJzdGF0dXMtYmFyLWl0ZW0iOwpAQCAtMTYwLDkgKzE2MCw5IEBAIFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAKICAgICBfc2V0dGluZ3NMb2FkZWQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2ds
ZWQgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOwotICAgICAgICBp
ZiAoIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MpCi0gICAgICAgICAg
ICB0aGlzLl9zZXRMYXJnZXJSZXNvdXJjZXMoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNl
c0xhcmdlUm93cyk7CisgICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2dsZWQg
PSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3M7Cisg
ICAgICAgIGlmICghV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VzTGFy
Z2VSb3dzKQorICAgICAgICAgICAgdGhpcy5fc2V0TGFyZ2VyUmVzb3VyY2VzKFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyk7CiAgICAgfSwKIAogICAg
IGdldCBtYWluUmVzb3VyY2VMb2FkVGltZSgpCkBAIC02MzcsNyArNjM3LDcgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLml0ZW1z
VHJlZUVsZW1lbnQuX2NoaWxkcmVuTGlzdE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyA9ICFXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOworICAgICAgICBXZWJJbnNwZWN0b3Iu
YXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MgPSAhV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOwogICAgICAgICB0aGlzLl9zZXRM
YXJnZXJSZXNvdXJjZXModGhpcy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hpbGRyZW4pOwogICAg
IH0sCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFu
ZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4
IGY2ZWJjNDIuLjMxZjFlNWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qcwpAQCAtNjMyLDcgKzYzMiw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogCiAgICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlLnVybCB8
fCBzY3JpcHRPclJlc291cmNlLnNvdXJjZVVSTDsKICAgICAgICAgaWYgKHVybCAmJiAhb3B0aW9u
cy5pbml0aWFsTG9hZCkKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmll
d2VkU2NyaXB0RmlsZSA9IHVybDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlID0gdXJsOwogCiAgICAgICAgIGlmICghb3B0
aW9ucy5mcm9tQmFja0ZvcndhcmRBY3Rpb24pIHsKICAgICAgICAgICAgIHZhciBvbGRJbmRleCA9
IHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4OwpAQCAtNzMzLDcgKzczMyw3IEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBlbHNlIHsKICAgICAg
ICAgICAgIC8vIGlmIG5vdCBmaXJzdCBpdGVtLCBjaGVjayB0byBzZWUgaWYgdGhpcyB3YXMgdGhl
IGxhc3Qgdmlld2VkCiAgICAgICAgICAgICB2YXIgdXJsID0gb3B0aW9uLnJlcHJlc2VudGVkT2Jq
ZWN0LnVybCB8fCBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3Quc291cmNlVVJMOwotICAgICAgICAg
ICAgdmFyIGxhc3RVUkwgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZp
bGU7CisgICAgICAgICAgICB2YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNl
dHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlOwogICAgICAgICAgICAgaWYgKHVybCAmJiB1cmwg
PT09IGxhc3RVUkwpCiAgICAgICAgICAgICAgICAgdGhpcy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uo
b3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LCB7aW5pdGlhbExvYWQ6IHRydWV9KTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IGI5YjVmNzUuLjVl
ZTkzMjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ0LDE2
ICs0NCwzOSBAQCB2YXIgUHJlZmVyZW5jZXMgPSB7CiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0
cnVlCiB9CiAKLVdlYkluc3BlY3Rvci5wb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MgPSBmdW5jdGlv
bihzZXR0aW5nc1N0cmluZykKK1dlYkluc3BlY3Rvci5wb3B1bGF0ZUFwcGxpY2F0aW9uU2V0dGlu
Z3MgPSBmdW5jdGlvbihzZXR0aW5nc1N0cmluZykKIHsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3MuX2xvYWQoc2V0dGluZ3NTdHJpbmcpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNl
dHRpbmdzLl9sb2FkKHNldHRpbmdzU3RyaW5nKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImV2ZW50
LWxpc3RlbmVycy1maWx0ZXIiLCAiYWxsIik7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
U2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJjb2xvckZvcm1hdCIsICJjb2xvci1mb3JtYXQiLCAi
aGV4Iik7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0
aW5nKCJyZXNvdXJjZXNMYXJnZVJvd3MiLCAicmVzb3VyY2VzLWxhcmdlLXJvd3MiLCB0cnVlKTsK
KyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoIndh
dGNoRXhwcmVzc2lvbnMiLCAid2F0Y2gtZXhwcmVzc2lvbnMiLCBbXSk7CisgICAgV2ViSW5zcGVj
dG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0
RmlsZSIsICJsYXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOworICAgIFdlYkluc3BlY3Rvci5hcHBs
aWNhdGlvblNldHRpbmdzLl9pbnN0YWxsU2V0dGluZygic2hvd0luaGVyaXRlZENvbXB1dGVkU3R5
bGVQcm9wZXJ0aWVzIiwgInNob3ctaW5oZXJpdGVkLWNvbXB1dGVkLXN0eWxlLXByb3BlcnRpZXMi
LCBmYWxzZSk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxT
ZXR0aW5nKCJzaG93VXNlckFnZW50U3R5bGVzIiwgInNob3ctdXNlci1hZ2VudC1zdHlsZXMiLCB0
cnVlKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRp
bmcoInJlc291cmNlVmlld1RhYiIsICJyZXNvdXJjZS12aWV3LXRhYiIsICJjb250ZW50Iik7Cisg
ICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJjb25z
b2xlSGlzdG9yeSIsICJjb25zb2xlLWhpc3RvcnkiLCBbXSk7CisgICAgV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3MuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsKIH0K
IAotV2ViSW5zcGVjdG9yLlNldHRpbmdzID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLnBvcHVs
YXRlU2Vzc2lvblNldHRpbmdzID0gZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCiB7CisgICAgV2Vi
SW5zcGVjdG9yLnNlc3Npb25TZXR0aW5ncy5fbG9hZChzZXR0aW5nc1N0cmluZyk7CisgICAgV2Vi
SW5zcGVjdG9yLnNlc3Npb25TZXR0aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRl
ZCIpOworfQorCitXZWJJbnNwZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbihzZXNzaW9uU2NvcGUp
Cit7CisgICAgdGhpcy5fc2Vzc2lvblNjb3BlID0gc2Vzc2lvblNjb3BlOwogfQogCiBXZWJJbnNw
ZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlID0geworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAg
eworICAgICAgICB0aGlzLl9zdG9yZSA9IHt9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycygibG9hZGVkIik7CisgICAgfSwKKwogICAgIF9sb2FkOiBmdW5jdGlvbihzZXR0
aW5nc1N0cmluZykKICAgICB7CiAgICAgICAgIHRyeSB7CkBAIC02MiwxNyArODUsNiBAQCBXZWJJ
bnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gTWF5IGZhaWw7
CiAgICAgICAgICAgICB0aGlzLl9zdG9yZSA9IHt9OwogICAgICAgICB9Ci0KLSAgICAgICAgdGhp
cy5faW5zdGFsbFNldHRpbmcoImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImV2ZW50LWxpc3RlbmVy
cy1maWx0ZXIiLCAiYWxsIik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJjb2xvckZv
cm1hdCIsICJjb2xvci1mb3JtYXQiLCAiaGV4Iik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0
aW5nKCJyZXNvdXJjZXNMYXJnZVJvd3MiLCAicmVzb3VyY2VzLWxhcmdlLXJvd3MiLCB0cnVlKTsK
LSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoIndhdGNoRXhwcmVzc2lvbnMiLCAid2F0Y2gt
ZXhwcmVzc2lvbnMiLCBbXSk7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmll
d2VkU2NyaXB0RmlsZSIsICJsYXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOwotICAgICAgICB0aGlz
Ll9pbnN0YWxsU2V0dGluZygic2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwg
InNob3ctaW5oZXJpdGVkLWNvbXB1dGVkLXN0eWxlLXByb3BlcnRpZXMiLCBmYWxzZSk7Ci0gICAg
ICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJzaG93VXNlckFnZW50U3R5bGVzIiwgInNob3ctdXNl
ci1hZ2VudC1zdHlsZXMiLCB0cnVlKTsKLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoInJl
c291cmNlVmlld1RhYiIsICJyZXNvdXJjZS12aWV3LXRhYiIsICJjb250ZW50Iik7Ci0gICAgICAg
IHRoaXMuX2luc3RhbGxTZXR0aW5nKCJjb25zb2xlSGlzdG9yeSIsICJjb25zb2xlLWhpc3Rvcnki
LCBbXSk7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsK
ICAgICB9LAogCiAgICAgX2luc3RhbGxTZXR0aW5nOiBmdW5jdGlvbihuYW1lLCBwcm9wZXJ0eU5h
bWUsIGRlZmF1bHRWYWx1ZSkKQEAgLTkzLDcgKzEwNSwxMSBAQCBXZWJJbnNwZWN0b3IuU2V0dGlu
Z3MucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdGhpcy5fc3RvcmVbcHJvcGVydHlOYW1l
XSA9IG5ld1ZhbHVlOwogICAgICAgICB0cnkgewotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2Vu
ZC5zYXZlRnJvbnRlbmRTZXR0aW5ncyhKU09OLnN0cmluZ2lmeSh0aGlzLl9zdG9yZSkpOworICAg
ICAgICAgICAgdmFyIHN0b3JlID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fc3RvcmUpOworICAgICAg
ICAgICAgaWYgKHRoaXMuX3Nlc3Npb25TY29wZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JC
YWNrZW5kLnNhdmVTZXNzaW9uU2V0dGluZ3Moc3RvcmUpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIEluc3BlY3RvckJhY2tlbmQuc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3Moc3Rv
cmUpOwogICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgICAvLyBNYXkgZmFpbDsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1Np
ZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQ
YW5lLmpzCmluZGV4IDAxMTYyM2YuLjE4YjdmMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTYwLDcgKzYwLDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oY29tcHV0ZWRTdHlsZVBhbmUpCiAK
ICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IGZ1bmN0aW9uKGV2ZW50KSB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKICAg
ICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0
aGlzLl9jaGFuZ2VTZXR0aW5nLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQs
IHRoaXMpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmFkZEV2ZW50TGlz
dGVuZXIoImxvYWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKIAogICAgIHRoaXMu
dGl0bGVFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50KTsKICAg
ICB0aGlzLl9jb21wdXRlZFN0eWxlUGFuZSA9IGNvbXB1dGVkU3R5bGVQYW5lOwpAQCAtOTYsNyAr
OTYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROYW1lcyA9IFsK
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX3NldHRp
bmdzTG9hZGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZm9ybWF0ID0gV2ViSW5z
cGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0OworICAgICAgICB2YXIgZm9ybWF0ID0gV2ViSW5z
cGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuY29sb3JGb3JtYXQ7CiAgICAgICAgIGlmIChmb3Jt
YXQgPT09ICJoZXgiKQogICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbMF0u
c2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICBpZiAoZm9ybWF0ID09PSAicmdiIikKQEAgLTE0OCw3
ICsxNDgsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAocmVmcmVzaCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5n
ZXRDb21wdXRlZFN0eWxlQXN5bmMobm9kZS5pZCwgY29tcHV0ZWRTdHlsZUNhbGxiYWNrLmJpbmQo
dGhpcykpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwu
Z2V0U3R5bGVzQXN5bmMobm9kZS5pZCwgIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93VXNlckFn
ZW50U3R5bGVzLCBzdHlsZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFdlYklu
c3BlY3Rvci5jc3NNb2RlbC5nZXRTdHlsZXNBc3luYyhub2RlLmlkLCAhV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3Muc2hvd1VzZXJBZ2VudFN0eWxlcywgc3R5bGVzQ2FsbGJhY2suYmlu
ZCh0aGlzKSk7CiAgICAgfSwKIAogICAgIF9yZWZyZXNoVXBkYXRlOiBmdW5jdGlvbihub2RlLCBj
b21wdXRlZFN0eWxlLCBlZGl0ZWRTZWN0aW9uKQpAQCAtNDgyLDcgKzQ4Miw3IEBAIFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFNlbGVjdCB0
aGUgY29ycmVjdCBjb2xvciBmb3JtYXQgc2V0dGluZyBhZ2Fpbiwgc2luY2UgaXQgbmVlZHMgdG8g
YmUgc2VsZWN0ZWQuCiAgICAgICAgIHZhciBzZWxlY3RlZEluZGV4ID0gMDsKICAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
b3B0aW9uc1tpXS52YWx1ZSA9PT0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0KSB7
CisgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gV2ViSW5zcGVjdG9yLmFwcGxp
Y2F0aW9uU2V0dGluZ3MuY29sb3JGb3JtYXQpIHsKICAgICAgICAgICAgICAgICBzZWxlY3RlZElu
ZGV4ID0gaTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ5NCw3
ICs0OTQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewog
ICAgIF9jaGFuZ2VDb2xvckZvcm1hdDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2
YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFt0aGlzLnNldHRp
bmdzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNl
dHRpbmdzLmNvbG9yRm9ybWF0ID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CisgICAgICAgIFdlYklu
c3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbG9yRm9ybWF0ID0gc2VsZWN0ZWRPcHRpb24u
dmFsdWU7CiAKICAgICAgICAgZm9yICh2YXIgcHNldWRvSWQgaW4gdGhpcy5zZWN0aW9ucykgewog
ICAgICAgICAgICAgdmFyIHNlY3Rpb25zID0gdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF07CkBAIC01
ODEsMTggKzU4MSwxOCBAQCBXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lID0g
ZnVuY3Rpb24oKQogCiAgICAgZnVuY3Rpb24gc2V0dGluZ3NMb2FkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVBy
b3BlcnRpZXMpIHsKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcykgewogICAgICAgICAgICAgdGhp
cy5ib2R5RWxlbWVudC5hZGRTdHlsZUNsYXNzKCJzaG93LWluaGVyaXRlZCIpOwogICAgICAgICAg
ICAgc2hvd0luaGVyaXRlZENoZWNrYm94LmNoZWNrZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAg
fQogCi0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIs
IHNldHRpbmdzTG9hZGVkLmJpbmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHNldHRpbmdzTG9hZGVkLmJpbmQo
dGhpcykpOwogCiAgICAgZnVuY3Rpb24gc2hvd0luaGVyaXRlZFRvZ2dsZUZ1bmN0aW9uKGV2ZW50
KQogICAgIHsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21w
dXRlZFN0eWxlUHJvcGVydGllcyA9IHNob3dJbmhlcml0ZWRDaGVja2JveC5jaGVja2VkOwotICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxl
UHJvcGVydGllcykKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Muc2hv
d0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzID0gc2hvd0luaGVyaXRlZENoZWNrYm94
LmNoZWNrZWQ7CisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5z
aG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMpCiAgICAgICAgICAgICB0aGlzLmJv
ZHlFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNob3ctaW5oZXJpdGVkIik7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic2hvdy1pbmhl
cml0ZWQiKTsKQEAgLTExMjIsOSArMTEyMiw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7CiAg
ICAgICAgICAgICAgICAgaWYgKFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tuYW1lcyAmJiBjb2xv
ci5uaWNrbmFtZSkKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gIm5pY2tuYW1lIjsKLSAg
ICAgICAgICAgICAgICBlbHNlIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQg
PT09ICJyZ2IiKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNh
dGlvblNldHRpbmdzLmNvbG9yRm9ybWF0ID09PSAicmdiIikKICAgICAgICAgICAgICAgICAgICAg
Zm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/ICJyZ2IiIDogInJnYmEiKTsKLSAgICAgICAgICAgICAg
ICBlbHNlIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQgPT09ICJoc2wiKQor
ICAgICAgICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LmNvbG9yRm9ybWF0ID09PSAiaHNsIikKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNv
bG9yLnNpbXBsZSA/ICJoc2wiIDogImhzbGEiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChj
b2xvci5zaW1wbGUpCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5oYXNTaG9y
dEhleCgpID8gInNob3J0aGV4IiA6ICJoZXgiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCmluZGV4IDM2
NTVkNjguLmI1MzBhYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9X
YXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcwpAQCAtMzEsNyArMzEsNyBAQAog
V2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsK
ICAgICBXZWJJbnNwZWN0b3IuU2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIldhdGNoIEV4cHJlc3Npb25zIikpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7Cisg
ICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuV2F0
Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKQEAgLTM5LDcgKzM5LDcgQEAg
V2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAg
ICAgewogICAgICAgICB0aGlzLmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAg
ICAgdGhpcy5leHBhbmRlZCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy53YXRjaEV4cHJlc3Npb25z
Lmxlbmd0aCA+IDA7CisgICAgICAgIHRoaXMuZXhwYW5kZWQgPSBXZWJJbnNwZWN0b3IuYXBwbGlj
YXRpb25TZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zLmxlbmd0aCA+IDA7CiAgICAgICAgIHRoaXMu
c2VjdGlvbiA9IG5ldyBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24oKTsKICAg
ICAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLnNlY3Rpb24uZWxlbWVudCk7
CiAKQEAgLTc3LDcgKzc3LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9u
ID0gZnVuY3Rpb24oKQogCiAgICAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9u
LmNhbGwodGhpcyk7CiAKLSAgICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3Mud2F0Y2hFeHByZXNzaW9uczsKKyAgICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSBX
ZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zOwogCiAgICAg
dGhpcy5oZWFkZXJFbGVtZW50LmNsYXNzTmFtZSA9ICJoaWRkZW4iOwogICAgIHRoaXMuZWRpdGFi
bGUgPSB0cnVlOwpAQCAtMTk1LDcgKzE5NSw3IEBAIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Np
b25zU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy53YXRjaEV4cHJl
c3Npb25zW2ldKQogICAgICAgICAgICAgICAgIHRvU2F2ZS5wdXNoKHRoaXMud2F0Y2hFeHByZXNz
aW9uc1tpXSk7CiAKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLndhdGNoRXhwcmVzc2lv
bnMgPSB0b1NhdmU7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLndh
dGNoRXhwcmVzc2lvbnMgPSB0b1NhdmU7CiAgICAgICAgIHJldHVybiB0b1NhdmUubGVuZ3RoOwog
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhh
NzhjZDIuLjI1ZWE4NWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cwpAQCAtNDQwLDcgKzQ0MCw4IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAg
ICAgdmFyIHBvcnQgPSBXZWJJbnNwZWN0b3IucG9ydDsKICAgICBkb2N1bWVudC5ib2R5LmFkZFN0
eWxlQ2xhc3MoInBvcnQtIiArIHBvcnQpOwogCi0gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2V0dGluZ3MoKTsKKyAgICB0aGlzLmFwcGxpY2F0aW9uU2V0dGluZ3MgPSBuZXcg
V2ViSW5zcGVjdG9yLlNldHRpbmdzKGZhbHNlKTsKKyAgICB0aGlzLnNlc3Npb25TZXR0aW5ncyA9
IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3ModHJ1ZSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9y
dGN1dHMoKTsKIAogICAgIC8vIHNldCBvcmRlciBvZiBzb21lIHNlY3Rpb25zIGV4cGxpY2l0bHkK
QEAgLTEzNjEsNiArMTM2Miw3IEBAIFdlYkluc3BlY3Rvci5yZXNldCA9IGZ1bmN0aW9uKCkKICAg
ICAgICAgICAgIHBhbmVsLnJlc2V0KCk7CiAgICAgfQogCisgICAgdGhpcy5zZXNzaW9uU2V0dGlu
Z3MucmVzZXQoKTsKICAgICB0aGlzLmJyZWFrcG9pbnRNYW5hZ2VyLnJlc2V0KCk7CiAKICAgICBm
b3IgKHZhciBjYXRlZ29yeSBpbiB0aGlzLnJlc291cmNlQ2F0ZWdvcmllcykKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmlu
ZGV4IDcxMzE1ZGEuLmFhZWZhZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEw
LTA2LTA4ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
RW5hYmxlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9mIHRoZSBmcm9udGVuZCBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgK
KworICAgICAgICAqIHNyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qczoKKyAgICAgICAg
KGRldnRvb2xzLkluc3BlY3RvckJhY2tlbmRJbXBsKToKKwogMjAxMC0wNi0wNyAgQW5kcmVpIFBv
cGVzY3UgIDxhbmRyZWlwQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15
IE9ybG93LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250
cm9sbGVySW1wbC5qcyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxl
ckltcGwuanMKaW5kZXggODZmODg1YS4uYzUyZjUwOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcworKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCkBAIC02Nyw3ICs2Nyw4IEBAIGRl
dnRvb2xzLkluc3BlY3RvckJhY2tlbmRJbXBsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5zdGFs
bEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZUF0dHJpYnV0ZSIpOwogICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZURPTVN0b3JhZ2VJ
dGVtIik7CiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVt
b3ZlTm9kZSIpOwotICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8o
InNhdmVGcm9udGVuZFNldHRpbmdzIik7CisgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJv
bGxlckRlbGVnYXRlXygic2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MiKTsKKyAgICB0aGlzLmluc3Rh
bGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzYXZlU2Vzc2lvblNldHRpbmdzIik7CiAg
ICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0QXR0cmlidXRl
Iik7CiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0RE9N
U3RvcmFnZUl0ZW0iKTsKICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdh
dGVfKCJzZXRJbmplY3RlZFNjcmlwdFNvdXJjZSIpOwo=
</data>
<flag name="review"
          id="43012"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58242</attachid>
            <date>2010-06-09 07:21:31 -0700</date>
            <delta_ts>2010-06-11 04:17:56 -0700</delta_ts>
            <desc>[PATCH] Comments addressed, property-wise persistence introduced</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>43291</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZTUyMzUyNi4uZTg4YmJlZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4NyBAQAorMjAxMC0wNi0wOSAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kOjpzZXRGcm9udGVuZFByb3BlcnR5KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGxpY2F0aW9uU2V0dGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvblNldHRpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0RnJvbnRlbmRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9yZUxhc3RB
Y3RpdmVQYW5lbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRG
cm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVG
cm9udGVuZEFwcGxpY2F0aW9uU2V0dGluZ3MpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUmVzb3VyY2VUcmFja2luZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlUmVzb3VyY2VUcmFja2luZyk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjplbnN1cmVSZXNvdXJjZVRyYWNraW5n
U2V0dGluZ3NMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZW5hYmxlUHJvZmlsZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6
ZGlzYWJsZVByb2ZpbGVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6
OmVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OmRpc2FibGVEZWJ1Z2dlcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlQXBwbGlj
YXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6cG9w
dWxhdGVTZXNzaW9uU2V0dGluZ3MpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmNo
YW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OnJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JPYmplY3Q6OndyaXRlSlNPTik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5wcm90b3R5
cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db25zb2xlVmlldy5w
cm90b3R5cGUuX2VudGVyS2V5UHJlc3NlZC5wcmludFJlc3VsdCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9lbnRlcktleVByZXNzZWQpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc2V0
dGluZ3NMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJh
clBhbmUucHJvdG90eXBlKToKKyAgICAgICAgKCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250
LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qczoKKyAgICAgICAgKC5XZWJJbnNwZWN0b3IuSW5z
cGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlLnNldEZyb250ZW5kUHJvcGVydHkpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUuX3NlbGVjdFRhYik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5fc2VsZWN0SGVhZGVyc1RhYik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZS5zZWxlY3RDb250ZW50VGFi
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU3RhdHVz
YmFyQnV0dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFuZWwucHJvdG90
eXBlLl9zZXR0aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VzUGFu
ZWwucHJvdG90eXBlLl90b2dnbGVMYXJnZXJSZXNvdXJjZXMpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX3Nob3dTY3JpcHRPclJlc291cmNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9hZGRTY3JpcHRUb0ZpbGVzTWVudSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qczoKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5wb3B1bGF0ZUFwcGxpY2F0aW9uU2V0dGluZ3MpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLnBvcHVsYXRlU2Vzc2lvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0
aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLnJlc2V0KToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5TZXR0aW5ncy5wcm90b3R5cGUuX2xvYWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5faW5zdGFsbFNldHRpbmcpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5fc2V0KToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc2V0dGluZ3NMb2FkZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS51cGRhdGUpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fY2hhbmdl
U2V0dGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90
eXBlLl9jaGFuZ2VDb2xvckZvcm1hdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRT
dHlsZVNpZGViYXJQYW5lLnNldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5D
b21wdXRlZFN0eWxlU2lkZWJhclBhbmUuc2hvd0luaGVyaXRlZFRvZ2dsZUZ1bmN0aW9uKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBhbmUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fc2V0
dGluZ3NMb2FkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0
aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90
b3R5cGUuc2F2ZUV4cHJlc3Npb25zKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5sb2FkZWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLnJlc2V0KToKKwogMjAxMC0wNi0wOCAgRGlyayBTY2h1bHplICA8a3JpdEB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5pa29sYXMgWmltbWVybWFubi4KZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggOGE1NTk4Ni4uODM2NTc0ZiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTc5LDEwICs3OSwxMCBAQCBJ
bnNwZWN0b3JCYWNrZW5kOjp+SW5zcGVjdG9yQmFja2VuZCgpCiB7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yQmFja2VuZDo6c2F2ZUZyb250ZW5kU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykK
K3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2V0RnJvbnRlbmRQcm9wZXJ0eShjb25zdCBTdHJpbmcm
IG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWVKU09OLCBib29sIHNlc3Npb24pCiB7CiAgICAgaWYg
KG1faW5zcGVjdG9yQ29udHJvbGxlcikKLSAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5z
ZXRTZXR0aW5nKEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFt
ZSgpLCBzZXR0aW5ncyk7CisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0RnJvbnRl
bmRQcm9wZXJ0eShuYW1lLCB2YWx1ZUpTT04sIHNlc3Npb24pOwogfQogCiB2b2lkIEluc3BlY3Rv
ckJhY2tlbmQ6OnN0b3JlTGFzdEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxOYW1lKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IDI0YmEwYzUuLmE0YTVjODkgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGlj
OgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIoKSB7IHJldHVy
biBtX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KICAgICB2b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVy
KCkgeyBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9CiAKLSAgICB2b2lkIHNhdmVGcm9udGVu
ZFNldHRpbmdzKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0RnJvbnRlbmRQcm9wZXJ0eShj
b25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWVKU09OLCBib29sIHNlc3Npb24p
OwogCiAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsTmFt
ZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRs
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKaW5kZXggYzg5NGNhYy4u
ZjY0NTEyYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5p
ZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTM0LDcg
KzM0LDcgQEAgbW9kdWxlIGNvcmUgewogICAgIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVD
VE9SXSBJbnNwZWN0b3JCYWNrZW5kIHsKICAgICAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5l
bChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsKIAotICAgICAgICB2b2lkIHNhdmVGcm9udGVuZFNl
dHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5ncyk7CisgICAgICAgIHZvaWQgc2V0RnJvbnRlbmRQ
cm9wZXJ0eShpbiBET01TdHJpbmcgbmFtZSwgaW4gRE9NU3RyaW5nIHZhbHVlSlNPTiwgaW4gYm9v
bGVhbiBzZXNzaW9uKTsKIAogICAgICAgICB2b2lkIGVuYWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsK
ICAgICAgICAgdm9pZCBkaXNhYmxlU2VhcmNoaW5nRm9yTm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAppbmRleCBhMzFkYmM0Li45NGQwZjMzIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMTQ4LDYgKzE0OCw4IEBA
IEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSogcGFnZSwgSW5z
cGVjdG9yQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX2Nzc1N0b3JlKG5ldyBJbnNwZWN0b3JDU1NT
dG9yZSh0aGlzKSkKICAgICAsIG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQoMCkKICAgICAs
IG1fc2hvd0FmdGVyVmlzaWJsZShDdXJyZW50UGFuZWwpCisgICAgLCBtX2FwcGxpY2F0aW9uU2V0
dGluZ3MoMCkKKyAgICAsIG1fc2Vzc2lvblNldHRpbmdzKEluc3BlY3Rvck9iamVjdDo6Y3JlYXRl
KCkpCiAgICAgLCBtX2dyb3VwTGV2ZWwoMCkKICAgICAsIG1fc2VhcmNoaW5nRm9yTm9kZShmYWxz
ZSkKICAgICAsIG1fcHJldmlvdXNNZXNzYWdlKDApCkBAIC0yMTEsNyArMjEzLDcgQEAgYm9vbCBJ
bnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVkKCkgY29uc3QKICAgICByZXR1cm4gbV9pbnNwZWN0
ZWRQYWdlLT5zZXR0aW5ncygpLT5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCk7CiB9CiAKLVN0cmlu
ZyBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KSBjb25zdAor
U3RyaW5nIEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGxpY2F0aW9uU2V0dGluZyhjb25zdCBTdHJp
bmcmIGtleSkgY29uc3QKIHsKICAgICBTZXR0aW5nczo6aXRlcmF0b3IgaXQgPSBtX3NldHRpbmdz
LmZpbmQoa2V5KTsKICAgICBpZiAoaXQgIT0gbV9zZXR0aW5ncy5lbmQoKSkKQEAgLTIyMywxMiAr
MjI1LDI2IEBAIFN0cmluZyBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXR0aW5nKGNvbnN0IFN0cmlu
ZyYga2V5KSBjb25zdAogICAgIHJldHVybiB2YWx1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVl
KQordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRBcHBsaWNhdGlvblNldHRpbmcoY29uc3Qg
U3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgbV9zZXR0aW5ncy5zZXQo
a2V5LCB2YWx1ZSk7CiAgICAgbV9jbGllbnQtPnN0b3JlU2V0dGluZyhrZXksIHZhbHVlKTsKIH0K
IAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRGcm9udGVuZFByb3BlcnR5KGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZUpTT04sIGJvb2wgc2Vzc2lvbikKK3sKKyAg
ICBpZiAoIXNlc3Npb24pCisgICAgICAgIGVuc3VyZUZyb250ZW5kQXBwbGljYXRpb25TZXR0aW5n
cygpOworCisgICAgSW5zcGVjdG9yT2JqZWN0KiBzdG9yZSA9IHNlc3Npb24gPyBtX3Nlc3Npb25T
ZXR0aW5ncy5nZXQoKSA6IG1fYXBwbGljYXRpb25TZXR0aW5ncy5nZXQoKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gSW5zcGVjdG9yVmFsdWU6OnJlYWRKU09OKHZhbHVlSlNP
Tik7CisgICAgc3RvcmUtPnNldChuYW1lLCB2YWx1ZSk7CisgICAgCisgICAgLy8gTWFrZSBzdXJl
IGEgbmV3IGFwcGxpY2F0aW9uIHNldHRpbmcgdmFsdWUgaXMgcGVyc2lzdGVkIHRvIHRoZSBiYWNr
ZW5kLgorICAgIGlmICghc2Vzc2lvbikKKyAgICAgICAgc2V0QXBwbGljYXRpb25TZXR0aW5nKGZy
b250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpLCBzdG9yZS0+dG9KU09OU3RyaW5nKCkpOworfQor
ICAgIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0KE5vZGUqIG5vZGUpCiB7CiAg
ICAgaWYgKCFlbmFibGVkKCkpCkBAIC0zNjMsNyArMzc5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjptYXJrVGltZWxpbmUoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnN0b3JlTGFzdEFjdGl2ZVBhbmVsKGNvbnN0IFN0cmluZyYgcGFuZWxO
YW1lKQogewotICAgIHNldFNldHRpbmcobGFzdEFjdGl2ZVBhbmVsU2V0dGluZ05hbWUsIHBhbmVs
TmFtZSk7CisgICAgc2V0QXBwbGljYXRpb25TZXR0aW5nKGxhc3RBY3RpdmVQYW5lbFNldHRpbmdO
YW1lLCBwYW5lbE5hbWUpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Om1vdXNlRGlk
TW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zaWduZWQpCkBA
IC00MzUsMTAgKzQ1MSwxMCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5k
KFBhc3NPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmQ+IGZyb250ZW5kKQogICAgIGlmIChtX3RpbWVs
aW5lQWdlbnQpCiAgICAgICAgIG1fdGltZWxpbmVBZ2VudC0+cmVzZXRGcm9udGVuZFByb3h5T2Jq
ZWN0KG1fZnJvbnRlbmQuZ2V0KCkpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAm
JiBVU0UoSlNDKQotICAgIFN0cmluZyBkZWJ1Z2dlckVuYWJsZWQgPSBzZXR0aW5nKGRlYnVnZ2Vy
RW5hYmxlZFNldHRpbmdOYW1lKTsKKyAgICBTdHJpbmcgZGVidWdnZXJFbmFibGVkID0gYXBwbGlj
YXRpb25TZXR0aW5nKGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lKTsKICAgICBpZiAoZGVidWdn
ZXJFbmFibGVkID09ICJ0cnVlIikKICAgICAgICAgZW5hYmxlRGVidWdnZXIoKTsKLSAgICBTdHJp
bmcgcHJvZmlsZXJFbmFibGVkID0gc2V0dGluZyhwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSk7
CisgICAgU3RyaW5nIHByb2ZpbGVyRW5hYmxlZCA9IGFwcGxpY2F0aW9uU2V0dGluZyhwcm9maWxl
ckVuYWJsZWRTZXR0aW5nTmFtZSk7CiAgICAgaWYgKHByb2ZpbGVyRW5hYmxlZCA9PSAidHJ1ZSIp
CiAgICAgICAgIGVuYWJsZVByb2ZpbGVyKCk7CiAjZW5kaWYKQEAgLTQ0OSw3ICs0NjUsNyBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNldEZyb250ZW5kKFBhc3NPd25QdHI8SW5zcGVjdG9y
RnJvbnRlbmQ+IGZyb250ZW5kKQogICAgIHBvcHVsYXRlU2NyaXB0T2JqZWN0cygpOwogCiAgICAg
aWYgKG1fc2hvd0FmdGVyVmlzaWJsZSA9PSBDdXJyZW50UGFuZWwpIHsKLSAgICAgICAgU3RyaW5n
IGxhc3RBY3RpdmVQYW5lbFNldHRpbmcgPSBzZXR0aW5nKGxhc3RBY3RpdmVQYW5lbFNldHRpbmdO
YW1lKTsKKyAgICAgICAgU3RyaW5nIGxhc3RBY3RpdmVQYW5lbFNldHRpbmcgPSBhcHBsaWNhdGlv
blNldHRpbmcobGFzdEFjdGl2ZVBhbmVsU2V0dGluZ05hbWUpOwogICAgICAgICBtX3Nob3dBZnRl
clZpc2libGUgPSBzcGVjaWFsUGFuZWxGb3JKU05hbWUobGFzdEFjdGl2ZVBhbmVsU2V0dGluZyk7
CiAgICAgfQogCkBAIC01NDMsMTMgKzU1OSwyNCBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlbGVhc2VET01BZ2VudCgpCiAgICAgbV9kb21BZ2VudC5jbGVhcigpOwogfQogCit2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OmVuc3VyZUZyb250ZW5kQXBwbGljYXRpb25TZXR0aW5ncygpCit7
CisgICAgaWYgKCFtX2FwcGxpY2F0aW9uU2V0dGluZ3MpIHsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBzZXR0aW5nc1ZhbHVlID0gSW5zcGVjdG9yVmFsdWU6OnJlYWRKU09OKGFwcGxp
Y2F0aW9uU2V0dGluZyhmcm9udGVuZFNldHRpbmdzU2V0dGluZ05hbWUoKSkpOworICAgICAgICBp
ZiAoIXNldHRpbmdzVmFsdWUgfHwgIXNldHRpbmdzVmFsdWUtPmFzT2JqZWN0KCkpCisgICAgICAg
ICAgICBzZXR0aW5nc1ZhbHVlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKKyAgICAgICAg
bV9hcHBsaWNhdGlvblNldHRpbmdzID0gc2V0dGluZ3NWYWx1ZS0+YXNPYmplY3QoKTsKKyAgICB9
Cit9CisKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKCkK
IHsKICAgICBBU1NFUlQobV9mcm9udGVuZCk7CiAgICAgaWYgKCFtX2Zyb250ZW5kKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3Moc2V0
dGluZyhmcm9udGVuZFNldHRpbmdzU2V0dGluZ05hbWUoKSkpOworICAgIGVuc3VyZUZyb250ZW5k
QXBwbGljYXRpb25TZXR0aW5ncygpOworICAgIG1fZnJvbnRlbmQtPnBvcHVsYXRlQXBwbGljYXRp
b25TZXR0aW5ncyhtX2FwcGxpY2F0aW9uU2V0dGluZ3MtPnRvSlNPTlN0cmluZygpKTsKIAogICAg
IGlmIChtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkKQogICAgICAgICBtX2Zyb250ZW5kLT5yZXNv
dXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwpAQCAtNTk2LDYgKzYyMyw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKICAgICAgICAgbV9mcm9udGVu
ZC0+ZGlkQ3JlYXRlV29ya2VyKCppdC0+c2Vjb25kKTsKICNlbmRpZgogCisgICAgbV9mcm9udGVu
ZC0+cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MobV9zZXNzaW9uU2V0dGluZ3MtPnRvSlNPTlN0cmlu
ZygpKTsKICAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVyZmFjZSgpOwogCiAgICAgLy8gRGlz
cGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcwpAQCAtNjcyLDYgKzcwMCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVudExvYWRlciogbG9hZGVy
KQogICAgICAgICB1bmJpbmRBbGxSZXNvdXJjZXMoKTsKIAogICAgICAgICBtX2Nzc1N0b3JlLT5y
ZXNldCgpOworICAgICAgICBtX3Nlc3Npb25TZXR0aW5ncyA9IEluc3BlY3Rvck9iamVjdDo6Y3Jl
YXRlKCk7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kKSB7CiAgICAgICAgICAgICBtX2Zyb250ZW5k
LT5yZXNldCgpOwogICAgICAgICAgICAgbV9kb21BZ2VudC0+cmVzZXQoKTsKQEAgLTEwMjgsNyAr
MTA1Nyw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlUmVzb3VyY2VUcmFja2lu
Zyhib29sIGFsd2F5cywgYm9vbCByZWxvYWQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChh
bHdheXMpCi0gICAgICAgIHNldFNldHRpbmcocmVzb3VyY2VUcmFja2luZ0VuYWJsZWRTZXR0aW5n
TmFtZSwgInRydWUiKTsKKyAgICAgICAgc2V0QXBwbGljYXRpb25TZXR0aW5nKHJlc291cmNlVHJh
Y2tpbmdFbmFibGVkU2V0dGluZ05hbWUsICJ0cnVlIik7CiAKICAgICBpZiAobV9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0OCw3ICsxMDc3LDcgQEAgdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlUmVzb3VyY2VUcmFja2luZyhib29sIGFsd2F5
cykKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGlu
ZyhyZXNvdXJjZVRyYWNraW5nRW5hYmxlZFNldHRpbmdOYW1lLCAiZmFsc2UiKTsKKyAgICAgICAg
c2V0QXBwbGljYXRpb25TZXR0aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUs
ICJmYWxzZSIpOwogCiAgICAgQVNTRVJUKG1faW5zcGVjdGVkUGFnZSk7CiAgICAgbV9yZXNvdXJj
ZVRyYWNraW5nRW5hYmxlZCA9IGZhbHNlOwpAQCAtMTA2Miw3ICsxMDkxLDcgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjplbnN1cmVSZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQoKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9yZXNvdXJjZVRyYWNraW5nU2V0dGluZ3NMb2FkZWQgPSB0
cnVlOwogCi0gICAgU3RyaW5nIHJlc291cmNlVHJhY2tpbmcgPSBzZXR0aW5nKHJlc291cmNlVHJh
Y2tpbmdFbmFibGVkU2V0dGluZ05hbWUpOworICAgIFN0cmluZyByZXNvdXJjZVRyYWNraW5nID0g
YXBwbGljYXRpb25TZXR0aW5nKHJlc291cmNlVHJhY2tpbmdFbmFibGVkU2V0dGluZ05hbWUpOwog
ICAgIGlmIChyZXNvdXJjZVRyYWNraW5nID09ICJ0cnVlIikKICAgICAgICAgbV9yZXNvdXJjZVRy
YWNraW5nRW5hYmxlZCA9IHRydWU7CiB9CkBAIC0xNTM1LDcgKzE1NjQsNyBAQCB2b2lkIEluc3Bl
Y3RvckNvbnRyb2xsZXI6OnRvZ2dsZVJlY29yZEJ1dHRvbihib29sIGlzUHJvZmlsaW5nKQogdm9p
ZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcihib29sIGFsd2F5cywgYm9vbCBz
a2lwUmVjb21waWxlKQogewogICAgIGlmIChhbHdheXMpCi0gICAgICAgIHNldFNldHRpbmcocHJv
ZmlsZXJFbmFibGVkU2V0dGluZ05hbWUsICJ0cnVlIik7CisgICAgICAgIHNldEFwcGxpY2F0aW9u
U2V0dGluZyhwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSwgInRydWUiKTsKIAogICAgIGlmICht
X3Byb2ZpbGVyRW5hYmxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtMTU1Miw3ICsxNTgxLDcgQEAg
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjplbmFibGVQcm9maWxlcihib29sIGFsd2F5cywgYm9v
bCBza2lwUmVjb21waWxlKQogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNhYmxlUHJvZmls
ZXIoYm9vbCBhbHdheXMpCiB7CiAgICAgaWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGluZyhw
cm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSwgImZhbHNlIik7CisgICAgICAgIHNldEFwcGxpY2F0
aW9uU2V0dGluZyhwcm9maWxlckVuYWJsZWRTZXR0aW5nTmFtZSwgImZhbHNlIik7CiAKICAgICBp
ZiAoIW1fcHJvZmlsZXJFbmFibGVkKQogICAgICAgICByZXR1cm47CkBAIC0xNTcwLDcgKzE1OTks
NyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2FibGVQcm9maWxlcihib29sIGFsd2F5
cykKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZW5hYmxlRGVidWdnZXJGcm9tRnJvbnRlbmQo
Ym9vbCBhbHdheXMpCiB7CiAgICAgaWYgKGFsd2F5cykKLSAgICAgICAgc2V0U2V0dGluZyhkZWJ1
Z2dlckVuYWJsZWRTZXR0aW5nTmFtZSwgInRydWUiKTsKKyAgICAgICAgc2V0QXBwbGljYXRpb25T
ZXR0aW5nKGRlYnVnZ2VyRW5hYmxlZFNldHRpbmdOYW1lLCAidHJ1ZSIpOwogCiAgICAgQVNTRVJU
KG1faW5zcGVjdGVkUGFnZSk7CiAKQEAgLTE2MDMsNyArMTYzMiw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6ZGlzYWJsZURlYnVnZ2VyKGJvb2wgYWx3YXlzKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoYWx3YXlzKQotICAgICAgICBzZXRTZXR0aW5nKGRlYnVnZ2VyRW5hYmxlZFNl
dHRpbmdOYW1lLCAiZmFsc2UiKTsKKyAgICAgICAgc2V0QXBwbGljYXRpb25TZXR0aW5nKGRlYnVn
Z2VyRW5hYmxlZFNldHRpbmdOYW1lLCAiZmFsc2UiKTsKIAogICAgIEFTU0VSVChtX2luc3BlY3Rl
ZFBhZ2UpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9s
bGVyLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggYmRh
MjdhZi4uYzc4MzQ1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApA
QCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkNvbnNvbGUuaCIKICNpbmNsdWRlICJDb29raWUu
aCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3RvclZh
bHVlcy5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiU2NyaXB0QXJy
YXkuaCIKICNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCkBAIC0xMjQsOCArMTI1LDEwIEBA
IHB1YmxpYzoKIAogICAgIFBhZ2UqIGluc3BlY3RlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2lu
c3BlY3RlZFBhZ2U7IH0KIAotICAgIFN0cmluZyBzZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5KSBj
b25zdDsKLSAgICB2b2lkIHNldFNldHRpbmcoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpOworICAgIFN0cmluZyBhcHBsaWNhdGlvblNldHRpbmcoY29uc3QgU3RyaW5nJiBr
ZXkpIGNvbnN0OworICAgIHZvaWQgc2V0QXBwbGljYXRpb25TZXR0aW5nKGNvbnN0IFN0cmluZyYg
a2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAgICB2b2lkIHNldEZyb250ZW5kUHJvcGVydHko
Y29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlSlNPTiwgYm9vbCBzZXNzaW9u
KTsKKyAgICB2b2lkIGVuc3VyZUZyb250ZW5kQXBwbGljYXRpb25TZXR0aW5ncygpOwogCiAgICAg
dm9pZCBpbnNwZWN0KE5vZGUqKTsKICAgICB2b2lkIGhpZ2hsaWdodChOb2RlKik7CkBAIC0zNDMs
NiArMzQ2LDggQEAgcHJpdmF0ZToKICNlbmRpZgogICAgIFNwZWNpYWxQYW5lbHMgbV9zaG93QWZ0
ZXJWaXNpYmxlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBtX2FwcGxpY2F0aW9uU2V0dGluZ3M7CisgICAgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4gbV9zZXNzaW9uU2V0dGluZ3M7CiAgICAgdW5zaWduZWQgbV9ncm91cExl
dmVsOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwogICAgIENvbnNvbGVNZXNzYWdlKiBt
X3ByZXZpb3VzTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmNwcApp
bmRleCBhMzYxODUxLi43ZGQwYzhlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmQuY3BwCkBAIC04NiwxMCArODYsMTggQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkQ29t
bWl0TG9hZCgpCiAgICAgY2FsbFNpbXBsZUZ1bmN0aW9uKCJkaWRDb21taXRMb2FkIik7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyhjb25zdCBT
dHJpbmcmIHNldHRpbmdzKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVBcHBsaWNh
dGlvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCiB7CiAgICAgU2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKG1fd2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsKLSAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudCgicG9wdWxhdGVGcm9udGVuZFNldHRpbmdzIik7CisgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoInBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyIpOworICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNldHRpbmdzKTsKKyAgICBmdW5jdGlvbi5jYWxsKCk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlU2Vzc2lvblNldHRpbmdzKGNvbnN0
IFN0cmluZyYgc2V0dGluZ3MpCit7CisgICAgU2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKG1f
d2ViSW5zcGVjdG9yLCAiZGlzcGF0Y2giKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgi
cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MiKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChz
ZXR0aW5ncyk7CiAgICAgZnVuY3Rpb24uY2FsbCgpOwogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmgKaW5kZXggNjlkNGM0Zi4uNmVkNWU1OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JGcm9udGVuZC5oCkBAIC01OSw3ICs1OSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIGRpZENvbW1pdExvYWQoKTsKIAotICAgICAgICB2b2lkIHBvcHVsYXRlRnJv
bnRlbmRTZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRpbmdzKTsKKyAgICAgICAgdm9pZCBwb3B1
bGF0ZUFwcGxpY2F0aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncyk7CisgICAgICAg
IHZvaWQgcG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncyk7CiAK
ICAgICAgICAgdm9pZCB1cGRhdGVDb25zb2xlTWVzc2FnZUV4cGlyZWRDb3VudCh1bnNpZ25lZCBj
b3VudCk7CiAgICAgICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoY29uc3QgU2NyaXB0T2JqZWN0
JiBtZXNzYWdlT2JqLCBjb25zdCBWZWN0b3I8U2NyaXB0U3RyaW5nPiYgZnJhbWVzLCBjb25zdCBW
ZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gPiYgYXJndW1lbnRzLCBjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsLmNwcAppbmRleCAxOGM1MmRhLi4wOWVhOGUzIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMTE4
LDcgKzExOCw3IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6Y2hhbmdlQXR0
YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogewogICAgIHVuc2lnbmVkIHRvdGFs
SGVpZ2h0ID0gbV9mcm9udGVuZFBhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPnZpc2libGVIZWln
aHQoKSArIG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLT5tYWluRnJhbWUo
KS0+dmlldygpLT52aXNpYmxlSGVpZ2h0KCk7CiAgICAgdW5zaWduZWQgYXR0YWNoZWRIZWlnaHQg
PSBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0KGhlaWdodCwgdG90YWxIZWlnaHQpOwot
ICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0U2V0dGluZyhpbnNwZWN0b3JBdHRhY2hlZEhl
aWdodE5hbWUsIFN0cmluZzo6bnVtYmVyKGF0dGFjaGVkSGVpZ2h0KSk7CisgICAgbV9pbnNwZWN0
b3JDb250cm9sbGVyLT5zZXRBcHBsaWNhdGlvblNldHRpbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWln
aHROYW1lLCBTdHJpbmc6Om51bWJlcihhdHRhY2hlZEhlaWdodCkpOwogICAgIHNldEF0dGFjaGVk
V2luZG93SGVpZ2h0KGF0dGFjaGVkSGVpZ2h0KTsKIH0KIApAQCAtMTQ1LDcgKzE0NSw3IEBAIHZv
aWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6c2V0QXR0YWNoZWRXaW5kb3coYm9vbCBh
dHRhY2hlZCkKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6cmVzdG9yZUF0dGFj
aGVkV2luZG93SGVpZ2h0KCkKIHsKICAgICB1bnNpZ25lZCBpbnNwZWN0ZWRQYWdlSGVpZ2h0ID0g
bV9pbnNwZWN0b3JDb250cm9sbGVyLT5pbnNwZWN0ZWRQYWdlKCktPm1haW5GcmFtZSgpLT52aWV3
KCktPnZpc2libGVIZWlnaHQoKTsKLSAgICBTdHJpbmcgYXR0YWNoZWRIZWlnaHQgPSBtX2luc3Bl
Y3RvckNvbnRyb2xsZXItPnNldHRpbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHROYW1lKTsKKyAg
ICBTdHJpbmcgYXR0YWNoZWRIZWlnaHQgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmFwcGxpY2F0
aW9uU2V0dGluZyhpbnNwZWN0b3JBdHRhY2hlZEhlaWdodE5hbWUpOwogICAgIGJvb2wgc3VjY2Vz
cyA9IHRydWU7CiAgICAgaW50IGhlaWdodCA9IGF0dGFjaGVkSGVpZ2h0LnRvSW50KCZzdWNjZXNz
KTsKICAgICB1bnNpZ25lZCBwcmVmZXJyZWRIZWlnaHQgPSBzdWNjZXNzID8gaGVpZ2h0IDogZGVm
YXVsdEF0dGFjaGVkSGVpZ2h0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5k
ZXggMjM2MTJlNi4uNTJjNzNmNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3Bw
CkBAIC02MjQsOCArNjI0LDcgQEAgdm9pZCBJbnNwZWN0b3JPYmplY3Q6OndyaXRlSlNPTihWZWN0
b3I8VUNoYXI+KiBvdXRwdXQpIGNvbnN0CiAgICAgb3V0cHV0LT5hcHBlbmQoJ3snKTsKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3JkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgRGlj
dGlvbmFyeTo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2RhdGEuZmluZChtX29yZGVyW2ldKTsKLSAg
ICAgICAgQVNTRVJUKGl0ICE9IG1fZGF0YS5lbmQoKSk7Ci0gICAgICAgIGlmIChpdCAhPSBtX2Rh
dGEuYmVnaW4oKSkKKyAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBvdXRwdXQtPmFwcGVuZCgn
LCcpOwogICAgICAgICBkb3VibGVRdW90ZVN0cmluZyhpdC0+Zmlyc3QsIG91dHB1dCk7CiAgICAg
ICAgIG91dHB1dC0+YXBwZW5kKCc6Jyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvQ29uc29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMKaW5kZXggODUyMWNiMy4uZDFmMzQ3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9Db25zb2xlVmlldy5qcwpAQCAtNDgsNyArNDgsNyBAQCBXZWJJbnNwZWN0b3Iu
Q29uc29sZVZpZXcgPSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmNs
YXNzTmFtZSA9ICJzb3VyY2UtY29kZSI7CiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmFkZEV2ZW50
TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9wcm9tcHRLZXlEb3duLmJpbmQodGhpcyksIHRydWUp
OwogICAgIHRoaXMucHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJv
bXB0RWxlbWVudCwgdGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENo
YXJhY3RlcnMgKyAiLiIpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExpc3Rl
bmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVj
dG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5f
c2V0dGluZ3NMb2FkZWQsIHRoaXMpOwogCiAgICAgdGhpcy50b3BHcm91cCA9IG5ldyBXZWJJbnNw
ZWN0b3IuQ29uc29sZUdyb3VwKG51bGwsIDApOwogICAgIHRoaXMubWVzc2FnZXNFbGVtZW50Lmlu
c2VydEJlZm9yZSh0aGlzLnRvcEdyb3VwLmVsZW1lbnQsIHRoaXMucHJvbXB0RWxlbWVudCk7CkBA
IC0xMDQsNyArMTA0LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rpb24oZHJh
d2VyKQogV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfc2V0dGlu
Z3NMb2FkZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucHJvbXB0Lmhpc3Rvcnkg
PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rvcnk7CisgICAgICAgIHRoaXMucHJv
bXB0Lmhpc3RvcnkgPSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25zb2xlSGlz
dG9yeTsKICAgICB9LAogICAgIAogICAgIF91cGRhdGVGaWx0ZXI6IGZ1bmN0aW9uKGUpCkBAIC01
MzYsNyArNTM2LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHNlbGYucHJvbXB0Lmhpc3RvcnlPZmZzZXQgPSAwOwogICAgICAgICAgICAgc2Vs
Zi5wcm9tcHQudGV4dCA9ICIiOwogCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mu
Y29uc29sZUhpc3RvcnkgPSBzZWxmLnByb21wdC5oaXN0b3J5LnNsaWNlKC0zMCk7CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25zb2xlSGlzdG9yeSA9IHNl
bGYucHJvbXB0Lmhpc3Rvcnkuc2xpY2UoLTMwKTsKIAogICAgICAgICAgICAgc2VsZi5hZGRNZXNz
YWdlKG5ldyBXZWJJbnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBleGNlcHRp
b24sIGNvbW1hbmRNZXNzYWdlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKaW5kZXggMDQ1
ZDI5Yi4uNjc5ODg0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2
ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5z
cGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAgICAgb3B0aW9u
LmxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RlZCBOb2RlIE9ubHkiKTsKICAg
ICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwogCi0gICAg
V2ViSW5zcGVjdG9yLnNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHRoaXMuX3Nl
dHRpbmdzTG9hZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5n
cy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7
CiAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2si
LCBmdW5jdGlvbihldmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB9LCBmYWxzZSk7CiAg
ICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwg
dGhpcy5fY2hhbmdlU2V0dGluZy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTU2LDcgKzU2LDcg
QEAgV2ViSW5zcGVjdG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiBX
ZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAg
X3NldHRpbmdzTG9hZGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZmlsdGVyID0g
V2ViSW5zcGVjdG9yLnNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyOworICAgICAgICB2YXIg
ZmlsdGVyID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNG
aWx0ZXI7CiAgICAgICAgIGlmIChmaWx0ZXIgPT09ICJhbGwiKQogICAgICAgICAgICAgdGhpcy5z
ZXR0aW5nc1NlbGVjdEVsZW1lbnRbMF0uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICBpZiAoZmls
dGVyID09PSAic2VsZWN0ZWQiKQpAQCAtMTEyLDcgKzExMiw3IEBAIFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY2hhbmdlU2V0dGluZzog
ZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlz
LnNldHRpbmdzU2VsZWN0RWxlbWVudFt0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5zZWxlY3Rl
ZEluZGV4XTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmls
dGVyID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNh
dGlvblNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7
CiAKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlY3Rpb25zLmxlbmd0aDsgKytp
KQogICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1tpXS51cGRhdGUoKTsKQEAgLTE0Miw3ICsxNDIs
NyBAQCBXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAg
ICB7CiAgICAgICAgIC8vIEEgRmlsdGVyZWQgQXJyYXkgc2ltcGxpZmllcyB3aGVuIHRvIGNyZWF0
ZSBjb25uZWN0b3JzCiAgICAgICAgIHZhciBmaWx0ZXJlZEV2ZW50TGlzdGVuZXJzID0gdGhpcy5l
dmVudExpc3RlbmVyczsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5ldmVudExp
c3RlbmVyc0ZpbHRlciA9PT0gInNlbGVjdGVkIikgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9y
LmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxlY3RlZCIp
IHsKICAgICAgICAgICAgIGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMgPSBbXTsKICAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5ldmVudExpc3RlbmVycy5sZW5ndGg7ICsraSkgewog
ICAgICAgICAgICAgICAgIHZhciBldmVudExpc3RlbmVyID0gdGhpcy5ldmVudExpc3RlbmVyc1tp
XTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNr
ZW5kU3R1Yi5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5k
U3R1Yi5qcwppbmRleCA0NjcwYWYxLi4xZjk2ZDBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0yMzcsNyArMjM3LDcg
QEAgV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZSA9IHsKICAgICB7
CiAgICAgfSwKIAotICAgIHNhdmVGcm9udGVuZFNldHRpbmdzOiBmdW5jdGlvbigpCisgICAgc2V0
RnJvbnRlbmRQcm9wZXJ0eTogZnVuY3Rpb24oKQogICAgIHsKICAgICB9LAogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcwppbmRleCBiOGU0ZTgwLi5iZmQxNTc2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3Lmpz
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKQEAgLTE0
Myw3ICsxNDMsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICBfc2VsZWN0VGFiOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faGVhZGVy
c1Zpc2libGUpIHsKLSAgICAgICAgICAgIGlmICghdGhpcy5oYXNDb250ZW50VGFiKCkgfHwgV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlVmlld1RhYiA9PT0gImhlYWRlcnMiKQorICAgICAg
ICAgICAgaWYgKCF0aGlzLmhhc0NvbnRlbnRUYWIoKSB8fCBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPT09ICJoZWFkZXJzIikKICAgICAgICAgICAgICAg
ICB0aGlzLl9zZWxlY3RIZWFkZXJzVGFiKCk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAg
ICAgICAgdGhpcy5zZWxlY3RDb250ZW50VGFiKCk7CkBAIC0xNTQsMTQgKzE1NCwxNCBAQCBXZWJJ
bnNwZWN0b3IuUmVzb3VyY2VWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfc2VsZWN0SGVhZGVyc1Rh
YjogZnVuY3Rpb24odXBkYXRlUHJlZnMpCiAgICAgewogICAgICAgICBpZiAodXBkYXRlUHJlZnMp
Ci0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiID0gImhl
YWRlcnMiOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVz
b3VyY2VWaWV3VGFiID0gImhlYWRlcnMiOwogICAgICAgICB0aGlzLnRhYmJlZFBhbmUuc2VsZWN0
VGFiQnlJZCgiaGVhZGVycyIpOwogICAgIH0sCiAKICAgICBzZWxlY3RDb250ZW50VGFiOiBmdW5j
dGlvbih1cGRhdGVQcmVmcykKICAgICB7CiAgICAgICAgIGlmICh1cGRhdGVQcmVmcykKLSAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPSAiY29udGVudCI7
CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZVZp
ZXdUYWIgPSAiY29udGVudCI7CiAgICAgICAgIHRoaXMuX2lubmVyU2VsZWN0Q29udGVudFRhYigp
OwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZXNQYW5lbC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5l
bC5qcwppbmRleCBiMmRmYTE1Li5lZjZhYTI2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCkBAIC0xNTEsNyArMTUxLDcgQEAgV2ViSW5zcGVjdG9y
LlJlc291cmNlc1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHRoaXMubGFyZ2Vy
UmVzb3VyY2VzQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5z
cGVjdG9yLlVJU3RyaW5nKCJVc2Ugc21hbGwgcmVzb3VyY2Ugcm93cy4iKSwgInJlc291cmNlcy1s
YXJnZXItcmVzb3VyY2VzLXN0YXR1cy1iYXItaXRlbSIpOwogCi0gICAgICAgIFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRl
ZCwgdGhpcyk7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmFkZEV2
ZW50TGlzdGVuZXIoImxvYWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKICAgICAg
ICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl90b2dnbGVMYXJnZXJSZXNvdXJjZXMuYmluZCh0aGlzKSwgZmFsc2UpOwogICAgICAgICB0
aGlzLnNvcnRpbmdTZWxlY3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0
Iik7CiAgICAgICAgIHRoaXMuc29ydGluZ1NlbGVjdEVsZW1lbnQuY2xhc3NOYW1lID0gInN0YXR1
cy1iYXItaXRlbSI7CkBAIC0xNjAsOSArMTYwLDkgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1Bh
bmVsLnByb3RvdHlwZSA9IHsKIAogICAgIF9zZXR0aW5nc0xvYWRlZDogZnVuY3Rpb24oKQogICAg
IHsKLSAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xlZCA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3M7Ci0gICAgICAgIGlmICghV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cykKLSAgICAgICAgICAgIHRoaXMuX3NldExh
cmdlclJlc291cmNlcyhXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzKTsK
KyAgICAgICAgdGhpcy5sYXJnZXJSZXNvdXJjZXNCdXR0b24udG9nZ2xlZCA9IFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93czsKKyAgICAgICAgaWYgKCFX
ZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MpCisgICAg
ICAgICAgICB0aGlzLl9zZXRMYXJnZXJSZXNvdXJjZXMoV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
U2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzKTsKICAgICB9LAogCiAgICAgZ2V0IG1haW5SZXNv
dXJjZUxvYWRUaW1lKCkKQEAgLTYzNyw3ICs2MzcsNyBAQCBXZWJJbnNwZWN0b3IuUmVzb3VyY2Vz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuaXRlbXNUcmVlRWxlbWVudC5f
Y2hpbGRyZW5MaXN0Tm9kZSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzID0gIVdlYkluc3BlY3Rvci5zZXR0aW5n
cy5yZXNvdXJjZXNMYXJnZVJvd3M7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNl
dHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyA9ICFXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0
aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3M7CiAgICAgICAgIHRoaXMuX3NldExhcmdlclJlc291cmNl
cyh0aGlzLml0ZW1zVHJlZUVsZW1lbnQuc21hbGxDaGlsZHJlbik7CiAgICAgfSwKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggYWM2N2FiYS4uNDUw
NGQ1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5l
bC5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBA
IC02MzksNyArNjM5LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7
CiAKICAgICAgICAgdmFyIHVybCA9IHNjcmlwdE9yUmVzb3VyY2UudXJsIHx8IHNjcmlwdE9yUmVz
b3VyY2Uuc291cmNlVVJMOwogICAgICAgICBpZiAodXJsICYmICFvcHRpb25zLmluaXRpYWxMb2Fk
KQotICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxl
ID0gdXJsOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MubGFz
dFZpZXdlZFNjcmlwdEZpbGUgPSB1cmw7CiAKICAgICAgICAgaWYgKCFvcHRpb25zLmZyb21CYWNr
Rm9yd2FyZEFjdGlvbikgewogICAgICAgICAgICAgdmFyIG9sZEluZGV4ID0gdGhpcy5fY3VycmVu
dEJhY2tGb3J3YXJkSW5kZXg7CkBAIC03NDAsNyArNzQwLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgLy8gaWYg
bm90IGZpcnN0IGl0ZW0sIGNoZWNrIHRvIHNlZSBpZiB0aGlzIHdhcyB0aGUgbGFzdCB2aWV3ZWQK
ICAgICAgICAgICAgIHZhciB1cmwgPSBvcHRpb24ucmVwcmVzZW50ZWRPYmplY3QudXJsIHx8IG9w
dGlvbi5yZXByZXNlbnRlZE9iamVjdC5zb3VyY2VVUkw7Ci0gICAgICAgICAgICB2YXIgbGFzdFVS
TCA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZTsKKyAgICAgICAg
ICAgIHZhciBsYXN0VVJMID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MubGFzdFZp
ZXdlZFNjcmlwdEZpbGU7CiAgICAgICAgICAgICBpZiAodXJsICYmIHVybCA9PT0gbGFzdFVSTCkK
ICAgICAgICAgICAgICAgICB0aGlzLl9zaG93U2NyaXB0T3JSZXNvdXJjZShvcHRpb24ucmVwcmVz
ZW50ZWRPYmplY3QsIHtpbml0aWFsTG9hZDogdHJ1ZX0pOwogICAgICAgICB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMgYi9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKaW5kZXggOTdiZTE2My4uOWE3NDJlNCAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcwpAQCAtNDUsMTYgKzQ1LDM5IEBAIHZh
ciBQcmVmZXJlbmNlcyA9IHsKICAgICBhdWRpdHNQYW5lbEVuYWJsZWQ6IHRydWUKIH0KIAotV2Vi
SW5zcGVjdG9yLnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyA9IGZ1bmN0aW9uKHNldHRpbmdzU3Ry
aW5nKQorV2ViSW5zcGVjdG9yLnBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyA9IGZ1bmN0aW9u
KHNldHRpbmdzU3RyaW5nKQogewotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5fbG9hZChzZXR0
aW5nc1N0cmluZyk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2xvYWQo
c2V0dGluZ3NTdHJpbmcpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLl9p
bnN0YWxsU2V0dGluZygiZXZlbnRMaXN0ZW5lcnNGaWx0ZXIiLCAiZXZlbnQtbGlzdGVuZXJzLWZp
bHRlciIsICJhbGwiKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5z
dGFsbFNldHRpbmcoImNvbG9yRm9ybWF0IiwgImNvbG9yLWZvcm1hdCIsICJoZXgiKTsKKyAgICBX
ZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInJlc291cmNl
c0xhcmdlUm93cyIsICJyZXNvdXJjZXMtbGFyZ2Utcm93cyIsIHRydWUpOworICAgIFdlYkluc3Bl
Y3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLl9pbnN0YWxsU2V0dGluZygid2F0Y2hFeHByZXNzaW9u
cyIsICJ3YXRjaC1leHByZXNzaW9ucyIsIFtdKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRp
b25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoImxhc3RWaWV3ZWRTY3JpcHRGaWxlIiwgImxhc3Qt
dmlld2VkLXNjcmlwdC1maWxlIik7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGlu
Z3MuX2luc3RhbGxTZXR0aW5nKCJzaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMi
LCAic2hvdy1pbmhlcml0ZWQtY29tcHV0ZWQtc3R5bGUtcHJvcGVydGllcyIsIGZhbHNlKTsKKyAg
ICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInNob3dV
c2VyQWdlbnRTdHlsZXMiLCAic2hvdy11c2VyLWFnZW50LXN0eWxlcyIsIHRydWUpOworICAgIFdl
Ykluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLl9pbnN0YWxsU2V0dGluZygicmVzb3VyY2VW
aWV3VGFiIiwgInJlc291cmNlLXZpZXctdGFiIiwgImNvbnRlbnQiKTsKKyAgICBXZWJJbnNwZWN0
b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoImNvbnNvbGVIaXN0b3J5Iiwg
ImNvbnNvbGUtaGlzdG9yeSIsIFtdKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0
aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOwogfQogCi1XZWJJbnNwZWN0
b3IuU2V0dGluZ3MgPSBmdW5jdGlvbigpCitXZWJJbnNwZWN0b3IucG9wdWxhdGVTZXNzaW9uU2V0
dGluZ3MgPSBmdW5jdGlvbihzZXR0aW5nc1N0cmluZykKIHsKKyAgICBXZWJJbnNwZWN0b3Iuc2Vz
c2lvblNldHRpbmdzLl9sb2FkKHNldHRpbmdzU3RyaW5nKTsKKyAgICBXZWJJbnNwZWN0b3Iuc2Vz
c2lvblNldHRpbmdzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibG9hZGVkIik7Cit9CisKK1dl
Ykluc3BlY3Rvci5TZXR0aW5ncyA9IGZ1bmN0aW9uKHNlc3Npb25TY29wZSkKK3sKKyAgICB0aGlz
Ll9zZXNzaW9uU2NvcGUgPSBzZXNzaW9uU2NvcGU7CiB9CiAKIFdlYkluc3BlY3Rvci5TZXR0aW5n
cy5wcm90b3R5cGUgPSB7CisgICAgcmVzZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3N0b3JlID0ge307CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJs
b2FkZWQiKTsKKyAgICB9LAorCiAgICAgX2xvYWQ6IGZ1bmN0aW9uKHNldHRpbmdzU3RyaW5nKQog
ICAgIHsKICAgICAgICAgdHJ5IHsKQEAgLTYzLDI2ICs4NiwxNCBAQCBXZWJJbnNwZWN0b3IuU2V0
dGluZ3MucHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gTWF5IGZhaWw7CiAgICAgICAgICAg
ICB0aGlzLl9zdG9yZSA9IHt9OwogICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5faW5zdGFsbFNl
dHRpbmcoImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImV2ZW50LWxpc3RlbmVycy1maWx0ZXIiLCAi
YWxsIik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJjb2xvckZvcm1hdCIsICJjb2xv
ci1mb3JtYXQiLCAiaGV4Iik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJyZXNvdXJj
ZXNMYXJnZVJvd3MiLCAicmVzb3VyY2VzLWxhcmdlLXJvd3MiLCB0cnVlKTsKLSAgICAgICAgdGhp
cy5faW5zdGFsbFNldHRpbmcoIndhdGNoRXhwcmVzc2lvbnMiLCAid2F0Y2gtZXhwcmVzc2lvbnMi
LCBbXSk7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0Rmls
ZSIsICJsYXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0
dGluZygic2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwgInNob3ctaW5oZXJp
dGVkLWNvbXB1dGVkLXN0eWxlLXByb3BlcnRpZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2lu
c3RhbGxTZXR0aW5nKCJzaG93VXNlckFnZW50U3R5bGVzIiwgInNob3ctdXNlci1hZ2VudC1zdHls
ZXMiLCB0cnVlKTsKLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoInJlc291cmNlVmlld1Rh
YiIsICJyZXNvdXJjZS12aWV3LXRhYiIsICJjb250ZW50Iik7Ci0gICAgICAgIHRoaXMuX2luc3Rh
bGxTZXR0aW5nKCJjb25zb2xlSGlzdG9yeSIsICJjb25zb2xlLWhpc3RvcnkiLCBbXSk7Ci0gICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsKICAgICB9LAogCiAg
ICAgX2luc3RhbGxTZXR0aW5nOiBmdW5jdGlvbihuYW1lLCBwcm9wZXJ0eU5hbWUsIGRlZmF1bHRW
YWx1ZSkKICAgICB7CiAgICAgICAgIHRoaXMuX19kZWZpbmVHZXR0ZXJfXyhuYW1lLCB0aGlzLl9n
ZXQuYmluZCh0aGlzLCBwcm9wZXJ0eU5hbWUpKTsKICAgICAgICAgdGhpcy5fX2RlZmluZVNldHRl
cl9fKG5hbWUsIHRoaXMuX3NldC5iaW5kKHRoaXMsIHByb3BlcnR5TmFtZSkpOwotICAgICAgICBp
ZiAoIShwcm9wZXJ0eU5hbWUgaW4gdGhpcy5fc3RvcmUpKSB7CisgICAgICAgIGlmICghKHByb3Bl
cnR5TmFtZSBpbiB0aGlzLl9zdG9yZSkpCiAgICAgICAgICAgICB0aGlzLl9zdG9yZVtwcm9wZXJ0
eU5hbWVdID0gZGVmYXVsdFZhbHVlOwotICAgICAgICB9CiAgICAgfSwKIAogICAgIF9nZXQ6IGZ1
bmN0aW9uKHByb3BlcnR5TmFtZSkKQEAgLTk0LDcgKzEwNSw3IEBAIFdlYkluc3BlY3Rvci5TZXR0
aW5ncy5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLl9zdG9yZVtwcm9wZXJ0eU5h
bWVdID0gbmV3VmFsdWU7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JCYWNr
ZW5kLnNhdmVGcm9udGVuZFNldHRpbmdzKEpTT04uc3RyaW5naWZ5KHRoaXMuX3N0b3JlKSk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNldEZyb250ZW5kUHJvcGVydHkocHJvcGVydHlO
YW1lLCBKU09OLnN0cmluZ2lmeShuZXdWYWx1ZSksIHRoaXMuX3Nlc3Npb25TY29wZSk7CiAgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKICAgICAgICAgICAgIC8vIE1heSBmYWlsOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKaW5k
ZXggMDExNjIzZi4uMThiN2YwZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TdHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtNjAsNyArNjAsNyBAQCBXZWJJbnNwZWN0b3IuU3R5
bGVzU2lkZWJhclBhbmUgPSBmdW5jdGlvbihjb21wdXRlZFN0eWxlUGFuZSkKIAogICAgIHRoaXMu
c2V0dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24o
ZXZlbnQpIHsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCkgfSwgZmFsc2UpOwogICAgIHRoaXMuc2V0
dGluZ3NTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIHRoaXMuX2NoYW5n
ZVNldHRpbmcuYmluZCh0aGlzKSwgZmFsc2UpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5h
ZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7Cisg
ICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9h
ZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQsIHRoaXMpOwogCiAgICAgdGhpcy50aXRsZUVsZW1l
bnQuYXBwZW5kQ2hpbGQodGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnQpOwogICAgIHRoaXMuX2Nv
bXB1dGVkU3R5bGVQYW5lID0gY29tcHV0ZWRTdHlsZVBhbmU7CkBAIC05Niw3ICs5Niw3IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5Qc2V1ZG9JZE5hbWVzID0gWwogV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfc2V0dGluZ3NMb2FkZWQ6
IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHZhciBmb3JtYXQgPSBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MuY29sb3JGb3JtYXQ7CisgICAgICAgIHZhciBmb3JtYXQgPSBXZWJJbnNwZWN0b3IuYXBw
bGljYXRpb25TZXR0aW5ncy5jb2xvckZvcm1hdDsKICAgICAgICAgaWYgKGZvcm1hdCA9PT0gImhl
eCIpCiAgICAgICAgICAgICB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFswXS5zZWxlY3RlZCA9
IHRydWU7CiAgICAgICAgIGlmIChmb3JtYXQgPT09ICJyZ2IiKQpAQCAtMTQ4LDcgKzE0OCw3IEBA
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlm
IChyZWZyZXNoKQogICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLmdldENvbXB1dGVk
U3R5bGVBc3luYyhub2RlLmlkLCBjb21wdXRlZFN0eWxlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRTdHlsZXNB
c3luYyhub2RlLmlkLCAhV2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dVc2VyQWdlbnRTdHlsZXMs
IHN0eWxlc0NhbGxiYWNrLmJpbmQodGhpcykpOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNz
c01vZGVsLmdldFN0eWxlc0FzeW5jKG5vZGUuaWQsICFXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25T
ZXR0aW5ncy5zaG93VXNlckFnZW50U3R5bGVzLCBzdHlsZXNDYWxsYmFjay5iaW5kKHRoaXMpKTsK
ICAgICB9LAogCiAgICAgX3JlZnJlc2hVcGRhdGU6IGZ1bmN0aW9uKG5vZGUsIGNvbXB1dGVkU3R5
bGUsIGVkaXRlZFNlY3Rpb24pCkBAIC00ODIsNyArNDgyLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxl
c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgLy8gU2VsZWN0IHRoZSBjb3JyZWN0
IGNvbG9yIGZvcm1hdCBzZXR0aW5nIGFnYWluLCBzaW5jZSBpdCBuZWVkcyB0byBiZSBzZWxlY3Rl
ZC4KICAgICAgICAgdmFyIHNlbGVjdGVkSW5kZXggPSAwOwogICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmIChvcHRpb25zW2ld
LnZhbHVlID09PSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQpIHsKKyAgICAgICAg
ICAgIGlmIChvcHRpb25zW2ldLnZhbHVlID09PSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0
aW5ncy5jb2xvckZvcm1hdCkgewogICAgICAgICAgICAgICAgIHNlbGVjdGVkSW5kZXggPSBpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtNDk0LDcgKzQ5NCw3IEBA
IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX2NoYW5n
ZUNvbG9yRm9ybWF0OiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciBzZWxlY3Rl
ZE9wdGlvbiA9IHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50W3RoaXMuc2V0dGluZ3NTZWxlY3RF
bGVtZW50LnNlbGVjdGVkSW5kZXhdOwotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29s
b3JGb3JtYXQgPSBzZWxlY3RlZE9wdGlvbi52YWx1ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3MuY29sb3JGb3JtYXQgPSBzZWxlY3RlZE9wdGlvbi52YWx1ZTsKIAog
ICAgICAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiB0aGlzLnNlY3Rpb25zKSB7CiAgICAgICAgICAg
ICB2YXIgc2VjdGlvbnMgPSB0aGlzLnNlY3Rpb25zW3BzZXVkb0lkXTsKQEAgLTU4MSwxOCArNTgx
LDE4IEBAIFdlYkluc3BlY3Rvci5Db21wdXRlZFN0eWxlU2lkZWJhclBhbmUgPSBmdW5jdGlvbigp
CiAKICAgICBmdW5jdGlvbiBzZXR0aW5nc0xvYWRlZCgpCiAgICAgewotICAgICAgICBpZiAoV2Vi
SW5zcGVjdG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcykg
eworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Muc2hvd0luaGVy
aXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzKSB7CiAgICAgICAgICAgICB0aGlzLmJvZHlFbGVt
ZW50LmFkZFN0eWxlQ2xhc3MoInNob3ctaW5oZXJpdGVkIik7CiAgICAgICAgICAgICBzaG93SW5o
ZXJpdGVkQ2hlY2tib3guY2hlY2tlZCA9IHRydWU7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgc2V0dGluZ3NM
b2FkZWQuYmluZCh0aGlzKSk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Mu
YWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgc2V0dGluZ3NMb2FkZWQuYmluZCh0aGlzKSk7CiAK
ICAgICBmdW5jdGlvbiBzaG93SW5oZXJpdGVkVG9nZ2xlRnVuY3Rpb24oZXZlbnQpCiAgICAgewot
ICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQ
cm9wZXJ0aWVzID0gc2hvd0luaGVyaXRlZENoZWNrYm94LmNoZWNrZWQ7Ci0gICAgICAgIGlmIChX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVz
KQorICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5zaG93SW5oZXJpdGVk
Q29tcHV0ZWRTdHlsZVByb3BlcnRpZXMgPSBzaG93SW5oZXJpdGVkQ2hlY2tib3guY2hlY2tlZDsK
KyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnNob3dJbmhlcml0
ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcykKICAgICAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQu
YWRkU3R5bGVDbGFzcygic2hvdy1pbmhlcml0ZWQiKTsKICAgICAgICAgZWxzZQogICAgICAgICAg
ICAgdGhpcy5ib2R5RWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJzaG93LWluaGVyaXRlZCIpOwpA
QCAtMTEyMiw5ICsxMTIyLDkgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVu
dC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgdmFyIGZvcm1hdDsKICAgICAgICAgICAg
ICAgICBpZiAoUHJlZmVyZW5jZXMuc2hvd0NvbG9yTmlja25hbWVzICYmIGNvbG9yLm5pY2tuYW1l
KQogICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAibmlja25hbWUiOwotICAgICAgICAgICAg
ICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCA9PT0gInJnYiIp
CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGlu
Z3MuY29sb3JGb3JtYXQgPT09ICJyZ2IiKQogICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAo
Y29sb3Iuc2ltcGxlID8gInJnYiIgOiAicmdiYSIpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYg
KFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jb2xvckZvcm1hdCA9PT0gImhzbCIpCisgICAgICAgICAg
ICAgICAgZWxzZSBpZiAoV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuY29sb3JGb3Jt
YXQgPT09ICJoc2wiKQogICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSAoY29sb3Iuc2ltcGxl
ID8gImhzbCIgOiAiaHNsYSIpOwogICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbG9yLnNpbXBs
ZSkKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLmhhc1Nob3J0SGV4KCkgPyAi
c2hvcnRoZXgiIDogImhleCIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMKaW5kZXggMzY1NWQ2OC4uYjUz
MGFiNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVz
c2lvbnNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2F0
Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCkBAIC0zMSw3ICszMSw3IEBACiBXZWJJbnNwZWN0
b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogewogICAgIFdlYklu
c3BlY3Rvci5TaWRlYmFyUGFuZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiV2F0
Y2ggRXhwcmVzc2lvbnMiKSk7Ci0gICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmFkZEV2ZW50TGlz
dGVuZXIoImxvYWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKKyAgICBXZWJJbnNw
ZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQiLCB0aGlz
Ll9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CiB9CiAKIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Np
b25zU2lkZWJhclBhbmUucHJvdG90eXBlID0gewpAQCAtMzksNyArMzksNyBAQCBXZWJJbnNwZWN0
b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAg
ICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgICAgICB0aGlzLmV4
cGFuZGVkID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnMubGVuZ3RoID4g
MDsKKyAgICAgICAgdGhpcy5leHBhbmRlZCA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRp
bmdzLndhdGNoRXhwcmVzc2lvbnMubGVuZ3RoID4gMDsKICAgICAgICAgdGhpcy5zZWN0aW9uID0g
bmV3IFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbigpOwogICAgICAgICB0aGlz
LmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuc2VjdGlvbi5lbGVtZW50KTsKIApAQCAtNzcs
NyArNzcsNyBAQCBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24gPSBmdW5jdGlv
bigpCiAKICAgICBXZWJJbnNwZWN0b3IuT2JqZWN0UHJvcGVydGllc1NlY3Rpb24uY2FsbCh0aGlz
KTsKIAotICAgIHRoaXMud2F0Y2hFeHByZXNzaW9ucyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy53
YXRjaEV4cHJlc3Npb25zOworICAgIHRoaXMud2F0Y2hFeHByZXNzaW9ucyA9IFdlYkluc3BlY3Rv
ci5hcHBsaWNhdGlvblNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnM7CiAKICAgICB0aGlzLmhlYWRl
ckVsZW1lbnQuY2xhc3NOYW1lID0gImhpZGRlbiI7CiAgICAgdGhpcy5lZGl0YWJsZSA9IHRydWU7
CkBAIC0xOTUsNyArMTk1LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICh0aGlzLndhdGNoRXhwcmVzc2lvbnNbaV0p
CiAgICAgICAgICAgICAgICAgdG9TYXZlLnB1c2godGhpcy53YXRjaEV4cHJlc3Npb25zW2ldKTsK
IAotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mud2F0Y2hFeHByZXNzaW9ucyA9IHRvU2F2
ZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Mud2F0Y2hFeHByZXNz
aW9ucyA9IHRvU2F2ZTsKICAgICAgICAgcmV0dXJuIHRvU2F2ZS5sZW5ndGg7CiAgICAgfQogfQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggOGE3OGNkMi4uMjVl
YTg1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00NDAs
NyArNDQwLDggQEAgV2ViSW5zcGVjdG9yLmxvYWRlZCA9IGZ1bmN0aW9uKCkKICAgICB2YXIgcG9y
dCA9IFdlYkluc3BlY3Rvci5wb3J0OwogICAgIGRvY3VtZW50LmJvZHkuYWRkU3R5bGVDbGFzcygi
cG9ydC0iICsgcG9ydCk7CiAKLSAgICB0aGlzLnNldHRpbmdzID0gbmV3IFdlYkluc3BlY3Rvci5T
ZXR0aW5ncygpOworICAgIHRoaXMuYXBwbGljYXRpb25TZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0
b3IuU2V0dGluZ3MoZmFsc2UpOworICAgIHRoaXMuc2Vzc2lvblNldHRpbmdzID0gbmV3IFdlYklu
c3BlY3Rvci5TZXR0aW5ncyh0cnVlKTsKICAgICB0aGlzLl9yZWdpc3RlclNob3J0Y3V0cygpOwog
CiAgICAgLy8gc2V0IG9yZGVyIG9mIHNvbWUgc2VjdGlvbnMgZXhwbGljaXRseQpAQCAtMTM2MSw2
ICsxMzYyLDcgQEAgV2ViSW5zcGVjdG9yLnJlc2V0ID0gZnVuY3Rpb24oKQogICAgICAgICAgICAg
cGFuZWwucmVzZXQoKTsKICAgICB9CiAKKyAgICB0aGlzLnNlc3Npb25TZXR0aW5ncy5yZXNldCgp
OwogICAgIHRoaXMuYnJlYWtwb2ludE1hbmFnZXIucmVzZXQoKTsKIAogICAgIGZvciAodmFyIGNh
dGVnb3J5IGluIHRoaXMucmVzb3VyY2VDYXRlZ29yaWVzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWQzOWZj
YS4uYjQ2YmY4ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDYtMDkgIEFs
ZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBFbmFibGUgc2Vy
aWFsaXphdGlvbi9kZXNlcmlhbGl6YXRpb24gb2YgdGhlIGZyb250ZW5kIHN0YXRlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDIyOAorCisgICAgICAg
ICogc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzOgorICAgICAgICAoZGV2dG9vbHMu
SW5zcGVjdG9yQmFja2VuZEltcGwpOgorCiAyMDEwLTA2LTA5ICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3RvckNvbnRyb2xsZXJJ
bXBsLmpzIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5q
cwppbmRleCBkZTgzMGNlLi5hNjNiYmJmIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L2pzL0luc3BlY3RvckNvbnRyb2xsZXJJbXBsLmpzCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
anMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKQEAgLTY3LDcgKzY3LDcgQEAgZGV2dG9vbHMu
SW5zcGVjdG9yQmFja2VuZEltcGwgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5pbnN0YWxsSW5zcGVj
dG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlQXR0cmlidXRlIik7CiAgICAgdGhpcy5pbnN0
YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlRE9NU3RvcmFnZUl0ZW0iKTsK
ICAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJyZW1vdmVOb2Rl
Iik7Ci0gICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2F2ZUZy
b250ZW5kU2V0dGluZ3MiKTsKKyAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVs
ZWdhdGVfKCJzZXRGcm9udGVuZFByb3BlcnR5Iik7CiAgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9y
Q29udHJvbGxlckRlbGVnYXRlXygic2V0QXR0cmlidXRlIik7CiAgICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0RE9NU3RvcmFnZUl0ZW0iKTsKICAgICB0aGlz
Lmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRJbmplY3RlZFNjcmlwdFNv
dXJjZSIpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9XZWJLaXQvd2luL0No
YW5nZUxvZwppbmRleCA1OTc3YmRiLi5kMDU2ZjU1IDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEw
LTA2LTA5ICBBbGV4YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
RW5hYmxlIHNlcmlhbGl6YXRpb24vZGVzZXJpYWxpemF0aW9uIG9mIHRoZSBmcm9udGVuZCBzdGF0
ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgK
KworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAg
ICAgIChXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KToKKyAgICAgICAg
KFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3cpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucyk6
CisKIDIwMTAtMDYtMDggIEFudG9uaW8gR29tZXMgIDx0b25pa2l0b29Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpIGFuZCBEYXJpbiBBZGxlci4KZGlmZiAtLWdp
dCBhL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcCBiL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCAzYzI2
M2U1Li4zMTU2YTVhIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5jcHAKKysrIGIvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwCkBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudDo6YXR0YWNoV2luZG93KCkKICAgICBpZiAobV9hdHRhY2hlZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmluc3BlY3RvckNvbnRy
b2xsZXIoKS0+c2V0U2V0dGluZyhJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JTdGFydHNB
dHRhY2hlZFNldHRpbmdOYW1lKCksICJ0cnVlIik7CisgICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5w
YWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0QXBwbGljYXRpb25TZXR0aW5nKEluc3Bl
Y3RvckNvbnRyb2xsZXI6Omluc3BlY3RvclN0YXJ0c0F0dGFjaGVkU2V0dGluZ05hbWUoKSwgInRy
dWUiKTsKIAogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKICAgICBzaG93
V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKTsKQEAgLTI3Niw3ICsyNzYsNyBAQCB2b2lkIFdl
Ykluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpkZXRhY2hXaW5kb3coKQogICAgIGlmICghbV9hdHRh
Y2hlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9pbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0U2V0dGluZyhJbnNwZWN0b3JDb250cm9sbGVyOjpp
bnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCksICJmYWxzZSIpOworICAgIG1faW5z
cGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCktPnNldEFwcGxpY2F0
aW9uU2V0dGluZyhJbnNwZWN0b3JDb250cm9sbGVyOjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNl
dHRpbmdOYW1lKCksICJmYWxzZSIpOwogCiAgICAgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0
aW9ucygpOwogICAgIHNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwpAQCAtMzU4LDcg
KzM1OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNob3dXaW5kb3dXaXRo
b3V0Tm90aWZpY2F0aW9ucygpCiAgICAgICAgIHNob3VsZEF0dGFjaCA9IHRydWU7CiAgICAgZWxz
ZSB7CiAgICAgICAgIC8vIElmIG5vIHByZWZlcmVuY2UgaXMgc2V0IC0gZGVmYXVsdCB0byBhbiBh
dHRhY2hlZCB3aW5kb3cuIFRoaXMgaXMgaW1wb3J0YW50IGZvciBpbnNwZWN0b3IgTGF5b3V0VGVz
dHMuCi0gICAgICAgIFN0cmluZyBzaG91bGRBdHRhY2hQcmVmID0gbV9pbnNwZWN0ZWRXZWJWaWV3
LT5wYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKS0+c2V0dGluZyhJbnNwZWN0b3JDb250cm9s
bGVyOjppbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCkpOworICAgICAgICBTdHJp
bmcgc2hvdWxkQXR0YWNoUHJlZiA9IG1faW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCktPmFwcGxpY2F0aW9uU2V0dGluZyhJbnNwZWN0b3JDb250cm9sbGVyOjpp
bnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmdOYW1lKCkpOwogICAgICAgICBzaG91bGRBdHRh
Y2ggPSBzaG91bGRBdHRhY2hQcmVmICE9ICJmYWxzZSI7CiAKICAgICAgICAgaWYgKHNob3VsZEF0
dGFjaCAmJiAhY2FuQXR0YWNoV2luZG93KCkpCg==
</data>
<flag name="review"
          id="43183"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58461</attachid>
            <date>2010-06-11 04:17:56 -0700</date>
            <delta_ts>2010-06-11 16:01:19 -0700</delta_ts>
            <desc>[PATCH] Revert to serializing the entire Settings stores (not property-wise)</desc>
            <filename>festate.patch</filename>
            <type>text/plain</type>
            <size>31934</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzNkYTY4Mi4uMTA2OTRiOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3MSBAQAorMjAxMC0wNi0xMSAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEVuYWJsZSBzZXJpYWxpemF0aW9u
L2Rlc2VyaWFsaXphdGlvbiBvZiB0aGUgZnJvbnRlbmQgc3RhdGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMjI4CisKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNr
ZW5kOjpzYXZlQXBwbGljYXRpb25TZXR0aW5ncyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JCYWNrZW5kOjpzYXZlU2Vzc2lvblNldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlk
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldFNlc3Npb25TZXR0aW5ncyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpwb3B1bGF0ZVNjcmlwdE9i
amVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0
TG9hZCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnBvcHVsYXRlQXBwbGljYXRpb25TZXR0aW5ncyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29u
c29sZVZpZXcucHJvdG90eXBlLl9zZXR0aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuQ29uc29sZVZpZXcucHJvdG90eXBlLl9lbnRlcktleVByZXNzZWQucHJpbnRSZXN1bHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZS5fZW50ZXJLZXlQcmVz
c2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJh
clBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FdmVu
dExpc3RlbmVyc1NpZGViYXJQYW5lLnByb3RvdHlwZSk6CisgICAgICAgICgpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanM6CisgICAgICAgICgu
V2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHViLnByb3RvdHlwZS5zYXZlQXBwbGljYXRp
b25TZXR0aW5ncyk6CisgICAgICAgICguV2ViSW5zcGVjdG9yLkluc3BlY3RvckJhY2tlbmRTdHVi
LnByb3RvdHlwZS5zYXZlU2Vzc2lvblNldHRpbmdzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlVmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVZp
ZXcucHJvdG90eXBlLl9zZWxlY3RUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNl
Vmlldy5wcm90b3R5cGUuX3NlbGVjdEhlYWRlcnNUYWIpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlVmlldy5wcm90b3R5cGUuc2VsZWN0Q29udGVudFRhYik6CisgICAgICAgICogaW5z
cGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZXNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5SZXNvdXJjZXNQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVN0YXR1c2JhckJ1dHRvbnMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fc2V0dGluZ3NMb2Fk
ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVsLnByb3RvdHlwZS5fdG9n
Z2xlTGFyZ2VyUmVzb3VyY2VzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Njcmlw
dHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBl
Ll9zaG93U2NyaXB0T3JSZXNvdXJjZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZS5fYWRkU2NyaXB0VG9GaWxlc01lbnUpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU2V0dGluZ3MuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IucG9wdWxhdGVB
cHBsaWNhdGlvblNldHRpbmdzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5wb3B1bGF0ZVNlc3Np
b25TZXR0aW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2V0dGluZ3MpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlNldHRpbmdzLnByb3RvdHlwZS5yZXNldCk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlLl9sb2FkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
ZXR0aW5ncy5wcm90b3R5cGUuX3NldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5T
dHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2NoYW5nZVNldHRpbmcpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fY2hhbmdlQ29sb3JGb3Jt
YXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNvbXB1dGVkU3R5bGVTaWRlYmFyUGFuZS5zZXR0
aW5nc0xvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQ
YW5lLnNob3dJbmhlcml0ZWRUb2dnbGVGdW5jdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Q29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5k
L1dhdGNoRXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5X
YXRjaEV4cHJlc3Npb25zU2lkZWJhclBhbmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldhdGNo
RXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX3NldHRpbmdzTG9hZGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24ucHJvdG90eXBlLnNhdmVFeHByZXNzaW9u
cyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisgICAgICAg
IChXZWJJbnNwZWN0b3IubG9hZGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5yZXNldCk6CisK
IDIwMTAtMDYtMTEgIFN0ZXZlIEJsb2NrICA8c3RldmVibG9ja0Bnb29nbGUuY29tPgogCiAgICAg
ICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuY3BwCmluZGV4IGJjOTM0MWYuLjdmZjU2MmIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckJhY2tlbmQuY3BwCkBAIC03OSwxMiArNzksMTggQEAgSW5zcGVjdG9yQmFja2Vu
ZDo6fkluc3BlY3RvckJhY2tlbmQoKQogewogfQogCi12b2lkIEluc3BlY3RvckJhY2tlbmQ6OnNh
dmVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpCit2b2lkIEluc3BlY3Rv
ckJhY2tlbmQ6OnNhdmVBcHBsaWNhdGlvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3Mp
CiB7CiAgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKICAgICAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyLT5zZXRTZXR0aW5nKEluc3BlY3RvckNvbnRyb2xsZXI6OmZyb250ZW5kU2V0dGlu
Z3NTZXR0aW5nTmFtZSgpLCBzZXR0aW5ncyk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6
c2F2ZVNlc3Npb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRpbmdzKQoreworICAgIGlmICht
X2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2V0
U2Vzc2lvblNldHRpbmdzKHNldHRpbmdzKTsKK30KKwogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpz
dG9yZUxhc3RBY3RpdmVQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsTmFtZSkKIHsKICAgICBpZiAo
bV9pbnNwZWN0b3JDb250cm9sbGVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmlu
ZGV4IDRjNDI4MmYuLjg0YmYyZTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckJhY2tlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgK
QEAgLTU3LDcgKzU3LDggQEAgcHVibGljOgogICAgIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3Bl
Y3RvckNvbnRyb2xsZXIoKSB7IHJldHVybiBtX2luc3BlY3RvckNvbnRyb2xsZXI7IH0KICAgICB2
b2lkIGRpc2Nvbm5lY3RDb250cm9sbGVyKCkgeyBtX2luc3BlY3RvckNvbnRyb2xsZXIgPSAwOyB9
CiAKLSAgICB2b2lkIHNhdmVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzYXZl
U2Vzc2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYpOwogCiAgICAgdm9pZCBzdG9yZUxhc3RBY3Rp
dmVQYW5lbChjb25zdCBTdHJpbmcmIHBhbmVsTmFtZSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQmFja2VuZC5pZGwKaW5kZXggODJhNzk1NC4uYThjNmY5NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQmFja2VuZC5pZGwKQEAgLTM0LDcgKzM0LDggQEAgbW9kdWxlIGNvcmUgewogICAg
IGludGVyZmFjZSBbQ29uZGl0aW9uYWw9SU5TUEVDVE9SXSBJbnNwZWN0b3JCYWNrZW5kIHsKICAg
ICAgICAgdm9pZCBzdG9yZUxhc3RBY3RpdmVQYW5lbChpbiBET01TdHJpbmcgcGFuZWxOYW1lKTsK
IAotICAgICAgICB2b2lkIHNhdmVGcm9udGVuZFNldHRpbmdzKGluIERPTVN0cmluZyBzZXR0aW5n
cyk7CisgICAgICAgIHZvaWQgc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3MoaW4gRE9NU3RyaW5nIHNl
dHRpbmdzKTsKKyAgICAgICAgdm9pZCBzYXZlU2Vzc2lvblNldHRpbmdzKGluIERPTVN0cmluZyBz
ZXR0aW5ncyk7CiAKICAgICAgICAgdm9pZCBlbmFibGVTZWFyY2hpbmdGb3JOb2RlKCk7CiAgICAg
ICAgIHZvaWQgZGlzYWJsZVNlYXJjaGluZ0Zvck5vZGUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNjczNDgzYi4uMzIyYjI5MiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE0OCw2ICsxNDgsNyBAQCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKFBhZ2UqIHBhZ2UsIEluc3BlY3Rv
ckNsaWVudCogY2xpZW50KQogICAgICwgbV9jc3NTdG9yZShuZXcgSW5zcGVjdG9yQ1NTU3RvcmUo
dGhpcykpCiAgICAgLCBtX2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50KDApCiAgICAgLCBtX3No
b3dBZnRlclZpc2libGUoQ3VycmVudFBhbmVsKQorICAgICwgbV9zZXNzaW9uU2V0dGluZ3MoSW5z
cGVjdG9yT2JqZWN0OjpjcmVhdGUoKSkKICAgICAsIG1fZ3JvdXBMZXZlbCgwKQogICAgICwgbV9z
ZWFyY2hpbmdGb3JOb2RlKGZhbHNlKQogICAgICwgbV9wcmV2aW91c01lc3NhZ2UoMCkKQEAgLTIy
OSw2ICsyMzAsMTEgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRTZXR0aW5nKGNvbnN0
IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogICAgIG1fY2xpZW50LT5zdG9yZVNl
dHRpbmcoa2V5LCB2YWx1ZSk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2V0U2Vz
c2lvblNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3NKU09OKQoreworICAgIG1fc2Vzc2lv
blNldHRpbmdzID0gSW5zcGVjdG9yVmFsdWU6OnJlYWRKU09OKHNldHRpbmdzSlNPTik7Cit9CisK
IHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6aW5zcGVjdChOb2RlKiBub2RlKQogewogICAgIGlm
ICghZW5hYmxlZCgpKQpAQCAtNTU1LDcgKzU2MSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKICAgICBpZiAoIW1fZnJvbnRlbmQpCiAgICAgICAg
IHJldHVybjsKIAotICAgIG1fZnJvbnRlbmQtPnBvcHVsYXRlRnJvbnRlbmRTZXR0aW5ncyhzZXR0
aW5nKGZyb250ZW5kU2V0dGluZ3NTZXR0aW5nTmFtZSgpKSk7CisgICAgbV9mcm9udGVuZC0+cG9w
dWxhdGVBcHBsaWNhdGlvblNldHRpbmdzKHNldHRpbmcoZnJvbnRlbmRTZXR0aW5nc1NldHRpbmdO
YW1lKCkpKTsKIAogICAgIGlmIChtX3Jlc291cmNlVHJhY2tpbmdFbmFibGVkKQogICAgICAgICBt
X2Zyb250ZW5kLT5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCgpOwpAQCAtNjAyLDYgKzYwOCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKCkKICAg
ICAgICAgbV9mcm9udGVuZC0+ZGlkQ3JlYXRlV29ya2VyKCppdC0+c2Vjb25kKTsKICNlbmRpZgog
CisgICAgbV9mcm9udGVuZC0+cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MobV9zZXNzaW9uU2V0dGlu
Z3MtPnRvSlNPTlN0cmluZygpKTsKICAgICBtX2Zyb250ZW5kLT5wb3B1bGF0ZUludGVyZmFjZSgp
OwogCiAgICAgLy8gRGlzcGF0Y2ggcGVuZGluZyBmcm9udGVuZCBjb21tYW5kcwpAQCAtNjc5LDYg
KzY4Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgICAgICB1bmJpbmRBbGxSZXNvdXJjZXMoKTsKIAogICAgICAg
ICBtX2Nzc1N0b3JlLT5yZXNldCgpOworICAgICAgICBtX3Nlc3Npb25TZXR0aW5ncyA9IEluc3Bl
Y3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIGlmIChtX2Zyb250ZW5kKSB7CiAgICAgICAg
ICAgICBtX2Zyb250ZW5kLT5yZXNldCgpOwogICAgICAgICAgICAgbV9kb21BZ2VudC0+cmVzZXQo
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCAwODQwNzIzLi42
M2ZlMmIxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0zMiw2
ICszMiw3IEBACiAjaW5jbHVkZSAiQ29uc29sZS5oIgogI2luY2x1ZGUgIkNvb2tpZS5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yVmFsdWVzLmgi
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJTY3JpcHRBcnJheS5oIgog
I2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKQEAgLTEyNiw2ICsxMjcsNyBAQCBwdWJsaWM6
CiAKICAgICBTdHJpbmcgc2V0dGluZyhjb25zdCBTdHJpbmcmIGtleSkgY29uc3Q7CiAgICAgdm9p
ZCBzZXRTZXR0aW5nKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAg
ICB2b2lkIHNldFNlc3Npb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgaW5z
cGVjdChOb2RlKik7CiAgICAgdm9pZCBoaWdobGlnaHQoTm9kZSopOwpAQCAtMzQ0LDYgKzM0Niw3
IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBTcGVjaWFsUGFuZWxzIG1fc2hvd0FmdGVyVmlzaWJs
ZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHRlZE5vZGU7CisgICAgUmVmUHRyPEluc3Bl
Y3RvclZhbHVlPiBtX3Nlc3Npb25TZXR0aW5nczsKICAgICB1bnNpZ25lZCBtX2dyb3VwTGV2ZWw7
CiAgICAgYm9vbCBtX3NlYXJjaGluZ0Zvck5vZGU7CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJl
dmlvdXNNZXNzYWdlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCmluZGV4
IGFlYzNmYWYuLmZmNTc1YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5j
cHAKQEAgLTg2LDEwICs4NiwxOCBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kOjpkaWRDb21taXRM
b2FkKCkKICAgICBjYWxsU2ltcGxlRnVuY3Rpb24oImRpZENvbW1pdExvYWQiKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVGcm9udGVuZFNldHRpbmdzKGNvbnN0IFN0cmlu
ZyYgc2V0dGluZ3MpCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpwb3B1bGF0ZUFwcGxpY2F0aW9u
U2V0dGluZ3MoY29uc3QgU3RyaW5nJiBzZXR0aW5ncykKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24obV93ZWJJbnNwZWN0b3IsICJkaXNwYXRjaCIpOwotICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KCJwb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MiKTsKKyAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCgicG9wdWxhdGVBcHBsaWNhdGlvblNldHRpbmdzIik7CisgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoc2V0dGluZ3MpOworICAgIGZ1bmN0aW9uLmNhbGwoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6cG9wdWxhdGVTZXNzaW9uU2V0dGluZ3MoY29uc3QgU3Ry
aW5nJiBzZXR0aW5ncykKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24obV93ZWJJ
bnNwZWN0b3IsICJkaXNwYXRjaCIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KCJwb3B1
bGF0ZVNlc3Npb25TZXR0aW5ncyIpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNldHRp
bmdzKTsKICAgICBmdW5jdGlvbi5jYWxsKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaAppbmRleCA3YTI2OWM2Li4zNzZmMDVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmgKQEAgLTU5LDcgKzU5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAg
ICAgIHZvaWQgZGlkQ29tbWl0TG9hZCgpOwogCi0gICAgICAgIHZvaWQgcG9wdWxhdGVGcm9udGVu
ZFNldHRpbmdzKGNvbnN0IFN0cmluZyYgc2V0dGluZ3MpOworICAgICAgICB2b2lkIHBvcHVsYXRl
QXBwbGljYXRpb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRpbmdzKTsKKyAgICAgICAgdm9p
ZCBwb3B1bGF0ZVNlc3Npb25TZXR0aW5ncyhjb25zdCBTdHJpbmcmIHNldHRpbmdzKTsKIAogICAg
ICAgICB2b2lkIHVwZGF0ZUNvbnNvbGVNZXNzYWdlRXhwaXJlZENvdW50KHVuc2lnbmVkIGNvdW50
KTsKICAgICAgICAgdm9pZCBhZGRDb25zb2xlTWVzc2FnZShjb25zdCBTY3JpcHRPYmplY3QmIG1l
c3NhZ2VPYmosIGNvbnN0IFZlY3RvcjxTY3JpcHRTdHJpbmc+JiBmcmFtZXMsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiA+JiBhcmd1bWVudHMsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29u
c29sZVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ29uc29sZVZpZXcuanMK
aW5kZXggODUyMWNiMy4uZDFmMzQ3YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0NvbnNvbGVWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9D
b25zb2xlVmlldy5qcwpAQCAtNDgsNyArNDgsNyBAQCBXZWJJbnNwZWN0b3IuQ29uc29sZVZpZXcg
PSBmdW5jdGlvbihkcmF3ZXIpCiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmNsYXNzTmFtZSA9ICJz
b3VyY2UtY29kZSI7CiAgICAgdGhpcy5wcm9tcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtl
eWRvd24iLCB0aGlzLl9wcm9tcHRLZXlEb3duLmJpbmQodGhpcyksIHRydWUpOwogICAgIHRoaXMu
cHJvbXB0ID0gbmV3IFdlYkluc3BlY3Rvci5UZXh0UHJvbXB0KHRoaXMucHJvbXB0RWxlbWVudCwg
dGhpcy5jb21wbGV0aW9ucy5iaW5kKHRoaXMpLCBFeHByZXNzaW9uU3RvcENoYXJhY3RlcnMgKyAi
LiIpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJsb2FkZWQi
LCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0
aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2Fk
ZWQsIHRoaXMpOwogCiAgICAgdGhpcy50b3BHcm91cCA9IG5ldyBXZWJJbnNwZWN0b3IuQ29uc29s
ZUdyb3VwKG51bGwsIDApOwogICAgIHRoaXMubWVzc2FnZXNFbGVtZW50Lmluc2VydEJlZm9yZSh0
aGlzLnRvcEdyb3VwLmVsZW1lbnQsIHRoaXMucHJvbXB0RWxlbWVudCk7CkBAIC0xMDQsNyArMTA0
LDcgQEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3ID0gZnVuY3Rpb24oZHJhd2VyKQogV2ViSW5z
cGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICBfc2V0dGluZ3NMb2FkZWQ6IGZ1
bmN0aW9uKCkKICAgICB7Ci0gICAgICAgIHRoaXMucHJvbXB0Lmhpc3RvcnkgPSBXZWJJbnNwZWN0
b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rvcnk7CisgICAgICAgIHRoaXMucHJvbXB0Lmhpc3Rvcnkg
PSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25zb2xlSGlzdG9yeTsKICAgICB9
LAogICAgIAogICAgIF91cGRhdGVGaWx0ZXI6IGZ1bmN0aW9uKGUpCkBAIC01MzYsNyArNTM2LDcg
QEAgV2ViSW5zcGVjdG9yLkNvbnNvbGVWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHNl
bGYucHJvbXB0Lmhpc3RvcnlPZmZzZXQgPSAwOwogICAgICAgICAgICAgc2VsZi5wcm9tcHQudGV4
dCA9ICIiOwogCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29uc29sZUhpc3Rv
cnkgPSBzZWxmLnByb21wdC5oaXN0b3J5LnNsaWNlKC0zMCk7CisgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5jb25zb2xlSGlzdG9yeSA9IHNlbGYucHJvbXB0Lmhp
c3Rvcnkuc2xpY2UoLTMwKTsKIAogICAgICAgICAgICAgc2VsZi5hZGRNZXNzYWdlKG5ldyBXZWJJ
bnNwZWN0b3IuQ29uc29sZUNvbW1hbmRSZXN1bHQocmVzdWx0LCBleGNlcHRpb24sIGNvbW1hbmRN
ZXNzYWdlKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9FdmVudExpc3RlbmVyc1NpZGViYXJQYW5lLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0V2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUuanMKaW5kZXggMDQ1ZDI5Yi4uNjc5ODg0
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlzdGVuZXJz
U2lkZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0V2ZW50TGlz
dGVuZXJzU2lkZWJhclBhbmUuanMKQEAgLTQ2LDcgKzQ2LDcgQEAgV2ViSW5zcGVjdG9yLkV2ZW50
TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiAgICAgb3B0aW9uLmxhYmVsID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJTZWxlY3RlZCBOb2RlIE9ubHkiKTsKICAgICB0aGlzLnNldHRp
bmdzU2VsZWN0RWxlbWVudC5hcHBlbmRDaGlsZChvcHRpb24pOwogCi0gICAgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHRoaXMuX3NldHRpbmdzTG9hZGVk
LCB0aGlzKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CiAgICAgdGhpcy5z
ZXR0aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBmdW5jdGlvbihl
dmVudCkgeyBldmVudC5zdG9wUHJvcGFnYXRpb24oKSB9LCBmYWxzZSk7CiAgICAgdGhpcy5zZXR0
aW5nc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fY2hhbmdl
U2V0dGluZy5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKQEAgLTU2LDcgKzU2LDcgQEAgV2ViSW5zcGVj
dG9yLkV2ZW50TGlzdGVuZXJzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiBXZWJJbnNwZWN0b3Iu
RXZlbnRMaXN0ZW5lcnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX3NldHRpbmdzTG9h
ZGVkOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB2YXIgZmlsdGVyID0gV2ViSW5zcGVjdG9y
LnNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyOworICAgICAgICB2YXIgZmlsdGVyID0gV2Vi
SW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXI7CiAgICAg
ICAgIGlmIChmaWx0ZXIgPT09ICJhbGwiKQogICAgICAgICAgICAgdGhpcy5zZXR0aW5nc1NlbGVj
dEVsZW1lbnRbMF0uc2VsZWN0ZWQgPSB0cnVlOwogICAgICAgICBpZiAoZmlsdGVyID09PSAic2Vs
ZWN0ZWQiKQpAQCAtMTEyLDcgKzExMiw3IEBAIFdlYkluc3BlY3Rvci5FdmVudExpc3RlbmVyc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY2hhbmdlU2V0dGluZzogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLnNldHRpbmdzU2Vs
ZWN0RWxlbWVudFt0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4XTsKLSAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gc2VsZWN0
ZWRPcHRpb24udmFsdWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdz
LmV2ZW50TGlzdGVuZXJzRmlsdGVyID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CiAKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLnNlY3Rpb25zLmxlbmd0aDsgKytpKQogICAgICAgICAg
ICAgdGhpcy5zZWN0aW9uc1tpXS51cGRhdGUoKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBXZWJJbnNw
ZWN0b3IuRXZlbnRMaXN0ZW5lcnNTZWN0aW9uLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IC8vIEEgRmlsdGVyZWQgQXJyYXkgc2ltcGxpZmllcyB3aGVuIHRvIGNyZWF0ZSBjb25uZWN0b3Jz
CiAgICAgICAgIHZhciBmaWx0ZXJlZEV2ZW50TGlzdGVuZXJzID0gdGhpcy5ldmVudExpc3RlbmVy
czsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5ldmVudExpc3RlbmVyc0ZpbHRl
ciA9PT0gInNlbGVjdGVkIikgeworICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
U2V0dGluZ3MuZXZlbnRMaXN0ZW5lcnNGaWx0ZXIgPT09ICJzZWxlY3RlZCIpIHsKICAgICAgICAg
ICAgIGZpbHRlcmVkRXZlbnRMaXN0ZW5lcnMgPSBbXTsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5ldmVudExpc3RlbmVycy5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAg
ICAgIHZhciBldmVudExpc3RlbmVyID0gdGhpcy5ldmVudExpc3RlbmVyc1tpXTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcyBi
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbnNwZWN0b3JCYWNrZW5kU3R1Yi5qcwppbmRl
eCBmYTQwMjYxLi45MDc0OTZjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvSW5zcGVjdG9yQmFja2VuZFN0dWIuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0luc3BlY3RvckJhY2tlbmRTdHViLmpzCkBAIC0yNDcsMTAgKzI0NywxNCBAQCBXZWJJbnNw
ZWN0b3IuSW5zcGVjdG9yQmFja2VuZFN0dWIucHJvdG90eXBlID0gewogICAgIHsKICAgICB9LAog
Ci0gICAgc2F2ZUZyb250ZW5kU2V0dGluZ3M6IGZ1bmN0aW9uKCkKKyAgICBzYXZlQXBwbGljYXRp
b25TZXR0aW5nczogZnVuY3Rpb24oKQogICAgIHsKICAgICB9LAogCisgICAgc2F2ZVNlc3Npb25T
ZXR0aW5nczogZnVuY3Rpb24oKQorICAgIHsKKyAgICB9LAorICAgIAogICAgIGRpc3BhdGNoT25J
bmplY3RlZFNjcmlwdDogZnVuY3Rpb24oKQogICAgIHsKICAgICB9LApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9SZXNvdXJjZVZpZXcuanMKaW5kZXggYjhlNGU4MC4uYmZkMTU3NiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVmlldy5qcworKysg
Yi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VWaWV3LmpzCkBAIC0xNDMsNyAr
MTQzLDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3Nl
bGVjdFRhYjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2hlYWRlcnNWaXNp
YmxlKSB7Ci0gICAgICAgICAgICBpZiAoIXRoaXMuaGFzQ29udGVudFRhYigpIHx8IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5yZXNvdXJjZVZpZXdUYWIgPT09ICJoZWFkZXJzIikKKyAgICAgICAgICAg
IGlmICghdGhpcy5oYXNDb250ZW50VGFiKCkgfHwgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0
dGluZ3MucmVzb3VyY2VWaWV3VGFiID09PSAiaGVhZGVycyIpCiAgICAgICAgICAgICAgICAgdGhp
cy5fc2VsZWN0SGVhZGVyc1RhYigpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAg
IHRoaXMuc2VsZWN0Q29udGVudFRhYigpOwpAQCAtMTU0LDE0ICsxNTQsMTQgQEAgV2ViSW5zcGVj
dG9yLlJlc291cmNlVmlldy5wcm90b3R5cGUgPSB7CiAgICAgX3NlbGVjdEhlYWRlcnNUYWI6IGZ1
bmN0aW9uKHVwZGF0ZVByZWZzKQogICAgIHsKICAgICAgICAgaWYgKHVwZGF0ZVByZWZzKQotICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlVmlld1RhYiA9ICJoZWFkZXJz
IjsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnJlc291cmNl
Vmlld1RhYiA9ICJoZWFkZXJzIjsKICAgICAgICAgdGhpcy50YWJiZWRQYW5lLnNlbGVjdFRhYkJ5
SWQoImhlYWRlcnMiKTsKICAgICB9LAogCiAgICAgc2VsZWN0Q29udGVudFRhYjogZnVuY3Rpb24o
dXBkYXRlUHJlZnMpCiAgICAgewogICAgICAgICBpZiAodXBkYXRlUHJlZnMpCi0gICAgICAgICAg
ICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVzb3VyY2VWaWV3VGFiID0gImNvbnRlbnQiOworICAg
ICAgICAgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VWaWV3VGFi
ID0gImNvbnRlbnQiOwogICAgICAgICB0aGlzLl9pbm5lclNlbGVjdENvbnRlbnRUYWIoKTsKICAg
ICB9LAogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2Vz
UGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VzUGFuZWwuanMK
aW5kZXggYjJkZmExNS4uZWY2YWEyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1Jlc291cmNlc1BhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9SZXNvdXJjZXNQYW5lbC5qcwpAQCAtMTUxLDcgKzE1MSw3IEBAIFdlYkluc3BlY3Rvci5SZXNv
dXJjZXNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLmxhcmdlclJlc291
cmNlc0J1dHRvbiA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdHVzQmFyQnV0dG9uKFdlYkluc3BlY3Rv
ci5VSVN0cmluZygiVXNlIHNtYWxsIHJlc291cmNlIHJvd3MuIiksICJyZXNvdXJjZXMtbGFyZ2Vy
LXJlc291cmNlcy1zdGF0dXMtYmFyLWl0ZW0iKTsKIAotICAgICAgICBXZWJJbnNwZWN0b3Iuc2V0
dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQsIHRo
aXMpOworICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5hZGRFdmVudExp
c3RlbmVyKCJsb2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CiAgICAgICAgIHRo
aXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
dG9nZ2xlTGFyZ2VyUmVzb3VyY2VzLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5z
b3J0aW5nU2VsZWN0RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwog
ICAgICAgICB0aGlzLnNvcnRpbmdTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMtYmFy
LWl0ZW0iOwpAQCAtMTYwLDkgKzE2MCw5IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZXNQYW5lbC5w
cm90b3R5cGUgPSB7CiAKICAgICBfc2V0dGluZ3NMb2FkZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0g
ICAgICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3Iu
c2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzOwotICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3MpCi0gICAgICAgICAgICB0aGlzLl9zZXRMYXJnZXJS
ZXNvdXJjZXMoV2ViSW5zcGVjdG9yLnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyk7CisgICAg
ICAgIHRoaXMubGFyZ2VyUmVzb3VyY2VzQnV0dG9uLnRvZ2dsZWQgPSBXZWJJbnNwZWN0b3IuYXBw
bGljYXRpb25TZXR0aW5ncy5yZXNvdXJjZXNMYXJnZVJvd3M7CisgICAgICAgIGlmICghV2ViSW5z
cGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MucmVzb3VyY2VzTGFyZ2VSb3dzKQorICAgICAgICAg
ICAgdGhpcy5fc2V0TGFyZ2VyUmVzb3VyY2VzKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRp
bmdzLnJlc291cmNlc0xhcmdlUm93cyk7CiAgICAgfSwKIAogICAgIGdldCBtYWluUmVzb3VyY2VM
b2FkVGltZSgpCkBAIC02MzcsNyArNjM3LDcgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNlc1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKCF0aGlzLml0ZW1zVHJlZUVsZW1lbnQuX2NoaWxk
cmVuTGlzdE5vZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLnJlc291cmNlc0xhcmdlUm93cyA9ICFXZWJJbnNwZWN0b3Iuc2V0dGluZ3MucmVz
b3VyY2VzTGFyZ2VSb3dzOworICAgICAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5n
cy5yZXNvdXJjZXNMYXJnZVJvd3MgPSAhV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Mu
cmVzb3VyY2VzTGFyZ2VSb3dzOwogICAgICAgICB0aGlzLl9zZXRMYXJnZXJSZXNvdXJjZXModGhp
cy5pdGVtc1RyZWVFbGVtZW50LnNtYWxsQ2hpbGRyZW4pOwogICAgIH0sCiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IGFjNjdhYmEuLjQ1MDRkNTcg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcwpAQCAtNjM5
LDcgKzYzOSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHZhciB1cmwgPSBzY3JpcHRPclJlc291cmNlLnVybCB8fCBzY3JpcHRPclJlc291cmNl
LnNvdXJjZVVSTDsKICAgICAgICAgaWYgKHVybCAmJiAhb3B0aW9ucy5pbml0aWFsTG9hZCkKLSAg
ICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZSA9IHVy
bDsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmxhc3RWaWV3
ZWRTY3JpcHRGaWxlID0gdXJsOwogCiAgICAgICAgIGlmICghb3B0aW9ucy5mcm9tQmFja0Zvcndh
cmRBY3Rpb24pIHsKICAgICAgICAgICAgIHZhciBvbGRJbmRleCA9IHRoaXMuX2N1cnJlbnRCYWNr
Rm9yd2FyZEluZGV4OwpAQCAtNzQwLDcgKzc0MCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8vIGlmIG5vdCBm
aXJzdCBpdGVtLCBjaGVjayB0byBzZWUgaWYgdGhpcyB3YXMgdGhlIGxhc3Qgdmlld2VkCiAgICAg
ICAgICAgICB2YXIgdXJsID0gb3B0aW9uLnJlcHJlc2VudGVkT2JqZWN0LnVybCB8fCBvcHRpb24u
cmVwcmVzZW50ZWRPYmplY3Quc291cmNlVVJMOwotICAgICAgICAgICAgdmFyIGxhc3RVUkwgPSBX
ZWJJbnNwZWN0b3Iuc2V0dGluZ3MubGFzdFZpZXdlZFNjcmlwdEZpbGU7CisgICAgICAgICAgICB2
YXIgbGFzdFVSTCA9IFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmxhc3RWaWV3ZWRT
Y3JpcHRGaWxlOwogICAgICAgICAgICAgaWYgKHVybCAmJiB1cmwgPT09IGxhc3RVUkwpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fc2hvd1NjcmlwdE9yUmVzb3VyY2Uob3B0aW9uLnJlcHJlc2VudGVk
T2JqZWN0LCB7aW5pdGlhbExvYWQ6IHRydWV9KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NldHRpbmdzLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NldHRpbmdzLmpzCmluZGV4IDk3YmUxNjMuLmM3ZmM1YTkgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TZXR0aW5ncy5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvU2V0dGluZ3MuanMKQEAgLTQ1LDE2ICs0NSwzOSBAQCB2YXIgUHJl
ZmVyZW5jZXMgPSB7CiAgICAgYXVkaXRzUGFuZWxFbmFibGVkOiB0cnVlCiB9CiAKLVdlYkluc3Bl
Y3Rvci5wb3B1bGF0ZUZyb250ZW5kU2V0dGluZ3MgPSBmdW5jdGlvbihzZXR0aW5nc1N0cmluZykK
K1dlYkluc3BlY3Rvci5wb3B1bGF0ZUFwcGxpY2F0aW9uU2V0dGluZ3MgPSBmdW5jdGlvbihzZXR0
aW5nc1N0cmluZykKIHsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuX2xvYWQoc2V0dGluZ3NT
dHJpbmcpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLl9sb2FkKHNldHRp
bmdzU3RyaW5nKTsKKyAgICBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFs
bFNldHRpbmcoImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImV2ZW50LWxpc3RlbmVycy1maWx0ZXIi
LCAiYWxsIik7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxT
ZXR0aW5nKCJjb2xvckZvcm1hdCIsICJjb2xvci1mb3JtYXQiLCAiaGV4Iik7CisgICAgV2ViSW5z
cGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJyZXNvdXJjZXNMYXJn
ZVJvd3MiLCAicmVzb3VyY2VzLWxhcmdlLXJvd3MiLCB0cnVlKTsKKyAgICBXZWJJbnNwZWN0b3Iu
YXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoIndhdGNoRXhwcmVzc2lvbnMiLCAi
d2F0Y2gtZXhwcmVzc2lvbnMiLCBbXSk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0
dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0RmlsZSIsICJsYXN0LXZpZXdl
ZC1zY3JpcHQtZmlsZSIpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLl9p
bnN0YWxsU2V0dGluZygic2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwgInNo
b3ctaW5oZXJpdGVkLWNvbXB1dGVkLXN0eWxlLXByb3BlcnRpZXMiLCBmYWxzZSk7CisgICAgV2Vi
SW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJzaG93VXNlckFn
ZW50U3R5bGVzIiwgInNob3ctdXNlci1hZ2VudC1zdHlsZXMiLCB0cnVlKTsKKyAgICBXZWJJbnNw
ZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5faW5zdGFsbFNldHRpbmcoInJlc291cmNlVmlld1Rh
YiIsICJyZXNvdXJjZS12aWV3LXRhYiIsICJjb250ZW50Iik7CisgICAgV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3MuX2luc3RhbGxTZXR0aW5nKCJjb25zb2xlSGlzdG9yeSIsICJjb25z
b2xlLWhpc3RvcnkiLCBbXSk7CisgICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Mu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsKIH0KIAotV2ViSW5zcGVjdG9yLlNl
dHRpbmdzID0gZnVuY3Rpb24oKQorV2ViSW5zcGVjdG9yLnBvcHVsYXRlU2Vzc2lvblNldHRpbmdz
ID0gZnVuY3Rpb24oc2V0dGluZ3NTdHJpbmcpCiB7CisgICAgV2ViSW5zcGVjdG9yLnNlc3Npb25T
ZXR0aW5ncy5fbG9hZChzZXR0aW5nc1N0cmluZyk7CisgICAgV2ViSW5zcGVjdG9yLnNlc3Npb25T
ZXR0aW5ncy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoImxvYWRlZCIpOworfQorCitXZWJJbnNw
ZWN0b3IuU2V0dGluZ3MgPSBmdW5jdGlvbihzZXNzaW9uU2NvcGUpCit7CisgICAgdGhpcy5fc2Vz
c2lvblNjb3BlID0gc2Vzc2lvblNjb3BlOwogfQogCiBXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJv
dG90eXBlID0geworICAgIHJlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9z
dG9yZSA9IHt9OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibG9hZGVk
Iik7CisgICAgfSwKKwogICAgIF9sb2FkOiBmdW5jdGlvbihzZXR0aW5nc1N0cmluZykKICAgICB7
CiAgICAgICAgIHRyeSB7CkBAIC02MywxNyArODYsNiBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3Mu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgLy8gTWF5IGZhaWw7CiAgICAgICAgICAgICB0aGlz
Ll9zdG9yZSA9IHt9OwogICAgICAgICB9Ci0KLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmco
ImV2ZW50TGlzdGVuZXJzRmlsdGVyIiwgImV2ZW50LWxpc3RlbmVycy1maWx0ZXIiLCAiYWxsIik7
Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJjb2xvckZvcm1hdCIsICJjb2xvci1mb3Jt
YXQiLCAiaGV4Iik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJyZXNvdXJjZXNMYXJn
ZVJvd3MiLCAicmVzb3VyY2VzLWxhcmdlLXJvd3MiLCB0cnVlKTsKLSAgICAgICAgdGhpcy5faW5z
dGFsbFNldHRpbmcoIndhdGNoRXhwcmVzc2lvbnMiLCAid2F0Y2gtZXhwcmVzc2lvbnMiLCBbXSk7
Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0aW5nKCJsYXN0Vmlld2VkU2NyaXB0RmlsZSIsICJs
YXN0LXZpZXdlZC1zY3JpcHQtZmlsZSIpOwotICAgICAgICB0aGlzLl9pbnN0YWxsU2V0dGluZygi
c2hvd0luaGVyaXRlZENvbXB1dGVkU3R5bGVQcm9wZXJ0aWVzIiwgInNob3ctaW5oZXJpdGVkLWNv
bXB1dGVkLXN0eWxlLXByb3BlcnRpZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxT
ZXR0aW5nKCJzaG93VXNlckFnZW50U3R5bGVzIiwgInNob3ctdXNlci1hZ2VudC1zdHlsZXMiLCB0
cnVlKTsKLSAgICAgICAgdGhpcy5faW5zdGFsbFNldHRpbmcoInJlc291cmNlVmlld1RhYiIsICJy
ZXNvdXJjZS12aWV3LXRhYiIsICJjb250ZW50Iik7Ci0gICAgICAgIHRoaXMuX2luc3RhbGxTZXR0
aW5nKCJjb25zb2xlSGlzdG9yeSIsICJjb25zb2xlLWhpc3RvcnkiLCBbXSk7Ci0gICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKCJsb2FkZWQiKTsKICAgICB9LAogCiAgICAgX2lu
c3RhbGxTZXR0aW5nOiBmdW5jdGlvbihuYW1lLCBwcm9wZXJ0eU5hbWUsIGRlZmF1bHRWYWx1ZSkK
QEAgLTk0LDcgKzEwNiwxMSBAQCBXZWJJbnNwZWN0b3IuU2V0dGluZ3MucHJvdG90eXBlID0gewog
ICAgIHsKICAgICAgICAgdGhpcy5fc3RvcmVbcHJvcGVydHlOYW1lXSA9IG5ld1ZhbHVlOwogICAg
ICAgICB0cnkgewotICAgICAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5zYXZlRnJvbnRlbmRTZXR0
aW5ncyhKU09OLnN0cmluZ2lmeSh0aGlzLl9zdG9yZSkpOworICAgICAgICAgICAgdmFyIHN0b3Jl
ID0gSlNPTi5zdHJpbmdpZnkodGhpcy5fc3RvcmUpOworICAgICAgICAgICAgaWYgKHRoaXMuX3Nl
c3Npb25TY29wZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLnNhdmVTZXNzaW9u
U2V0dGluZ3Moc3RvcmUpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvckJhY2tlbmQuc2F2ZUFwcGxpY2F0aW9uU2V0dGluZ3Moc3RvcmUpOwogICAgICAgICB9IGNh
dGNoIChlKSB7CiAgICAgICAgICAgICAvLyBNYXkgZmFpbDsKICAgICAgICAgfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IDAxMTYy
M2YuLjE4YjdmMGYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHls
ZXNTaWRlYmFyUGFuZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKQEAgLTYwLDcgKzYwLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGVi
YXJQYW5lID0gZnVuY3Rpb24oY29tcHV0ZWRTdHlsZVBhbmUpCiAKICAgICB0aGlzLnNldHRpbmdz
U2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKGV2ZW50KSB7
IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpIH0sIGZhbHNlKTsKICAgICB0aGlzLnNldHRpbmdzU2Vs
ZWN0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9jaGFuZ2VTZXR0aW5n
LmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuYWRkRXZlbnRM
aXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGluZ3NMb2FkZWQsIHRoaXMpOworICAgIFdlYklu
c3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHRo
aXMuX3NldHRpbmdzTG9hZGVkLCB0aGlzKTsKIAogICAgIHRoaXMudGl0bGVFbGVtZW50LmFwcGVu
ZENoaWxkKHRoaXMuc2V0dGluZ3NTZWxlY3RFbGVtZW50KTsKICAgICB0aGlzLl9jb21wdXRlZFN0
eWxlUGFuZSA9IGNvbXB1dGVkU3R5bGVQYW5lOwpAQCAtOTYsNyArOTYsNyBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROYW1lcyA9IFsKIFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgX3NldHRpbmdzTG9hZGVkOiBmdW5jdGlv
bigpCiAgICAgewotICAgICAgICB2YXIgZm9ybWF0ID0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNv
bG9yRm9ybWF0OworICAgICAgICB2YXIgZm9ybWF0ID0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9u
U2V0dGluZ3MuY29sb3JGb3JtYXQ7CiAgICAgICAgIGlmIChmb3JtYXQgPT09ICJoZXgiKQogICAg
ICAgICAgICAgdGhpcy5zZXR0aW5nc1NlbGVjdEVsZW1lbnRbMF0uc2VsZWN0ZWQgPSB0cnVlOwog
ICAgICAgICBpZiAoZm9ybWF0ID09PSAicmdiIikKQEAgLTE0OCw3ICsxNDgsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICBpZiAocmVmcmVz
aCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5nZXRDb21wdXRlZFN0eWxlQXN5
bmMobm9kZS5pZCwgY29tcHV0ZWRTdHlsZUNhbGxiYWNrLmJpbmQodGhpcykpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuZ2V0U3R5bGVzQXN5bmMobm9k
ZS5pZCwgIVdlYkluc3BlY3Rvci5zZXR0aW5ncy5zaG93VXNlckFnZW50U3R5bGVzLCBzdHlsZXND
YWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5jc3NNb2RlbC5n
ZXRTdHlsZXNBc3luYyhub2RlLmlkLCAhV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Mu
c2hvd1VzZXJBZ2VudFN0eWxlcywgc3R5bGVzQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfSwK
IAogICAgIF9yZWZyZXNoVXBkYXRlOiBmdW5jdGlvbihub2RlLCBjb21wdXRlZFN0eWxlLCBlZGl0
ZWRTZWN0aW9uKQpAQCAtNDgyLDcgKzQ4Miw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFy
UGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFNlbGVjdCB0aGUgY29ycmVjdCBjb2xvciBm
b3JtYXQgc2V0dGluZyBhZ2Fpbiwgc2luY2UgaXQgbmVlZHMgdG8gYmUgc2VsZWN0ZWQuCiAgICAg
ICAgIHZhciBzZWxlY3RlZEluZGV4ID0gMDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBv
cHRpb25zLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9
PT0gV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0KSB7CisgICAgICAgICAgICBpZiAo
b3B0aW9uc1tpXS52YWx1ZSA9PT0gV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3MuY29s
b3JGb3JtYXQpIHsKICAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KQEAgLTQ5NCw3ICs0OTQsNyBAQCBXZWJJbnNw
ZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgIF9jaGFuZ2VDb2xvckZv
cm1hdDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24g
PSB0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudFt0aGlzLnNldHRpbmdzU2VsZWN0RWxlbWVudC5z
ZWxlY3RlZEluZGV4XTsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmNvbG9yRm9ybWF0
ID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlv
blNldHRpbmdzLmNvbG9yRm9ybWF0ID0gc2VsZWN0ZWRPcHRpb24udmFsdWU7CiAKICAgICAgICAg
Zm9yICh2YXIgcHNldWRvSWQgaW4gdGhpcy5zZWN0aW9ucykgewogICAgICAgICAgICAgdmFyIHNl
Y3Rpb25zID0gdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF07CkBAIC01ODEsMTggKzU4MSwxOCBAQCBX
ZWJJbnNwZWN0b3IuQ29tcHV0ZWRTdHlsZVNpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogCiAgICAg
ZnVuY3Rpb24gc2V0dGluZ3NMb2FkZWQoKQogICAgIHsKLSAgICAgICAgaWYgKFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0ZWRTdHlsZVByb3BlcnRpZXMpIHsKKyAgICAg
ICAgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21w
dXRlZFN0eWxlUHJvcGVydGllcykgewogICAgICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5hZGRT
dHlsZUNsYXNzKCJzaG93LWluaGVyaXRlZCIpOwogICAgICAgICAgICAgc2hvd0luaGVyaXRlZENo
ZWNrYm94LmNoZWNrZWQgPSB0cnVlOwogICAgICAgICB9CiAgICAgfQogCi0gICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmFkZEV2ZW50TGlzdGVuZXIoImxvYWRlZCIsIHNldHRpbmdzTG9hZGVkLmJp
bmQodGhpcykpOworICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmFkZEV2ZW50
TGlzdGVuZXIoImxvYWRlZCIsIHNldHRpbmdzTG9hZGVkLmJpbmQodGhpcykpOwogCiAgICAgZnVu
Y3Rpb24gc2hvd0luaGVyaXRlZFRvZ2dsZUZ1bmN0aW9uKGV2ZW50KQogICAgIHsKLSAgICAgICAg
V2ViSW5zcGVjdG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGll
cyA9IHNob3dJbmhlcml0ZWRDaGVja2JveC5jaGVja2VkOwotICAgICAgICBpZiAoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnNob3dJbmhlcml0ZWRDb21wdXRlZFN0eWxlUHJvcGVydGllcykKKyAgICAg
ICAgV2ViSW5zcGVjdG9yLmFwcGxpY2F0aW9uU2V0dGluZ3Muc2hvd0luaGVyaXRlZENvbXB1dGVk
U3R5bGVQcm9wZXJ0aWVzID0gc2hvd0luaGVyaXRlZENoZWNrYm94LmNoZWNrZWQ7CisgICAgICAg
IGlmIChXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy5zaG93SW5oZXJpdGVkQ29tcHV0
ZWRTdHlsZVByb3BlcnRpZXMpCiAgICAgICAgICAgICB0aGlzLmJvZHlFbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInNob3ctaW5oZXJpdGVkIik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMu
Ym9keUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic2hvdy1pbmhlcml0ZWQiKTsKQEAgLTExMjIs
OSArMTEyMiw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90
eXBlID0gewogICAgICAgICAgICAgICAgIHZhciBmb3JtYXQ7CiAgICAgICAgICAgICAgICAgaWYg
KFByZWZlcmVuY2VzLnNob3dDb2xvck5pY2tuYW1lcyAmJiBjb2xvci5uaWNrbmFtZSkKICAgICAg
ICAgICAgICAgICAgICAgZm9ybWF0ID0gIm5pY2tuYW1lIjsKLSAgICAgICAgICAgICAgICBlbHNl
IGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQgPT09ICJyZ2IiKQorICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbG9y
Rm9ybWF0ID09PSAicmdiIikKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNp
bXBsZSA/ICJyZ2IiIDogInJnYmEiKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChXZWJJbnNw
ZWN0b3Iuc2V0dGluZ3MuY29sb3JGb3JtYXQgPT09ICJoc2wiKQorICAgICAgICAgICAgICAgIGVs
c2UgaWYgKFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLmNvbG9yRm9ybWF0ID09PSAi
aHNsIikKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ID0gKGNvbG9yLnNpbXBsZSA/ICJoc2wi
IDogImhzbGEiKTsKICAgICAgICAgICAgICAgICBlbHNlIGlmIChjb2xvci5zaW1wbGUpCiAgICAg
ICAgICAgICAgICAgICAgIGZvcm1hdCA9IChjb2xvci5oYXNTaG9ydEhleCgpID8gInNob3J0aGV4
IiA6ICJoZXgiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRj
aEV4cHJlc3Npb25zU2lkZWJhclBhbmUuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
V2F0Y2hFeHByZXNzaW9uc1NpZGViYXJQYW5lLmpzCmluZGV4IDM2NTVkNjguLmI1MzBhYjYgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9XYXRjaEV4cHJlc3Npb25zU2lk
ZWJhclBhbmUuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dhdGNoRXhwcmVz
c2lvbnNTaWRlYmFyUGFuZS5qcwpAQCAtMzEsNyArMzEsNyBAQAogV2ViSW5zcGVjdG9yLldhdGNo
RXhwcmVzc2lvbnNTaWRlYmFyUGFuZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBXZWJJbnNwZWN0b3Iu
U2lkZWJhclBhbmUuY2FsbCh0aGlzLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIldhdGNoIEV4cHJl
c3Npb25zIikpOwotICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5hZGRFdmVudExpc3RlbmVyKCJs
b2FkZWQiLCB0aGlzLl9zZXR0aW5nc0xvYWRlZCwgdGhpcyk7CisgICAgV2ViSW5zcGVjdG9yLmFw
cGxpY2F0aW9uU2V0dGluZ3MuYWRkRXZlbnRMaXN0ZW5lcigibG9hZGVkIiwgdGhpcy5fc2V0dGlu
Z3NMb2FkZWQsIHRoaXMpOwogfQogCiBXZWJJbnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NpZGVi
YXJQYW5lLnByb3RvdHlwZSA9IHsKQEAgLTM5LDcgKzM5LDcgQEAgV2ViSW5zcGVjdG9yLldhdGNo
RXhwcmVzc2lvbnNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlz
LmJvZHlFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAgICAgICAgdGhpcy5leHBhbmRlZCA9
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zLmxlbmd0aCA+IDA7CisgICAg
ICAgIHRoaXMuZXhwYW5kZWQgPSBXZWJJbnNwZWN0b3IuYXBwbGljYXRpb25TZXR0aW5ncy53YXRj
aEV4cHJlc3Npb25zLmxlbmd0aCA+IDA7CiAgICAgICAgIHRoaXMuc2VjdGlvbiA9IG5ldyBXZWJJ
bnNwZWN0b3IuV2F0Y2hFeHByZXNzaW9uc1NlY3Rpb24oKTsKICAgICAgICAgdGhpcy5ib2R5RWxl
bWVudC5hcHBlbmRDaGlsZCh0aGlzLnNlY3Rpb24uZWxlbWVudCk7CiAKQEAgLTc3LDcgKzc3LDcg
QEAgV2ViSW5zcGVjdG9yLldhdGNoRXhwcmVzc2lvbnNTZWN0aW9uID0gZnVuY3Rpb24oKQogCiAg
ICAgV2ViSW5zcGVjdG9yLk9iamVjdFByb3BlcnRpZXNTZWN0aW9uLmNhbGwodGhpcyk7CiAKLSAg
ICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Mud2F0Y2hFeHBy
ZXNzaW9uczsKKyAgICB0aGlzLndhdGNoRXhwcmVzc2lvbnMgPSBXZWJJbnNwZWN0b3IuYXBwbGlj
YXRpb25TZXR0aW5ncy53YXRjaEV4cHJlc3Npb25zOwogCiAgICAgdGhpcy5oZWFkZXJFbGVtZW50
LmNsYXNzTmFtZSA9ICJoaWRkZW4iOwogICAgIHRoaXMuZWRpdGFibGUgPSB0cnVlOwpAQCAtMTk1
LDcgKzE5NSw3IEBAIFdlYkluc3BlY3Rvci5XYXRjaEV4cHJlc3Npb25zU2VjdGlvbi5wcm90b3R5
cGUgPSB7CiAgICAgICAgICAgICBpZiAodGhpcy53YXRjaEV4cHJlc3Npb25zW2ldKQogICAgICAg
ICAgICAgICAgIHRvU2F2ZS5wdXNoKHRoaXMud2F0Y2hFeHByZXNzaW9uc1tpXSk7CiAKLSAgICAg
ICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnMgPSB0b1NhdmU7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5hcHBsaWNhdGlvblNldHRpbmdzLndhdGNoRXhwcmVzc2lvbnMgPSB0
b1NhdmU7CiAgICAgICAgIHJldHVybiB0b1NhdmUubGVuZ3RoOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IDhhNzhjZDIuLjI1ZWE4NWIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDQwLDcgKzQ0MCw4
IEBAIFdlYkluc3BlY3Rvci5sb2FkZWQgPSBmdW5jdGlvbigpCiAgICAgdmFyIHBvcnQgPSBXZWJJ
bnNwZWN0b3IucG9ydDsKICAgICBkb2N1bWVudC5ib2R5LmFkZFN0eWxlQ2xhc3MoInBvcnQtIiAr
IHBvcnQpOwogCi0gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0b3IuU2V0dGluZ3Mo
KTsKKyAgICB0aGlzLmFwcGxpY2F0aW9uU2V0dGluZ3MgPSBuZXcgV2ViSW5zcGVjdG9yLlNldHRp
bmdzKGZhbHNlKTsKKyAgICB0aGlzLnNlc3Npb25TZXR0aW5ncyA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2V0dGluZ3ModHJ1ZSk7CiAgICAgdGhpcy5fcmVnaXN0ZXJTaG9ydGN1dHMoKTsKIAogICAgIC8v
IHNldCBvcmRlciBvZiBzb21lIHNlY3Rpb25zIGV4cGxpY2l0bHkKQEAgLTEzNjEsNiArMTM2Miw3
IEBAIFdlYkluc3BlY3Rvci5yZXNldCA9IGZ1bmN0aW9uKCkKICAgICAgICAgICAgIHBhbmVsLnJl
c2V0KCk7CiAgICAgfQogCisgICAgdGhpcy5zZXNzaW9uU2V0dGluZ3MucmVzZXQoKTsKICAgICB0
aGlzLmJyZWFrcG9pbnRNYW5hZ2VyLnJlc2V0KCk7CiAKICAgICBmb3IgKHZhciBjYXRlZ29yeSBp
biB0aGlzLnJlc291cmNlQ2F0ZWdvcmllcykKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDMwODhlOTAuLmQzM2Ri
NGMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDEwLTA2LTExICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogRW5hYmxlIHNlcmlhbGl6YXRp
b24vZGVzZXJpYWxpemF0aW9uIG9mIHRoZSBmcm9udGVuZCBzdGF0ZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAyMjgKKworICAgICAgICAqIHNyYy9q
cy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qczoKKyAgICAgICAgKGRldnRvb2xzLkluc3BlY3Rv
ckJhY2tlbmRJbXBsKToKKwogMjAxMC0wNi0xMCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0b3JDb250cm9sbGVySW1wbC5qcyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvanMvSW5zcGVjdG9yQ29udHJvbGxlckltcGwuanMKaW5kZXggNWFi
MzkxNC4uMDRjNzdmZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9qcy9JbnNwZWN0
b3JDb250cm9sbGVySW1wbC5qcworKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL2pzL0luc3BlY3Rv
ckNvbnRyb2xsZXJJbXBsLmpzCkBAIC02Nyw3ICs2Nyw4IEBAIGRldnRvb2xzLkluc3BlY3RvckJh
Y2tlbmRJbXBsID0gZnVuY3Rpb24oKQogICAgIHRoaXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xs
ZXJEZWxlZ2F0ZV8oInJlbW92ZUF0dHJpYnV0ZSIpOwogICAgIHRoaXMuaW5zdGFsbEluc3BlY3Rv
ckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInJlbW92ZURPTVN0b3JhZ2VJdGVtIik7CiAgICAgdGhpcy5p
bnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygicmVtb3ZlTm9kZSIpOwotICAgIHRo
aXMuaW5zdGFsbEluc3BlY3RvckNvbnRyb2xsZXJEZWxlZ2F0ZV8oInNhdmVGcm9udGVuZFNldHRp
bmdzIik7CisgICAgdGhpcy5pbnN0YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2F2
ZUFwcGxpY2F0aW9uU2V0dGluZ3MiKTsKKyAgICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9s
bGVyRGVsZWdhdGVfKCJzYXZlU2Vzc2lvblNldHRpbmdzIik7CiAgICAgdGhpcy5pbnN0YWxsSW5z
cGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0QXR0cmlidXRlIik7CiAgICAgdGhpcy5pbnN0
YWxsSW5zcGVjdG9yQ29udHJvbGxlckRlbGVnYXRlXygic2V0RE9NU3RvcmFnZUl0ZW0iKTsKICAg
ICB0aGlzLmluc3RhbGxJbnNwZWN0b3JDb250cm9sbGVyRGVsZWdhdGVfKCJzZXRJbmplY3RlZFNj
cmlwdFNvdXJjZSIpOwo=
</data>
<flag name="review"
          id="44192"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>