<?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>46367</bug_id>
          
          <creation_ts>2010-09-23 10:08:52 -0700</creation_ts>
          <short_desc>CSSParser: Enable rule selector source range extraction</short_desc>
          <delta_ts>2010-10-06 08:46:00 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>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>
          
          <blocked>45825</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>annevk</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>mitz</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>sam</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>283727</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-23 10:08:52 -0700</bug_when>
    <thetext>CSSStyleRule::setSelectorText() is currently not implemented but is beneficial at least for changing rule selectors via the Web Inspector.
Selector source range extraction is needed for the text-based CSS editing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283745</commentid>
    <comment_count>1</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-23 10:29:25 -0700</bug_when>
    <thetext>One thing I am unsure about is the ExceptionCodes I should return from setSelectorText for when there is no document associated with the CSSStyleRule being processed (which CSSParser needs to parse the selector) and there is an error parsing the selector. None of the w3c documents seem to cover this issue.

I have chosen the semantically similar WRONG_DOCUMENT_ERR and SYNTAX_ERR, but there may be another opinion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283748</commentid>
    <comment_count>2</comment_count>
      <attachid>68541</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-23 10:31:41 -0700</bug_when>
    <thetext>Created attachment 68541
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>283752</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-09-23 10:33:39 -0700</bug_when>
    <thetext>Attachment 68541 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/css/CSSParser.cpp:5750:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 6 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>283760</commentid>
    <comment_count>4</comment_count>
      <attachid>68544</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-23 10:37:22 -0700</bug_when>
    <thetext>Created attachment 68544
[PATCH] Style fixed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284255</commentid>
    <comment_count>5</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2010-09-23 23:33:43 -0700</bug_when>
    <thetext>Actually, per http://dev.w3.org/csswg/cssom/ you should not throw a SYNTAX_ERR (just ignore it). I&apos;m not sure how you can get a CSSStyleRule separately from a style sheet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284292</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-24 01:16:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Actually, per http://dev.w3.org/csswg/cssom/ you should not throw a SYNTAX_ERR (just ignore it). I&apos;m not sure how you can get a CSSStyleRule separately from a style sheet.

You are correct. It&apos;s just I didn&apos;t connect this fact with the usage of CSSStyleRule::setSelectorText in JSCSSStyleRule.cpp. Anyway, if I implement it to always return &quot;no error&quot;, it will be hard to tell if the operation has succeeded (e.g. due to a wrong selector list syntax).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284297</commentid>
    <comment_count>7</comment_count>
      <attachid>68661</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-24 01:56:46 -0700</bug_when>
    <thetext>Created attachment 68661
[PATCH] Do not return an ExceptionCode in the event of an error in setSelectorText()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284298</commentid>
    <comment_count>8</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-24 02:10:14 -0700</bug_when>
    <thetext>Error handling fixed, I&apos;ve got another question: is
doc-&gt;styleSelectorChanged(RecalcStyleImmediately);
the right way to notify the document of the rule selector change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284306</commentid>
    <comment_count>9</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2010-09-24 03:01:51 -0700</bug_when>
    <thetext>You can tell if setting succeeded by comparing the new string with the old string. A lot of web platform APIs taking strings work this way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284310</commentid>
    <comment_count>10</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-24 03:26:36 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; You can tell if setting succeeded by comparing the new string with the old string. A lot of web platform APIs taking strings work this way.

That&apos;s right - I didn&apos;t mean to say it was impossible (I said &quot;hard&quot; :)). But since I&apos;m working directly with the CSSStyleRule native instance, I&apos;d like to have a simple means of detecting the operation success/failure. I believe the API was dictated by the IDL and not intended to be interacted with from the native code.

On a related note, you must know that the selectorText setter previously used to raise DOMException, as per http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSStyleRule, not unreasonably, I should say :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284311</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-24 03:31:59 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; You can tell if setting succeeded by comparing the new string with the old string. A lot of web platform APIs taking strings work this way.

Ah, one more note. This approach will likely fail when setting the same selector (an idempotent operation), since the serialized selector list is canonicalized in the sense that extraneous whitespace is removed. Thus, &quot;div span&quot; (one space) and &quot;div   span&quot; (two spaces) correspond to the same selector, but cssRule.selectorText will return &quot;div span&quot; in both cases making one think that the operation has failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>284535</commentid>
    <comment_count>12</comment_count>
      <attachid>68661</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-09-24 10:52:24 -0700</bug_when>
    <thetext>Comment on attachment 68661
[PATCH] Do not return an ExceptionCode in the event of an error in setSelectorText()

This should be broken into two at least two patches, one for the implementation of setSelectorText with tests, and one for the rest of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>285494</commentid>
    <comment_count>13</comment_count>
      <attachid>68918</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-27 09:19:04 -0700</bug_when>
    <thetext>Created attachment 68918
[PATCH] Only source offsets extraction for rule selectors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>286124</commentid>
    <comment_count>14</comment_count>
      <attachid>69031</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-09-28 01:29:27 -0700</bug_when>
    <thetext>Created attachment 69031
[PATCH] Fix selector list end detection</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289651</commentid>
    <comment_count>15</comment_count>
      <attachid>69794</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-05 09:07:43 -0700</bug_when>
    <thetext>Created attachment 69794
[PATCH] Rebase + small API change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289652</commentid>
    <comment_count>16</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-05 09:17:13 -0700</bug_when>
    <thetext>Attachment 69794 did not build on qt:
Build output: http://queues.webkit.org/results/4245052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289655</commentid>
    <comment_count>17</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-05 09:27:04 -0700</bug_when>
    <thetext>Attachment 69794 did not build on mac:
Build output: http://queues.webkit.org/results/4150081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289705</commentid>
    <comment_count>18</comment_count>
      <attachid>69804</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-05 10:14:25 -0700</bug_when>
    <thetext>Created attachment 69804
[PATCH] Rebase for compilability</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289710</commentid>
    <comment_count>19</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2010-10-05 10:17:27 -0700</bug_when>
    <thetext>What is the UI for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289733</commentid>
    <comment_count>20</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-05 10:37:21 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; What is the UI for this?

There are no changes to the UI. The ultimate goal is to add support for style properties not supported by WebKit (moz- and such) without changing the style editing UI. We will also get persistence for local modifications and such. We are fairly close to switching to it!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290236</commentid>
    <comment_count>21</comment_count>
      <attachid>69804</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2010-10-06 05:42:16 -0700</bug_when>
    <thetext>Comment on attachment 69804
[PATCH] Rebase for compilability

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

Overall looks good. Few nits from me and we are ready to land.

&gt; WebCore/css/CSSParser.cpp:-152
&gt; -    , m_currentStyleData(0)

Do not remove this line. You could access style data via rule data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290285</commentid>
    <comment_count>22</comment_count>
      <attachid>69938</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-06 07:31:49 -0700</bug_when>
    <thetext>Created attachment 69938
[PATCH] Comment addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290326</commentid>
    <comment_count>23</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2010-10-06 08:46:00 -0700</bug_when>
    <thetext>Committed: http://trac.webkit.org/changeset/69196</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68541</attachid>
            <date>2010-09-23 10:31:41 -0700</date>
            <delta_ts>2010-09-23 10:37:22 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>12373</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzFjZmZiNi4uODk2N2Q3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wOS0yMyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBDU1NTdHlsZVJ1
bGU6OnNldFNlbGVjdG9yVGV4dCgpIGFuZCBlbmFibGUgc2VsZWN0b3IgZGF0YSBleHRyYWN0aW9u
IGZyb20gQ1NTIHNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYzNjcKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6Om1hcmtSdWxlQm9keUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
Om1hcmtQcm9wZXJ0eVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1By
b3BlcnR5RW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJlc2V0U2VsZWN0b3JMaXN0TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXNldFJ1bGVCb2R5TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpyZXNldFByb3BlcnR5TWFya3MpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuY3BwOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVs
ZTo6c2V0U2VsZWN0b3JUZXh0KToKKwogMjAxMC0wOS0yMiAgTHVrZSBNYWNwaGVyc29uICA8bWFj
cGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEzOWEyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC00
MDgsNyArNDA4LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFsaWRfcnVsZToKLSAgICBydWxlc2V0
CisgICAgYmVmb3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAgICAgICQkID0gJDI7CisgICAgfQog
ICB8IG1lZGlhCiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpAQCAtOTEwLDggKzkxMiwyMiBAQCBt
YXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAgfQogICA7CiAKK2JlZm9yZV9ydWxl
c2V0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWFya1NlbGVjdG9yTGlzdFN0YXJ0
KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5pbmdfYnJhY2U6CisgICAgLyogZW1w
dHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0RW5kKCk7CisgICAgfQorICA7CisK
IHJ1bGVzZXQ6Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgc2VsZWN0b3JfbGlz
dCBiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFy
YXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2Vy
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5j
cmVhdGVTdHlsZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDg2YmNkMGQuLmFkN2E0
ZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTQ2LDEwICsxNDYsOSBAQCBDU1NQYXJzZXI6OkNTU1BhcnNl
cihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxz
ZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1f
ZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1fcnVsZUJvZHlTdGFydE9mZnNldCgw
KQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAgICwgbV9wcm9wZXJ0eVN0YXJ0T2Zm
c2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9mZnNldChVSU5UX01BWCkKKyAgICAs
IG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1fcnVsZUJvZHlSYW5nZSgwLCAwKQor
ICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkKICAgICAsIG1fcnVsZVJh
bmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRTdHlsZURhdGEoMCkKICAgICAsIG1fZGF0YSgwKQpA
QCAtNTQ4MCwxMSArNTQ3OSwxMyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQogICAgICAgICBtX3BhcnNlZFN0eWxl
T2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VN
YXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdHlsZURhdGEpOwotICAgICAgICAg
ICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlSYW5nZSA9IFNvdXJjZVJhbmdlKG1fcnVs
ZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9mZnNldCk7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdHlsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0gbV9zZWxlY3Rvckxpc3RSYW5nZTsK
KyAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5bGVCb2R5UmFuZ2UgPSBtX3J1bGVC
b2R5UmFuZ2U7CiAgICAgICAgICAgICBtX3J1bGVSYW5nZU1hcC0+c2V0KHJlc3VsdCwgbV9jdXJy
ZW50U3R5bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJl
c2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1bGVCb2R5TWFya3MoKTsKICAgICBj
bGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTczMywyNiArNTczNCw1
NCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCkK
ICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVj
dG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0ID0geXl0ZXh0
IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlzdEVuZCgpCit7
CisgICAgaWYgKCFtX2N1cnJlbnRTdHlsZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBVQ2hh
ciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSAo
bGlzdEVuZCA+IG1fZGF0YSArIDEgJiYgIWRvbmUpIHsKKyAgICAgICAgc3dpdGNoICgqKGxpc3RF
bmQgLSAxKSkgeworICAgICAgICAgICAgY2FzZSAnICc6CisgICAgICAgICAgICBjYXNlICdcbic6
CisgICAgICAgICAgICBjYXNlICdccic6CisgICAgICAgICAgICBjYXNlICdcdCc6CisgICAgICAg
ICAgICBjYXNlICdcdic6CisgICAgICAgICAgICBjYXNlICdcZic6CisgICAgICAgICAgICAgICAg
LS1saXN0RW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoK
KyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLmVuZCA9IGxpc3RFbmQgLSBt
X2RhdGE7Cit9CisKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCgpCiB7CiAgICAg
dW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0ZXh0ID09ICd7
JykKICAgICAgICAgKytvZmZzZXQ7IC8vIFNraXAgdGhlIHJ1bGUgYm9keSBvcGVuaW5nIGJyYWNl
LgotICAgIGlmIChvZmZzZXQgPiBtX3J1bGVCb2R5U3RhcnRPZmZzZXQpCi0gICAgICAgIG1fcnVs
ZUJvZHlTdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9keVJh
bmdlLnN0YXJ0KQorICAgICAgICBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQgPSBvZmZzZXQ7CiB9CiAK
IHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUJvZHlFbmQoKQogewogICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHl5dGV4dCAtIG1fZGF0YTsKLSAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9keUVuZE9mZnNl
dCkKLSAgICAgICAgbV9ydWxlQm9keUVuZE9mZnNldCA9IG9mZnNldDsKKyAgICBpZiAob2Zmc2V0
ID4gbV9ydWxlQm9keVJhbmdlLmVuZCkKKyAgICAgICAgbV9ydWxlQm9keVJhbmdlLmVuZCA9IG9m
ZnNldDsKIH0KIAogdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eVN0YXJ0KCkKIHsKLSAgICB1
bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2RhdGE7Ci0gICAgbV9wcm9wZXJ0eVN0YXJ0T2Zm
c2V0ID0gb2Zmc2V0OworICAgIG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IHl5dGV4dCAtIG1fZGF0
YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50
Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkKQEAgLTU3NjAsMTEgKzU3ODksMTEgQEAgdm9p
ZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wg
aXNQcm9wZXJ0eVBhcnNlZCkKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2RhdGE7
CiAgICAgaWYgKCp5eXRleHQgPT0gJzsnKSAvLyBJbmNsdWRlIHNlbWljb2xvbiBpbnRvIHRoZSBw
cm9wZXJ0eSB0ZXh0LgogICAgICAgICArK29mZnNldDsKLSAgICBtX3Byb3BlcnR5RW5kT2Zmc2V0
ID0gb2Zmc2V0OwotICAgIGlmIChtX3Byb3BlcnR5U3RhcnRPZmZzZXQgIT0gVUlOVF9NQVggJiYg
bV9jdXJyZW50U3R5bGVEYXRhKSB7CisgICAgbV9wcm9wZXJ0eVJhbmdlLmVuZCA9IG9mZnNldDsK
KyAgICBpZiAobV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ICE9IFVJTlRfTUFYICYmIG1fY3VycmVudFN0
eWxlRGF0YSkgewogICAgICAgICAvLyBUaGlzIHN0dWZmIGlzIG9ubHkgZXhlY3V0ZWQgd2hlbiB0
aGUgc3R5bGUgZGF0YSByZXRyaWV2YWwgaXMgcmVxdWVzdGVkIGJ5IGNsaWVudC4KLSAgICAgICAg
Y29uc3QgdW5zaWduZWQgc3RhcnQgPSBtX3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAgICAgIGNv
bnN0IHVuc2lnbmVkIGVuZCA9IG1fcHJvcGVydHlFbmRPZmZzZXQ7CisgICAgICAgIGNvbnN0IHVu
c2lnbmVkIHN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0OworICAgICAgICBjb25zdCB1bnNp
Z25lZCBlbmQgPSBtX3Byb3BlcnR5UmFuZ2UuZW5kOwogICAgICAgICBBU1NFUlQoc3RhcnQgPCBl
bmQpOwogICAgICAgICBTdHJpbmcgcHJvcGVydHlTdHJpbmcgPSBTdHJpbmcobV9kYXRhICsgc3Rh
cnQsIGVuZCAtIHN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKHByb3BlcnR5
U3RyaW5nLmVuZHNXaXRoKCI7IiwgdHJ1ZSkpCkBAIC01Nzc3LDcgKzU4MDYsNyBAQCB2b2lkIENT
U1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1By
b3BlcnR5UGFyc2VkKQogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwcm9wZXJ0eVN0cmluZy5zdWJz
dHJpbmcoY29sb25JbmRleCArIDEsIHByb3BlcnR5U3RyaW5nLmxlbmd0aCgpKS5zdHJpcFdoaXRl
U3BhY2UoKTsKICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZlIHRvIHRo
ZSBkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQuCiAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+
cHJvcGVydHlEYXRhLmFwcGVuZCgKLSAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShu
YW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFu
Z2UobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0LCBtX3Byb3Bl
cnR5RW5kT2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KSkpOworICAgICAgICAgICAgQ1NT
UHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIHZhbHVlLCBpc0ltcG9ydGFudEZvdW5kLCBpc1Byb3Bl
cnR5UGFyc2VkLCBTb3VyY2VSYW5nZShzdGFydCAtIG1fcnVsZUJvZHlSYW5nZS5zdGFydCwgZW5k
IC0gbV9ydWxlQm9keVJhbmdlLnN0YXJ0KSkpOwogICAgIH0KICAgICByZXNldFByb3BlcnR5TWFy
a3MoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKaW5kZXggZjhiMjRkZi4uNzZiYzY1NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI0MSwx
OCArMjQxLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQXRvbWljU3RyaW5nIG1f
ZGVmYXVsdE5hbWVzcGFjZTsKIAogICAgICAgICAvLyB0b2tlbml6ZXIgbWV0aG9kcyBhbmQgZGF0
YQotICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5U3RhcnRPZmZzZXQ7Ci0gICAgICAgIHVuc2ln
bmVkIG1fcnVsZUJvZHlFbmRPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJvcGVydHlTdGFy
dE9mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUVuZE9mZnNldDsKKyAgICAgICAg
U291cmNlUmFuZ2UgbV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAgICAgICAgU291cmNlUmFuZ2UgbV9y
dWxlQm9keVJhbmdlOworICAgICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5UmFuZ2U7CiAgICAg
ICAgIFN0eWxlUnVsZVJhbmdlTWFwKiBtX3J1bGVSYW5nZU1hcDsKICAgICAgICAgUmVmUHRyPENT
U1N0eWxlU291cmNlRGF0YT4gbV9jdXJyZW50U3R5bGVEYXRhOworICAgICAgICB2b2lkIG1hcmtT
ZWxlY3Rvckxpc3RTdGFydCgpOworICAgICAgICB2b2lkIG1hcmtTZWxlY3Rvckxpc3RFbmQoKTsK
ICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtSdWxl
Qm9keUVuZCgpOwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAgIHZv
aWQgbWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5
UGFyc2VkKTsKLSAgICAgICAgdm9pZCByZXNldFJ1bGVCb2R5TWFya3MoKSB7IG1fcnVsZUJvZHlT
dGFydE9mZnNldCA9IG1fcnVsZUJvZHlFbmRPZmZzZXQgPSAwOyB9Ci0gICAgICAgIHZvaWQgcmVz
ZXRQcm9wZXJ0eU1hcmtzKCkgeyBtX3Byb3BlcnR5U3RhcnRPZmZzZXQgPSBtX3Byb3BlcnR5RW5k
T2Zmc2V0ID0gVUlOVF9NQVg7IH0KKyAgICAgICAgdm9pZCByZXNldFNlbGVjdG9yTGlzdE1hcmtz
KCkgeyBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0ID0gbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQg
PSAwOyB9CisgICAgICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkgeyBtX3J1bGVCb2R5UmFu
Z2Uuc3RhcnQgPSBtX3J1bGVCb2R5UmFuZ2UuZW5kID0gMDsgfQorICAgICAgICB2b2lkIHJlc2V0
UHJvcGVydHlNYXJrcygpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdl
LmVuZCA9IFVJTlRfTUFYOyB9CiAgICAgICAgIGludCBsZXgodm9pZCogeXlsdmFsKTsKICAgICAg
ICAgaW50IHRva2VuKCkgeyByZXR1cm4geXlUb2s7IH0KICAgICAgICAgVUNoYXIqIHRleHQoaW50
KiBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKaW5kZXggMTYyODAz
MS4uZWI5YzJjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCkBAIC01NCwx
MyArNTQsNiBAQCBTb3VyY2VSYW5nZTo6U291cmNlUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGVuZCkKIHsKIH0KIAotU291cmNlUmFuZ2UmIFNvdXJjZVJhbmdlOjpvcGVyYXRvcj0oY29u
c3QgU291cmNlUmFuZ2UmIG90aGVyKQotewotICAgIHRoaXMtPnN0YXJ0ID0gb3RoZXIuc3RhcnQ7
Ci0gICAgdGhpcy0+ZW5kID0gb3RoZXIuZW5kOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogQ1NT
UHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBwYXJzZWRPaywg
Y29uc3QgU291cmNlUmFuZ2UmIHJhbmdlKQogICAgIDogbmFtZShuYW1lKQogICAgICwgdmFsdWUo
dmFsdWUpCkBAIC04OCwxNiArODEsNiBAQCBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OkNTU1Byb3Bl
cnR5U291cmNlRGF0YSgpCiB7CiB9CiAKLUNTU1Byb3BlcnR5U291cmNlRGF0YSYgQ1NTUHJvcGVy
dHlTb3VyY2VEYXRhOjpvcGVyYXRvcj0oY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBvdGhl
cikKLXsKLSAgICBuYW1lID0gb3RoZXIubmFtZTsKLSAgICB2YWx1ZSA9IG90aGVyLnZhbHVlOwot
ICAgIGltcG9ydGFudCA9IG90aGVyLmltcG9ydGFudDsKLSAgICBwYXJzZWRPayA9IG90aGVyLnBh
cnNlZE9rOwotICAgIHJhbmdlID0gb3RoZXIucmFuZ2U7Ci0gICAgcmV0dXJuICp0aGlzOwotfQot
CiBTdHJpbmcgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVtcHR5VmFsdWUsICgiZSIpKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oIGIvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmgKaW5kZXggYmVhZTlkMC4uYWM1NTQxMSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NT
UHJvcGVydHlTb3VyY2VEYXRhLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgQ1NTU3R5bGVSdWxl
Owogc3RydWN0IFNvdXJjZVJhbmdlIHsKICAgICBTb3VyY2VSYW5nZSgpOwogICAgIFNvdXJjZVJh
bmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwotICAgIFNvdXJjZVJhbmdlJiBvcGVy
YXRvcj0oY29uc3QgU291cmNlUmFuZ2UmIG90aGVyKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0Owog
ICAgIHVuc2lnbmVkIGVuZDsKQEAgLTU2LDkgKzU1LDcgQEAgc3RydWN0IENTU1Byb3BlcnR5U291
cmNlRGF0YSB7CiAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgcGFyc2VkT2ssIGNvbnN0
IFNvdXJjZVJhbmdlJiByYW5nZSk7CiAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IENT
U1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YSgp
OwotICAgIEFMV0FZU19JTkxJTkUgfkNTU1Byb3BlcnR5U291cmNlRGF0YSgpIHsgfQogCi0gICAg
Q1NTUHJvcGVydHlTb3VyY2VEYXRhJiBvcGVyYXRvcj0oY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VE
YXRhJiBvdGhlcik7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgdW5zaWduZWQg
aGFzaCgpIGNvbnN0OwogCkBAIC03OSw2ICs3NiwxMCBAQCBzdHJ1Y3QgQ1NTU3R5bGVTb3VyY2VE
YXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTU3R5bGVTb3VyY2VEYXRhPiB7CiAgICAgICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTb3VyY2VEYXRhKCkpOwogICAgIH0KIAorICAgIC8v
IFtPcHRpb25hbF0gUmFuZ2Ugb2YgdGhlIHNlbGVjdG9yIGxpc3QgaW4gdGhlIGVuY2xvc2luZyBz
b3VyY2UuCisgICAgLy8gSWYgdGhlIHN0eWxlIGlzIGEgcHVyZSBkZWNsYXJhdGlvbiwgdGhlIHJh
bmdlIGlzICgwLCAwKS4KKyAgICBTb3VyY2VSYW5nZSBzZWxlY3Rvckxpc3RSYW5nZTsKKwogICAg
IC8vIFJhbmdlIG9mIHRoZSBzdHlsZSB0ZXh0IGluIHRoZSBlbmNsb3Npbmcgc291cmNlLgogICAg
IFNvdXJjZVJhbmdlIHN0eWxlQm9keVJhbmdlOwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJj
ZURhdGE+IHByb3BlcnR5RGF0YTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVs
ZS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3BwCmluZGV4IDEwMzZlOGYuLjdjYzA5
N2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcApAQCAtMjMsNyArMjMsMTIgQEAKICNpbmNsdWRlICJDU1NT
dHlsZVJ1bGUuaCIKIAogI2luY2x1ZGUgIkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uLmgiCisj
aW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKKyNpbmNsdWRl
ICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFeGNl
cHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldC5oIgogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTUwLDkgKzU1LDM0IEBAIFN0cmluZyBDU1NTdHlsZVJ1bGU6OnNlbGVjdG9yVGV4
dCgpIGNvbnN0CiAgICAgcmV0dXJuIHN0cjsKIH0KIAotdm9pZCBDU1NTdHlsZVJ1bGU6OnNldFNl
bGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIC8qc2VsZWN0b3JUZXh0Ki8sIEV4Y2VwdGlvbkNvZGUm
IC8qZWMqLykKK3ZvaWQgQ1NTU3R5bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5n
JiBzZWxlY3RvclRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIC8vIEZJWE1FOiBJbXBs
ZW1lbnQhCisgICAgQ1NTUGFyc2VyIHA7CisgICAgQ1NTU2VsZWN0b3JMaXN0IHNlbGVjdG9yTGlz
dDsKKyAgICBEb2N1bWVudCogZG9jID0gMDsKKyAgICBTdHlsZVNoZWV0KiBvd25lclN0eWxlU2hl
ZXQgPSBtX3N0eWxlLT5zdHlsZXNoZWV0KCk7CisgICAgaWYgKG93bmVyU3R5bGVTaGVldCkgewor
ICAgICAgICBpZiAob3duZXJTdHlsZVNoZWV0LT5pc0NTU1N0eWxlU2hlZXQoKSkKKyAgICAgICAg
ICAgIGRvYyA9IHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihvd25lclN0eWxlU2hlZXQpLT5k
b2N1bWVudCgpOworICAgICAgICBpZiAoIWRvYykKKyAgICAgICAgICAgIGRvYyA9IG93bmVyU3R5
bGVTaGVldC0+b3duZXJOb2RlKCkgPyBvd25lclN0eWxlU2hlZXQtPm93bmVyTm9kZSgpLT5kb2N1
bWVudCgpIDogMDsKKyAgICB9CisgICAgaWYgKCFkb2MpCisgICAgICAgIGRvYyA9IG1fc3R5bGUt
Pm5vZGUoKSA/IG1fc3R5bGUtPm5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisKKyAgICBpZiAoIWRv
YykgeworICAgICAgICBlYyA9IFdST05HX0RPQ1VNRU5UX0VSUjsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHAucGFyc2VTZWxlY3RvcihzZWxlY3RvclRleHQsIGRvYywgc2VsZWN0b3JM
aXN0KTsKKyAgICBpZiAoIXNlbGVjdG9yTGlzdC5maXJzdCgpKSB7CisgICAgICAgIGVjID0gU1lO
VEFYX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fc2VsZWN0b3JMaXN0LmFk
b3B0KHNlbGVjdG9yTGlzdCk7CisgICAgZG9jLT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNT
dHlsZUltbWVkaWF0ZWx5KTsKIH0KIAogU3RyaW5nIENTU1N0eWxlUnVsZTo6Y3NzVGV4dCgpIGNv
bnN0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68544</attachid>
            <date>2010-09-23 10:37:22 -0700</date>
            <delta_ts>2010-09-24 01:56:46 -0700</delta_ts>
            <desc>[PATCH] Style fixed</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>12329</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzFjZmZiNi4uODk2N2Q3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wOS0yMyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBDU1NTdHlsZVJ1
bGU6OnNldFNlbGVjdG9yVGV4dCgpIGFuZCBlbmFibGUgc2VsZWN0b3IgZGF0YSBleHRyYWN0aW9u
IGZyb20gQ1NTIHNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYzNjcKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6Om1hcmtSdWxlQm9keUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
Om1hcmtQcm9wZXJ0eVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1By
b3BlcnR5RW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJlc2V0U2VsZWN0b3JMaXN0TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXNldFJ1bGVCb2R5TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpyZXNldFByb3BlcnR5TWFya3MpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuY3BwOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVs
ZTo6c2V0U2VsZWN0b3JUZXh0KToKKwogMjAxMC0wOS0yMiAgTHVrZSBNYWNwaGVyc29uICA8bWFj
cGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEzOWEyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC00
MDgsNyArNDA4LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFsaWRfcnVsZToKLSAgICBydWxlc2V0
CisgICAgYmVmb3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAgICAgICQkID0gJDI7CisgICAgfQog
ICB8IG1lZGlhCiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpAQCAtOTEwLDggKzkxMiwyMiBAQCBt
YXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAgfQogICA7CiAKK2JlZm9yZV9ydWxl
c2V0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWFya1NlbGVjdG9yTGlzdFN0YXJ0
KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5pbmdfYnJhY2U6CisgICAgLyogZW1w
dHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0RW5kKCk7CisgICAgfQorICA7CisK
IHJ1bGVzZXQ6Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgc2VsZWN0b3JfbGlz
dCBiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFy
YXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2Vy
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5j
cmVhdGVTdHlsZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDg2YmNkMGQuLjhkOWY0
YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTQ2LDEwICsxNDYsOSBAQCBDU1NQYXJzZXI6OkNTU1BhcnNl
cihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxz
ZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1f
ZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1fcnVsZUJvZHlTdGFydE9mZnNldCgw
KQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAgICwgbV9wcm9wZXJ0eVN0YXJ0T2Zm
c2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9mZnNldChVSU5UX01BWCkKKyAgICAs
IG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1fcnVsZUJvZHlSYW5nZSgwLCAwKQor
ICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkKICAgICAsIG1fcnVsZVJh
bmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRTdHlsZURhdGEoMCkKICAgICAsIG1fZGF0YSgwKQpA
QCAtNTQ4MCwxMSArNTQ3OSwxMyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQogICAgICAgICBtX3BhcnNlZFN0eWxl
T2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VN
YXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdHlsZURhdGEpOwotICAgICAgICAg
ICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlSYW5nZSA9IFNvdXJjZVJhbmdlKG1fcnVs
ZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9mZnNldCk7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdHlsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0gbV9zZWxlY3Rvckxpc3RSYW5nZTsK
KyAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5bGVCb2R5UmFuZ2UgPSBtX3J1bGVC
b2R5UmFuZ2U7CiAgICAgICAgICAgICBtX3J1bGVSYW5nZU1hcC0+c2V0KHJlc3VsdCwgbV9jdXJy
ZW50U3R5bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJl
c2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1bGVCb2R5TWFya3MoKTsKICAgICBj
bGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTczMywyNiArNTczNCw1
NCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCkK
ICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVj
dG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0ID0geXl0ZXh0
IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlzdEVuZCgpCit7
CisgICAgaWYgKCFtX2N1cnJlbnRTdHlsZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBVQ2hh
ciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSAo
bGlzdEVuZCA+IG1fZGF0YSArIDEgJiYgIWRvbmUpIHsKKyAgICAgICAgc3dpdGNoICgqKGxpc3RF
bmQgLSAxKSkgeworICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgY2FzZSAnXG4nOgorICAgICAg
ICBjYXNlICdccic6CisgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgY2FzZSAnXHYnOgorICAg
ICAgICBjYXNlICdcZic6CisgICAgICAgICAgICAtLWxpc3RFbmQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQg
PSBsaXN0RW5kIC0gbV9kYXRhOworfQorCiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3Rh
cnQoKQogewogICAgIHVuc2lnbmVkIG9mZnNldCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAo
Knl5dGV4dCA9PSAneycpCiAgICAgICAgICsrb2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJvZHkg
b3BlbmluZyBicmFjZS4KLSAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KQot
ICAgICAgICBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+
IG1fcnVsZUJvZHlSYW5nZS5zdGFydCkKKyAgICAgICAgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0g
b2Zmc2V0OwogfQogCiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5RW5kKCkKIHsKICAgICB1
bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2RhdGE7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVs
ZUJvZHlFbmRPZmZzZXQpCi0gICAgICAgIG1fcnVsZUJvZHlFbmRPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlSYW5nZS5lbmQpCisgICAgICAgIG1fcnVsZUJvZHlS
YW5nZS5lbmQgPSBvZmZzZXQ7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlTdGFy
dCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwotICAgIG1fcHJv
cGVydHlTdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSB5
eXRleHQgLSBtX2RhdGE7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9v
bCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJzZWQpCkBAIC01NzYwLDExICs1
Nzg5LDExIEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFu
dEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJzZWQpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0
ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0ZXh0ID09ICc7JykgLy8gSW5jbHVkZSBzZW1pY29s
b24gaW50byB0aGUgcHJvcGVydHkgdGV4dC4KICAgICAgICAgKytvZmZzZXQ7Ci0gICAgbV9wcm9w
ZXJ0eUVuZE9mZnNldCA9IG9mZnNldDsKLSAgICBpZiAobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ICE9
IFVJTlRfTUFYICYmIG1fY3VycmVudFN0eWxlRGF0YSkgeworICAgIG1fcHJvcGVydHlSYW5nZS5l
bmQgPSBvZmZzZXQ7CisgICAgaWYgKG1fcHJvcGVydHlSYW5nZS5zdGFydCAhPSBVSU5UX01BWCAm
JiBtX2N1cnJlbnRTdHlsZURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4
ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRhdGEgcmV0cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGll
bnQuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHN0YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9IG1fcHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgZW5kID0gbV9wcm9wZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNT
RVJUKHN0YXJ0IDwgZW5kKTsKICAgICAgICAgU3RyaW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5n
KG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFydCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAg
IGlmIChwcm9wZXJ0eVN0cmluZy5lbmRzV2l0aCgiOyIsIHRydWUpKQpAQCAtNTc3Nyw3ICs1ODA2
LDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91
bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkKICAgICAgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVy
dHlTdHJpbmcuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgo
KSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyBy
ZWxhdGl2ZSB0byB0aGUgZGVjbGFyYXRpb24gc3RhcnQgb2Zmc2V0LgogICAgICAgICBtX2N1cnJl
bnRTdHlsZURhdGEtPnByb3BlcnR5RGF0YS5hcHBlbmQoCi0gICAgICAgICAgICBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlzSW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJz
ZWQsIFNvdXJjZVJhbmdlKG1fcHJvcGVydHlTdGFydE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9m
ZnNldCwgbV9wcm9wZXJ0eUVuZE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCkpKTsKKyAg
ICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRG
b3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFuZ2Uoc3RhcnQgLSBtX3J1bGVCb2R5UmFu
Z2Uuc3RhcnQsIGVuZCAtIG1fcnVsZUJvZHlSYW5nZS5zdGFydCkpKTsKICAgICB9CiAgICAgcmVz
ZXRQcm9wZXJ0eU1hcmtzKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGY4YjI0ZGYuLjc2YmM2NTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCkBAIC0yNDEsMTggKzI0MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0
b21pY1N0cmluZyBtX2RlZmF1bHROYW1lc3BhY2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1l
dGhvZHMgYW5kIGRhdGEKLSAgICAgICAgdW5zaWduZWQgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0Owot
ICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5RW5kT2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBt
X3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJvcGVydHlFbmRPZmZz
ZXQ7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgICAgIFNv
dXJjZVJhbmdlIG1fcnVsZUJvZHlSYW5nZTsKKyAgICAgICAgU291cmNlUmFuZ2UgbV9wcm9wZXJ0
eVJhbmdlOwogICAgICAgICBTdHlsZVJ1bGVSYW5nZU1hcCogbV9ydWxlUmFuZ2VNYXA7CiAgICAg
ICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IG1fY3VycmVudFN0eWxlRGF0YTsKKyAgICAg
ICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0U3RhcnQoKTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0
b3JMaXN0RW5kKCk7CiAgICAgICAgIHZvaWQgbWFya1J1bGVCb2R5U3RhcnQoKTsKICAgICAgICAg
dm9pZCBtYXJrUnVsZUJvZHlFbmQoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgp
OwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJv
b2wgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0gICAgICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkg
eyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBtX3J1bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQotICAg
ICAgICB2b2lkIHJlc2V0UHJvcGVydHlNYXJrcygpIHsgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ID0g
bV9wcm9wZXJ0eUVuZE9mZnNldCA9IFVJTlRfTUFYOyB9CisgICAgICAgIHZvaWQgcmVzZXRTZWxl
Y3Rvckxpc3RNYXJrcygpIHsgbV9zZWxlY3Rvckxpc3RSYW5nZS5zdGFydCA9IG1fc2VsZWN0b3JM
aXN0UmFuZ2UuZW5kID0gMDsgfQorICAgICAgICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsg
bV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9ydWxlQm9keVJhbmdlLmVuZCA9IDA7IH0KKyAgICAg
ICAgdm9pZCByZXNldFByb3BlcnR5TWFya3MoKSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1f
cHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01BWDsgfQogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5
bHZhbCk7CiAgICAgICAgIGludCB0b2tlbigpIHsgcmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVD
aGFyKiB0ZXh0KGludCogbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3Bw
CmluZGV4IDE2MjgwMzEuLmViOWMyYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmNwcApAQCAtNTQsMTMgKzU0LDYgQEAgU291cmNlUmFuZ2U6OlNvdXJjZVJhbmdlKHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7CiB9CiAKLVNvdXJjZVJhbmdlJiBTb3VyY2VSYW5nZTo6
b3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdlJiBvdGhlcikKLXsKLSAgICB0aGlzLT5zdGFydCA9
IG90aGVyLnN0YXJ0OwotICAgIHRoaXMtPmVuZCA9IG90aGVyLmVuZDsKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KIENTU1Byb3BlcnR5U291cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJv
b2wgcGFyc2VkT2ssIGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSkKICAgICA6IG5hbWUobmFtZSkK
ICAgICAsIHZhbHVlKHZhbHVlKQpAQCAtODgsMTYgKzgxLDYgQEAgQ1NTUHJvcGVydHlTb3VyY2VE
YXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKQogewogfQogCi1DU1NQcm9wZXJ0eVNvdXJjZURh
dGEmIENTU1Byb3BlcnR5U291cmNlRGF0YTo6b3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291
cmNlRGF0YSYgb3RoZXIpCi17Ci0gICAgbmFtZSA9IG90aGVyLm5hbWU7Ci0gICAgdmFsdWUgPSBv
dGhlci52YWx1ZTsKLSAgICBpbXBvcnRhbnQgPSBvdGhlci5pbXBvcnRhbnQ7Ci0gICAgcGFyc2Vk
T2sgPSBvdGhlci5wYXJzZWRPazsKLSAgICByYW5nZSA9IG90aGVyLnJhbmdlOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQogU3RyaW5nIENTU1Byb3BlcnR5U291cmNlRGF0YTo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbXB0eVZhbHVlLCAoImUi
KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBiL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCmluZGV4IGJlYWU5ZDAuLmFjNTU0MTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNz
IENTU1N0eWxlUnVsZTsKIHN0cnVjdCBTb3VyY2VSYW5nZSB7CiAgICAgU291cmNlUmFuZ2UoKTsK
ICAgICBTb3VyY2VSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKLSAgICBTb3Vy
Y2VSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdlJiBvdGhlcik7CiAKICAgICB1bnNp
Z25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBlbmQ7CkBAIC01Niw5ICs1NSw3IEBAIHN0cnVjdCBD
U1NQcm9wZXJ0eVNvdXJjZURhdGEgewogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBh
cnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UpOwogICAgIENTU1Byb3BlcnR5U291cmNl
RGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEoKTsKLSAgICBBTFdBWVNfSU5MSU5FIH5DU1NQcm9wZXJ0eVNvdXJjZURhdGEo
KSB7IH0KIAotICAgIENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IENTU1By
b3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIApAQCAtNzksNiArNzYsMTAgQEAgc3RydWN0IENT
U1N0eWxlU291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4g
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1N0eWxlU291cmNlRGF0YSgpKTsKICAg
ICB9CiAKKyAgICAvLyBbT3B0aW9uYWxdIFJhbmdlIG9mIHRoZSBzZWxlY3RvciBsaXN0IGluIHRo
ZSBlbmNsb3Npbmcgc291cmNlLgorICAgIC8vIElmIHRoZSBzdHlsZSBpcyBhIHB1cmUgZGVjbGFy
YXRpb24sIHRoZSByYW5nZSBpcyAoMCwgMCkuCisgICAgU291cmNlUmFuZ2Ugc2VsZWN0b3JMaXN0
UmFuZ2U7CisKICAgICAvLyBSYW5nZSBvZiB0aGUgc3R5bGUgdGV4dCBpbiB0aGUgZW5jbG9zaW5n
IHNvdXJjZS4KICAgICBTb3VyY2VSYW5nZSBzdHlsZUJvZHlSYW5nZTsKICAgICBWZWN0b3I8Q1NT
UHJvcGVydHlTb3VyY2VEYXRhPiBwcm9wZXJ0eURhdGE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCAx
MDM2ZThmLi43Y2MwOTdiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKQEAgLTIzLDcgKzIzLDEyIEBACiAj
aW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9y
LmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCw5ICs1NSwzNCBAQCBTdHJpbmcgQ1NTU3R5bGVSdWxl
OjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgIHJldHVybiBzdHI7CiB9CiAKLXZvaWQgQ1NTU3R5
bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiAvKnNlbGVjdG9yVGV4dCovLCBF
eGNlcHRpb25Db2RlJiAvKmVjKi8pCit2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICAv
LyBGSVhNRTogSW1wbGVtZW50IQorICAgIENTU1BhcnNlciBwOworICAgIENTU1NlbGVjdG9yTGlz
dCBzZWxlY3Rvckxpc3Q7CisgICAgRG9jdW1lbnQqIGRvYyA9IDA7CisgICAgU3R5bGVTaGVldCog
b3duZXJTdHlsZVNoZWV0ID0gbV9zdHlsZS0+c3R5bGVzaGVldCgpOworICAgIGlmIChvd25lclN0
eWxlU2hlZXQpIHsKKyAgICAgICAgaWYgKG93bmVyU3R5bGVTaGVldC0+aXNDU1NTdHlsZVNoZWV0
KCkpCisgICAgICAgICAgICBkb2MgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4ob3duZXJT
dHlsZVNoZWV0KS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKCFkb2MpCisgICAgICAgICAgICBk
b2MgPSBvd25lclN0eWxlU2hlZXQtPm93bmVyTm9kZSgpID8gb3duZXJTdHlsZVNoZWV0LT5vd25l
ck5vZGUoKS0+ZG9jdW1lbnQoKSA6IDA7CisgICAgfQorICAgIGlmICghZG9jKQorICAgICAgICBk
b2MgPSBtX3N0eWxlLT5ub2RlKCkgPyBtX3N0eWxlLT5ub2RlKCktPmRvY3VtZW50KCkgOiAwOwor
CisgICAgaWYgKCFkb2MpIHsKKyAgICAgICAgZWMgPSBXUk9OR19ET0NVTUVOVF9FUlI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBwLnBhcnNlU2VsZWN0b3Ioc2VsZWN0b3JUZXh0LCBk
b2MsIHNlbGVjdG9yTGlzdCk7CisgICAgaWYgKCFzZWxlY3Rvckxpc3QuZmlyc3QoKSkgeworICAg
ICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3Nl
bGVjdG9yTGlzdC5hZG9wdChzZWxlY3Rvckxpc3QpOworICAgIGRvYy0+c3R5bGVTZWxlY3RvckNo
YW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAKIFN0cmluZyBDU1NTdHlsZVJ1bGU6
OmNzc1RleHQoKSBjb25zdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68661</attachid>
            <date>2010-09-24 01:56:46 -0700</date>
            <delta_ts>2010-09-27 09:19:04 -0700</delta_ts>
            <desc>[PATCH] Do not return an ExceptionCode in the event of an error in setSelectorText()</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>12255</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzFjZmZiNi4uODk2N2Q3YSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxMC0wOS0yMyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcGxlbWVudCBDU1NTdHlsZVJ1
bGU6OnNldFNlbGVjdG9yVGV4dCgpIGFuZCBlbmFibGUgc2VsZWN0b3IgZGF0YSBleHRyYWN0aW9u
IGZyb20gQ1NTIHNvdXJjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NDYzNjcKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICog
Y3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNl
cik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RTdGFydCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RFbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6Om1hcmtSdWxlQm9keUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6
Om1hcmtQcm9wZXJ0eVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1By
b3BlcnR5RW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQYXJzZXI6OnJlc2V0U2VsZWN0b3JMaXN0TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXNldFJ1bGVCb2R5TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpyZXNldFByb3BlcnR5TWFya3MpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJj
ZURhdGEuY3BwOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoKKyAgICAg
ICAgKiBjc3MvQ1NTU3R5bGVSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlUnVs
ZTo6c2V0U2VsZWN0b3JUZXh0KToKKwogMjAxMC0wOS0yMiAgTHVrZSBNYWNwaGVyc29uICA8bWFj
cGhlcnNvbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFByb3Nr
dXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEzOWEyIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC00
MDgsNyArNDA4LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFsaWRfcnVsZToKLSAgICBydWxlc2V0
CisgICAgYmVmb3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAgICAgICQkID0gJDI7CisgICAgfQog
ICB8IG1lZGlhCiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpAQCAtOTEwLDggKzkxMiwyMiBAQCBt
YXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAgfQogICA7CiAKK2JlZm9yZV9ydWxl
c2V0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nh
c3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWFya1NlbGVjdG9yTGlzdFN0YXJ0
KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5pbmdfYnJhY2U6CisgICAgLyogZW1w
dHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0RW5kKCk7CisgICAgfQorICA7CisK
IHJ1bGVzZXQ6Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xh
cmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgc2VsZWN0b3JfbGlz
dCBiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFy
YXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2Vy
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5j
cmVhdGVTdHlsZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDg2YmNkMGQuLjhkOWY0
YTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtMTQ2LDEwICsxNDYsOSBAQCBDU1NQYXJzZXI6OkNTU1BhcnNl
cihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhmYWxz
ZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAsIG1f
ZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1fcnVsZUJvZHlTdGFydE9mZnNldCgw
KQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAgICwgbV9wcm9wZXJ0eVN0YXJ0T2Zm
c2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9mZnNldChVSU5UX01BWCkKKyAgICAs
IG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1fcnVsZUJvZHlSYW5nZSgwLCAwKQor
ICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkKICAgICAsIG1fcnVsZVJh
bmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRTdHlsZURhdGEoMCkKICAgICAsIG1fZGF0YSgwKQpA
QCAtNTQ4MCwxMSArNTQ3OSwxMyBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVs
ZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQogICAgICAgICBtX3BhcnNlZFN0eWxl
T2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAgICAgICBpZiAobV9ydWxlUmFuZ2VN
YXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdHlsZURhdGEpOwotICAgICAgICAg
ICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlSYW5nZSA9IFNvdXJjZVJhbmdlKG1fcnVs
ZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9mZnNldCk7CisgICAgICAgICAgICBtX2N1
cnJlbnRTdHlsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0gbV9zZWxlY3Rvckxpc3RSYW5nZTsK
KyAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5bGVCb2R5UmFuZ2UgPSBtX3J1bGVC
b2R5UmFuZ2U7CiAgICAgICAgICAgICBtX3J1bGVSYW5nZU1hcC0+c2V0KHJlc3VsdCwgbV9jdXJy
ZW50U3R5bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAgICAgICB9CiAgICAgfQorICAgIHJl
c2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1bGVCb2R5TWFya3MoKTsKICAgICBj
bGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTczMywyNiArNTczNCw1
NCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFuZFBvc2l0aW9uKCkK
ICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVj
dG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0ID0geXl0ZXh0
IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlzdEVuZCgpCit7
CisgICAgaWYgKCFtX2N1cnJlbnRTdHlsZURhdGEpCisgICAgICAgIHJldHVybjsKKyAgICBVQ2hh
ciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICBib29sIGRvbmUgPSBmYWxzZTsKKyAgICB3aGlsZSAo
bGlzdEVuZCA+IG1fZGF0YSArIDEgJiYgIWRvbmUpIHsKKyAgICAgICAgc3dpdGNoICgqKGxpc3RF
bmQgLSAxKSkgeworICAgICAgICBjYXNlICcgJzoKKyAgICAgICAgY2FzZSAnXG4nOgorICAgICAg
ICBjYXNlICdccic6CisgICAgICAgIGNhc2UgJ1x0JzoKKyAgICAgICAgY2FzZSAnXHYnOgorICAg
ICAgICBjYXNlICdcZic6CisgICAgICAgICAgICAtLWxpc3RFbmQ7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQg
PSBsaXN0RW5kIC0gbV9kYXRhOworfQorCiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3Rh
cnQoKQogewogICAgIHVuc2lnbmVkIG9mZnNldCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAo
Knl5dGV4dCA9PSAneycpCiAgICAgICAgICsrb2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJvZHkg
b3BlbmluZyBicmFjZS4KLSAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KQot
ICAgICAgICBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+
IG1fcnVsZUJvZHlSYW5nZS5zdGFydCkKKyAgICAgICAgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0g
b2Zmc2V0OwogfQogCiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5RW5kKCkKIHsKICAgICB1
bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2RhdGE7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVs
ZUJvZHlFbmRPZmZzZXQpCi0gICAgICAgIG1fcnVsZUJvZHlFbmRPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlSYW5nZS5lbmQpCisgICAgICAgIG1fcnVsZUJvZHlS
YW5nZS5lbmQgPSBvZmZzZXQ7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlTdGFy
dCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwotICAgIG1fcHJv
cGVydHlTdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSB5
eXRleHQgLSBtX2RhdGE7CiB9CiAKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9v
bCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJzZWQpCkBAIC01NzYwLDExICs1
Nzg5LDExIEBAIHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFu
dEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJzZWQpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0
ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0ZXh0ID09ICc7JykgLy8gSW5jbHVkZSBzZW1pY29s
b24gaW50byB0aGUgcHJvcGVydHkgdGV4dC4KICAgICAgICAgKytvZmZzZXQ7Ci0gICAgbV9wcm9w
ZXJ0eUVuZE9mZnNldCA9IG9mZnNldDsKLSAgICBpZiAobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ICE9
IFVJTlRfTUFYICYmIG1fY3VycmVudFN0eWxlRGF0YSkgeworICAgIG1fcHJvcGVydHlSYW5nZS5l
bmQgPSBvZmZzZXQ7CisgICAgaWYgKG1fcHJvcGVydHlSYW5nZS5zdGFydCAhPSBVSU5UX01BWCAm
JiBtX2N1cnJlbnRTdHlsZURhdGEpIHsKICAgICAgICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4
ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRhdGEgcmV0cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGll
bnQuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHN0YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0
OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmQgPSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9IG1fcHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAg
ICAgY29uc3QgdW5zaWduZWQgZW5kID0gbV9wcm9wZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNT
RVJUKHN0YXJ0IDwgZW5kKTsKICAgICAgICAgU3RyaW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5n
KG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFydCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAg
IGlmIChwcm9wZXJ0eVN0cmluZy5lbmRzV2l0aCgiOyIsIHRydWUpKQpAQCAtNTc3Nyw3ICs1ODA2
LDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91
bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkKICAgICAgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVy
dHlTdHJpbmcuc3Vic3RyaW5nKGNvbG9uSW5kZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgo
KSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyBy
ZWxhdGl2ZSB0byB0aGUgZGVjbGFyYXRpb24gc3RhcnQgb2Zmc2V0LgogICAgICAgICBtX2N1cnJl
bnRTdHlsZURhdGEtPnByb3BlcnR5RGF0YS5hcHBlbmQoCi0gICAgICAgICAgICBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlzSW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJz
ZWQsIFNvdXJjZVJhbmdlKG1fcHJvcGVydHlTdGFydE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9m
ZnNldCwgbV9wcm9wZXJ0eUVuZE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCkpKTsKKyAg
ICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRG
b3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFuZ2Uoc3RhcnQgLSBtX3J1bGVCb2R5UmFu
Z2Uuc3RhcnQsIGVuZCAtIG1fcnVsZUJvZHlSYW5nZS5zdGFydCkpKTsKICAgICB9CiAgICAgcmVz
ZXRQcm9wZXJ0eU1hcmtzKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIu
aCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IGY4YjI0ZGYuLjc2YmM2NTQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCkBAIC0yNDEsMTggKzI0MSwyMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0
b21pY1N0cmluZyBtX2RlZmF1bHROYW1lc3BhY2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1l
dGhvZHMgYW5kIGRhdGEKLSAgICAgICAgdW5zaWduZWQgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0Owot
ICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5RW5kT2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBt
X3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJvcGVydHlFbmRPZmZz
ZXQ7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgICAgIFNv
dXJjZVJhbmdlIG1fcnVsZUJvZHlSYW5nZTsKKyAgICAgICAgU291cmNlUmFuZ2UgbV9wcm9wZXJ0
eVJhbmdlOwogICAgICAgICBTdHlsZVJ1bGVSYW5nZU1hcCogbV9ydWxlUmFuZ2VNYXA7CiAgICAg
ICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IG1fY3VycmVudFN0eWxlRGF0YTsKKyAgICAg
ICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0U3RhcnQoKTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0
b3JMaXN0RW5kKCk7CiAgICAgICAgIHZvaWQgbWFya1J1bGVCb2R5U3RhcnQoKTsKICAgICAgICAg
dm9pZCBtYXJrUnVsZUJvZHlFbmQoKTsKICAgICAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgp
OwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJv
b2wgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0gICAgICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkg
eyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBtX3J1bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQotICAg
ICAgICB2b2lkIHJlc2V0UHJvcGVydHlNYXJrcygpIHsgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ID0g
bV9wcm9wZXJ0eUVuZE9mZnNldCA9IFVJTlRfTUFYOyB9CisgICAgICAgIHZvaWQgcmVzZXRTZWxl
Y3Rvckxpc3RNYXJrcygpIHsgbV9zZWxlY3Rvckxpc3RSYW5nZS5zdGFydCA9IG1fc2VsZWN0b3JM
aXN0UmFuZ2UuZW5kID0gMDsgfQorICAgICAgICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsg
bV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9ydWxlQm9keVJhbmdlLmVuZCA9IDA7IH0KKyAgICAg
ICAgdm9pZCByZXNldFByb3BlcnR5TWFya3MoKSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1f
cHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01BWDsgfQogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5
bHZhbCk7CiAgICAgICAgIGludCB0b2tlbigpIHsgcmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVD
aGFyKiB0ZXh0KGludCogbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3Bw
CmluZGV4IDE2MjgwMzEuLmViOWMyYzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5U291cmNlRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRh
LmNwcApAQCAtNTQsMTMgKzU0LDYgQEAgU291cmNlUmFuZ2U6OlNvdXJjZVJhbmdlKHVuc2lnbmVk
IHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7CiB9CiAKLVNvdXJjZVJhbmdlJiBTb3VyY2VSYW5nZTo6
b3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdlJiBvdGhlcikKLXsKLSAgICB0aGlzLT5zdGFydCA9
IG90aGVyLnN0YXJ0OwotICAgIHRoaXMtPmVuZCA9IG90aGVyLmVuZDsKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KIENTU1Byb3BlcnR5U291cmNlRGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNv
bnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJv
b2wgcGFyc2VkT2ssIGNvbnN0IFNvdXJjZVJhbmdlJiByYW5nZSkKICAgICA6IG5hbWUobmFtZSkK
ICAgICAsIHZhbHVlKHZhbHVlKQpAQCAtODgsMTYgKzgxLDYgQEAgQ1NTUHJvcGVydHlTb3VyY2VE
YXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKQogewogfQogCi1DU1NQcm9wZXJ0eVNvdXJjZURh
dGEmIENTU1Byb3BlcnR5U291cmNlRGF0YTo6b3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291
cmNlRGF0YSYgb3RoZXIpCi17Ci0gICAgbmFtZSA9IG90aGVyLm5hbWU7Ci0gICAgdmFsdWUgPSBv
dGhlci52YWx1ZTsKLSAgICBpbXBvcnRhbnQgPSBvdGhlci5pbXBvcnRhbnQ7Ci0gICAgcGFyc2Vk
T2sgPSBvdGhlci5wYXJzZWRPazsKLSAgICByYW5nZSA9IG90aGVyLnJhbmdlOwotICAgIHJldHVy
biAqdGhpczsKLX0KLQogU3RyaW5nIENTU1Byb3BlcnR5U291cmNlRGF0YTo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBlbXB0eVZhbHVlLCAoImUi
KSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBiL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCmluZGV4IGJlYWU5ZDAuLmFjNTU0MTEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCisrKyBiL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNz
IENTU1N0eWxlUnVsZTsKIHN0cnVjdCBTb3VyY2VSYW5nZSB7CiAgICAgU291cmNlUmFuZ2UoKTsK
ICAgICBTb3VyY2VSYW5nZSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKTsKLSAgICBTb3Vy
Y2VSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdlJiBvdGhlcik7CiAKICAgICB1bnNp
Z25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBlbmQ7CkBAIC01Niw5ICs1NSw3IEBAIHN0cnVjdCBD
U1NQcm9wZXJ0eVNvdXJjZURhdGEgewogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBh
cnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UpOwogICAgIENTU1Byb3BlcnR5U291cmNl
RGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEoKTsKLSAgICBBTFdBWVNfSU5MSU5FIH5DU1NQcm9wZXJ0eVNvdXJjZURhdGEo
KSB7IH0KIAotICAgIENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IENTU1By
b3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwogICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0Owog
ICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIApAQCAtNzksNiArNzYsMTAgQEAgc3RydWN0IENT
U1N0eWxlU291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4g
ewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1N0eWxlU291cmNlRGF0YSgpKTsKICAg
ICB9CiAKKyAgICAvLyBbT3B0aW9uYWxdIFJhbmdlIG9mIHRoZSBzZWxlY3RvciBsaXN0IGluIHRo
ZSBlbmNsb3Npbmcgc291cmNlLgorICAgIC8vIElmIHRoZSBzdHlsZSBpcyBhIHB1cmUgZGVjbGFy
YXRpb24sIHRoZSByYW5nZSBpcyAoMCwgMCkuCisgICAgU291cmNlUmFuZ2Ugc2VsZWN0b3JMaXN0
UmFuZ2U7CisKICAgICAvLyBSYW5nZSBvZiB0aGUgc3R5bGUgdGV4dCBpbiB0aGUgZW5jbG9zaW5n
IHNvdXJjZS4KICAgICBTb3VyY2VSYW5nZSBzdHlsZUJvZHlSYW5nZTsKICAgICBWZWN0b3I8Q1NT
UHJvcGVydHlTb3VyY2VEYXRhPiBwcm9wZXJ0eURhdGE7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVJ1bGUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU3R5bGVSdWxlLmNwcAppbmRleCAx
MDM2ZThmLi5mYWYxMDhmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVJ1bGUuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlUnVsZS5jcHAKQEAgLTIzLDcgKzIzLDEyIEBACiAj
aW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCiAKICNpbmNsdWRlICJDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUgIkNTU1NlbGVjdG9y
LmgiCisjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC01MCw5ICs1NSwzMCBAQCBTdHJpbmcgQ1NTU3R5bGVSdWxl
OjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgIHJldHVybiBzdHI7CiB9CiAKLXZvaWQgQ1NTU3R5
bGVSdWxlOjpzZXRTZWxlY3RvclRleHQoY29uc3QgU3RyaW5nJiAvKnNlbGVjdG9yVGV4dCovLCBF
eGNlcHRpb25Db2RlJiAvKmVjKi8pCit2b2lkIENTU1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0
KGNvbnN0IFN0cmluZyYgc2VsZWN0b3JUZXh0LCBFeGNlcHRpb25Db2RlJiAvKmVjKi8pCiB7Ci0g
ICAgLy8gRklYTUU6IEltcGxlbWVudCEKKyAgICBDU1NQYXJzZXIgcDsKKyAgICBDU1NTZWxlY3Rv
ckxpc3Qgc2VsZWN0b3JMaXN0OworICAgIERvY3VtZW50KiBkb2MgPSAwOworICAgIFN0eWxlU2hl
ZXQqIG93bmVyU3R5bGVTaGVldCA9IG1fc3R5bGUtPnN0eWxlc2hlZXQoKTsKKyAgICBpZiAob3du
ZXJTdHlsZVNoZWV0KSB7CisgICAgICAgIGlmIChvd25lclN0eWxlU2hlZXQtPmlzQ1NTU3R5bGVT
aGVldCgpKQorICAgICAgICAgICAgZG9jID0gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KG93
bmVyU3R5bGVTaGVldCktPmRvY3VtZW50KCk7CisgICAgICAgIGlmICghZG9jKQorICAgICAgICAg
ICAgZG9jID0gb3duZXJTdHlsZVNoZWV0LT5vd25lck5vZGUoKSA/IG93bmVyU3R5bGVTaGVldC0+
b3duZXJOb2RlKCktPmRvY3VtZW50KCkgOiAwOworICAgIH0KKyAgICBpZiAoIWRvYykKKyAgICAg
ICAgZG9jID0gbV9zdHlsZS0+bm9kZSgpID8gbV9zdHlsZS0+bm9kZSgpLT5kb2N1bWVudCgpIDog
MDsKKworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm47CisKKyAgICBwLnBhcnNlU2VsZWN0
b3Ioc2VsZWN0b3JUZXh0LCBkb2MsIHNlbGVjdG9yTGlzdCk7CisgICAgaWYgKCFzZWxlY3Rvckxp
c3QuZmlyc3QoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zZWxlY3Rvckxpc3QuYWRvcHQo
c2VsZWN0b3JMaXN0KTsKKyAgICBkb2MtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOwogfQogCiBTdHJpbmcgQ1NTU3R5bGVSdWxlOjpjc3NUZXh0KCkgY29uc3QK
</data>
<flag name="review"
          id="58218"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>68918</attachid>
            <date>2010-09-27 09:19:04 -0700</date>
            <delta_ts>2010-09-28 01:29:27 -0700</delta_ts>
            <desc>[PATCH] Only source offsets extraction for rule selectors</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>10552</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzU4MTBjMC4uMGQxMmI5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMSBAQAogMjAxMC0wOS0yNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENTU1BhcnNlcjogRW5hYmxlIHJ1bGUgc2VsZWN0b3Igc291
cmNlIHJhbmdlIGV4dHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2MzY3CisKKyAgICAgICAgU29tZSBjb2RlIHJlbW92YWwgd2FzIHN1Z2dl
c3RlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNT
U1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlQm9keUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6Om1hcmtQcm9wZXJ0eVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
bWFya1Byb3BlcnR5RW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0U2VsZWN0b3JMaXN0TWFya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpyZXNldFJ1bGVCb2R5TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXNldFByb3BlcnR5TWFya3MpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0
eVNvdXJjZURhdGEuY3BwOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoK
KworMjAxMC0wOS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCiAKICAgICAgICAgSW1wbGVtZW50IENT
U1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEz
OWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CkBAIC00MDgsNyArNDA4LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFs
aWRfcnVsZToKLSAgICBydWxlc2V0CisgICAgYmVmb3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAg
ICAgICQkID0gJDI7CisgICAgfQogICB8IG1lZGlhCiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpA
QCAtOTEwLDggKzkxMiwyMiBAQCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAg
fQogICA7CiAKK2JlZm9yZV9ydWxlc2V0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NT
UGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+
bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5p
bmdfYnJhY2U6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0
RW5kKCk7CisgICAgfQorICA7CisKIHJ1bGVzZXQ6Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFj
ZSB7CisgICAgc2VsZWN0b3JfbGlzdCBiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXli
ZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNl
IHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVTdHlsZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDg2YmNkMGQuLjhiMDkxYmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTQ2LDEwICsxNDYsOSBA
QCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NT
UnVsZShmYWxzZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1f
cnVsZUJvZHlTdGFydE9mZnNldCgwKQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAg
ICwgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9m
ZnNldChVSU5UX01BWCkKKyAgICAsIG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1f
cnVsZUJvZHlSYW5nZSgwLCAwKQorICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5U
X01BWCkKICAgICAsIG1fcnVsZVJhbmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRTdHlsZURhdGEo
MCkKICAgICAsIG1fZGF0YSgwKQpAQCAtNTQ4MCwxMSArNTQ3OSwxMyBAQCBDU1NSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQog
ICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAg
ICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRT
dHlsZURhdGEpOwotICAgICAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlSYW5n
ZSA9IFNvdXJjZVJhbmdlKG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9mZnNl
dCk7CisgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0g
bV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5
bGVCb2R5UmFuZ2UgPSBtX3J1bGVCb2R5UmFuZ2U7CiAgICAgICAgICAgICBtX3J1bGVSYW5nZU1h
cC0+c2V0KHJlc3VsdCwgbV9jdXJyZW50U3R5bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRTdHlsZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAg
ICAgICB9CiAgICAgfQorICAgIHJlc2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1
bGVCb2R5TWFya3MoKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNTczMywyNiArNTczNCw0NSBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVj
dG9yTGluZUFuZFBvc2l0aW9uKCkKICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lk
IENTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlz
dFJhbmdlLnN0YXJ0ID0geXl0ZXh0IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFy
a1NlbGVjdG9yTGlzdEVuZCgpCit7CisgICAgaWYgKCFtX2N1cnJlbnRTdHlsZURhdGEpCisgICAg
ICAgIHJldHVybjsKKyAgICBVQ2hhciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICBib29sIGRvbmUg
PSBmYWxzZTsKKyAgICB3aGlsZSAobGlzdEVuZCA+IG1fZGF0YSArIDEgJiYgIWRvbmUpIHsKKyAg
ICAgICAgaWYgKCFpc0NTU1doaXRlc3BhY2UoKihsaXN0RW5kIC0gMSkpKQorICAgICAgICAgICAg
LS1saXN0RW5kOworICAgICAgICBlbHNlCisgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQgPSBsaXN0RW5kIC0gbV9kYXRhOworfQorCiB2
b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3RhcnQoKQogewogICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAoKnl5dGV4dCA9PSAneycpCiAgICAgICAgICsr
b2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJvZHkgb3BlbmluZyBicmFjZS4KLSAgICBpZiAob2Zm
c2V0ID4gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KQotICAgICAgICBtX3J1bGVCb2R5U3RhcnRPZmZz
ZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlSYW5nZS5zdGFydCkKKyAg
ICAgICAgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gb2Zmc2V0OwogfQogCiB2b2lkIENTU1BhcnNl
cjo6bWFya1J1bGVCb2R5RW5kKCkKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBt
X2RhdGE7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlFbmRPZmZzZXQpCi0gICAgICAgIG1f
cnVsZUJvZHlFbmRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlS
YW5nZS5lbmQpCisgICAgICAgIG1fcnVsZUJvZHlSYW5nZS5lbmQgPSBvZmZzZXQ7CiB9CiAKIHZv
aWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlTdGFydCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0
ID0geXl0ZXh0IC0gbV9kYXRhOwotICAgIG1fcHJvcGVydHlTdGFydE9mZnNldCA9IG9mZnNldDsK
KyAgICBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSB5eXRleHQgLSBtX2RhdGE7CiB9CiAKIHZvaWQg
Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlz
UHJvcGVydHlQYXJzZWQpCkBAIC01NzYwLDExICs1NzgwLDExIEBAIHZvaWQgQ1NTUGFyc2VyOjpt
YXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJz
ZWQpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0
ZXh0ID09ICc7JykgLy8gSW5jbHVkZSBzZW1pY29sb24gaW50byB0aGUgcHJvcGVydHkgdGV4dC4K
ICAgICAgICAgKytvZmZzZXQ7Ci0gICAgbV9wcm9wZXJ0eUVuZE9mZnNldCA9IG9mZnNldDsKLSAg
ICBpZiAobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ICE9IFVJTlRfTUFYICYmIG1fY3VycmVudFN0eWxl
RGF0YSkgeworICAgIG1fcHJvcGVydHlSYW5nZS5lbmQgPSBvZmZzZXQ7CisgICAgaWYgKG1fcHJv
cGVydHlSYW5nZS5zdGFydCAhPSBVSU5UX01BWCAmJiBtX2N1cnJlbnRTdHlsZURhdGEpIHsKICAg
ICAgICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRhdGEg
cmV0cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGllbnQuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVk
IHN0YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBl
bmQgPSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9
IG1fcHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kID0gbV9w
cm9wZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNTRVJUKHN0YXJ0IDwgZW5kKTsKICAgICAgICAg
U3RyaW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5nKG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFy
dCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVN0cmluZy5lbmRzV2l0
aCgiOyIsIHRydWUpKQpAQCAtNTc3Nyw3ICs1Nzk3LDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtQ
cm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkK
ICAgICAgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVydHlTdHJpbmcuc3Vic3RyaW5nKGNvbG9uSW5k
ZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgoKSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAg
ICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0byB0aGUgZGVjbGFyYXRpb24g
c3RhcnQgb2Zmc2V0LgogICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnByb3BlcnR5RGF0YS5h
cHBlbmQoCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlz
SW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJzZWQsIFNvdXJjZVJhbmdlKG1fcHJvcGVydHlT
dGFydE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9wcm9wZXJ0eUVuZE9mZnNldCAt
IG1fcnVsZUJvZHlTdGFydE9mZnNldCkpKTsKKyAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNl
RGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291
cmNlUmFuZ2Uoc3RhcnQgLSBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQsIGVuZCAtIG1fcnVsZUJvZHlS
YW5nZS5zdGFydCkpKTsKICAgICB9CiAgICAgcmVzZXRQcm9wZXJ0eU1hcmtzKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CmluZGV4IGY4YjI0ZGYuLjc2YmM2NTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNDEsMTggKzI0MSwyMCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHROYW1lc3Bh
Y2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1ldGhvZHMgYW5kIGRhdGEKLSAgICAgICAgdW5z
aWduZWQgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5
RW5kT2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcHJvcGVydHlFbmRPZmZzZXQ7CisgICAgICAgIFNvdXJjZVJhbmdlIG1f
c2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fcnVsZUJvZHlSYW5nZTsK
KyAgICAgICAgU291cmNlUmFuZ2UgbV9wcm9wZXJ0eVJhbmdlOwogICAgICAgICBTdHlsZVJ1bGVS
YW5nZU1hcCogbV9ydWxlUmFuZ2VNYXA7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURh
dGE+IG1fY3VycmVudFN0eWxlRGF0YTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0U3Rh
cnQoKTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0RW5kKCk7CiAgICAgICAgIHZvaWQg
bWFya1J1bGVCb2R5U3RhcnQoKTsKICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlFbmQoKTsKICAg
ICAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0
eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0gICAg
ICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkgeyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBt
X3J1bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQotICAgICAgICB2b2lkIHJlc2V0UHJvcGVydHlNYXJr
cygpIHsgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ID0gbV9wcm9wZXJ0eUVuZE9mZnNldCA9IFVJTlRf
TUFYOyB9CisgICAgICAgIHZvaWQgcmVzZXRTZWxlY3Rvckxpc3RNYXJrcygpIHsgbV9zZWxlY3Rv
ckxpc3RSYW5nZS5zdGFydCA9IG1fc2VsZWN0b3JMaXN0UmFuZ2UuZW5kID0gMDsgfQorICAgICAg
ICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9y
dWxlQm9keVJhbmdlLmVuZCA9IDA7IH0KKyAgICAgICAgdm9pZCByZXNldFByb3BlcnR5TWFya3Mo
KSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1fcHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01B
WDsgfQogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5bHZhbCk7CiAgICAgICAgIGludCB0b2tlbigp
IHsgcmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVDaGFyKiB0ZXh0KGludCogbGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCmluZGV4IDE2MjgwMzEuLmViOWMyYzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcApAQCAtNTQsMTMgKzU0LDYgQEAgU291
cmNlUmFuZ2U6OlNvdXJjZVJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7CiB9
CiAKLVNvdXJjZVJhbmdlJiBTb3VyY2VSYW5nZTo6b3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdl
JiBvdGhlcikKLXsKLSAgICB0aGlzLT5zdGFydCA9IG90aGVyLnN0YXJ0OwotICAgIHRoaXMtPmVu
ZCA9IG90aGVyLmVuZDsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIENTU1Byb3BlcnR5U291cmNl
RGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgcGFyc2VkT2ssIGNvbnN0IFNvdXJjZVJh
bmdlJiByYW5nZSkKICAgICA6IG5hbWUobmFtZSkKICAgICAsIHZhbHVlKHZhbHVlKQpAQCAtODgs
MTYgKzgxLDYgQEAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEo
KQogewogfQogCi1DU1NQcm9wZXJ0eVNvdXJjZURhdGEmIENTU1Byb3BlcnR5U291cmNlRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpCi17Ci0gICAgbmFt
ZSA9IG90aGVyLm5hbWU7Ci0gICAgdmFsdWUgPSBvdGhlci52YWx1ZTsKLSAgICBpbXBvcnRhbnQg
PSBvdGhlci5pbXBvcnRhbnQ7Ci0gICAgcGFyc2VkT2sgPSBvdGhlci5wYXJzZWRPazsKLSAgICBy
YW5nZSA9IG90aGVyLnJhbmdlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogU3RyaW5nIENTU1By
b3BlcnR5U291cmNlRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBlbXB0eVZhbHVlLCAoImUiKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5oCmluZGV4IGJlYWU5ZDAuLmFjNTU0MTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5U291cmNlRGF0YS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIENTU1N0eWxlUnVsZTsKIHN0cnVjdCBTb3Vy
Y2VSYW5nZSB7CiAgICAgU291cmNlUmFuZ2UoKTsKICAgICBTb3VyY2VSYW5nZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKTsKLSAgICBTb3VyY2VSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFNv
dXJjZVJhbmdlJiBvdGhlcik7CiAKICAgICB1bnNpZ25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBl
bmQ7CkBAIC01Niw5ICs1NSw3IEBAIHN0cnVjdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEgewogICAg
IENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBhcnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYg
cmFuZ2UpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKTsKLSAgICBBTFdBWVNf
SU5MSU5FIH5DU1NQcm9wZXJ0eVNvdXJjZURhdGEoKSB7IH0KIAotICAgIENTU1Byb3BlcnR5U291
cmNlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwog
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
IApAQCAtNzksNiArNzYsMTAgQEAgc3RydWN0IENTU1N0eWxlU291cmNlRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4gewogICAgICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENTU1N0eWxlU291cmNlRGF0YSgpKTsKICAgICB9CiAKKyAgICAvLyBbT3B0aW9uYWxdIFJh
bmdlIG9mIHRoZSBzZWxlY3RvciBsaXN0IGluIHRoZSBlbmNsb3Npbmcgc291cmNlLgorICAgIC8v
IElmIHRoZSBzdHlsZSBpcyBhIHB1cmUgZGVjbGFyYXRpb24sIHRoZSByYW5nZSBpcyAoMCwgMCku
CisgICAgU291cmNlUmFuZ2Ugc2VsZWN0b3JMaXN0UmFuZ2U7CisKICAgICAvLyBSYW5nZSBvZiB0
aGUgc3R5bGUgdGV4dCBpbiB0aGUgZW5jbG9zaW5nIHNvdXJjZS4KICAgICBTb3VyY2VSYW5nZSBz
dHlsZUJvZHlSYW5nZTsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VEYXRhPiBwcm9wZXJ0
eURhdGE7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69031</attachid>
            <date>2010-09-28 01:29:27 -0700</date>
            <delta_ts>2010-10-05 09:07:43 -0700</delta_ts>
            <desc>[PATCH] Fix selector list end detection</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>10512</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzU4MTBjMC4uMGQxMmI5NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwzMSBAQAogMjAxMC0wOS0yNyAgQWxleGFuZGVyIFBh
dmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIENTU1BhcnNlcjogRW5hYmxlIHJ1bGUgc2VsZWN0b3Igc291
cmNlIHJhbmdlIGV4dHJhY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTQ2MzY3CisKKyAgICAgICAgU29tZSBjb2RlIHJlbW92YWwgd2FzIHN1Z2dl
c3RlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNT
U1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZSk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RTdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RFbmQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlQm9keUVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQ
YXJzZXI6Om1hcmtQcm9wZXJ0eVN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
bWFya1Byb3BlcnR5RW5kKToKKyAgICAgICAgKiBjc3MvQ1NTUGFyc2VyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0U2VsZWN0b3JMaXN0TWFya3MpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTUGFyc2VyOjpyZXNldFJ1bGVCb2R5TWFya3MpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUGFyc2VyOjpyZXNldFByb3BlcnR5TWFya3MpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0
eVNvdXJjZURhdGEuY3BwOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaDoK
KworMjAxMC0wOS0yNyAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgor
CiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCiAKICAgICAgICAgSW1wbGVtZW50IENT
U1N0eWxlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NT
U0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEz
OWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTR3JhbW1hci55CkBAIC00MDgsNyArNDA4LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFs
aWRfcnVsZToKLSAgICBydWxlc2V0CisgICAgYmVmb3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAg
ICAgICQkID0gJDI7CisgICAgfQogICB8IG1lZGlhCiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpA
QCAtOTEwLDggKzkxMiwyMiBAQCBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAg
fQogICA7CiAKK2JlZm9yZV9ydWxlc2V0OgorICAgIC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NT
UGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+
bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCk7CisgICAgfQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5p
bmdfYnJhY2U6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0
aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0
RW5kKCk7CisgICAgfQorICA7CisKIHJ1bGVzZXQ6Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFj
ZSB7CisgICAgc2VsZWN0b3JfbGlzdCBiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXli
ZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNl
IHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVTdHlsZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3Bw
CmluZGV4IDg2YmNkMGQuLmZjYmJkM2YgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcApAQCAtMTQ2LDEwICsxNDYsOSBA
QCBDU1NQYXJzZXI6OkNTU1BhcnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0Zv
bnRGYWNlT25seVZhbHVlcyhmYWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NT
UnVsZShmYWxzZSkKICAgICAsIG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1f
cnVsZUJvZHlTdGFydE9mZnNldCgwKQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAg
ICwgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9m
ZnNldChVSU5UX01BWCkKKyAgICAsIG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1f
cnVsZUJvZHlSYW5nZSgwLCAwKQorICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5U
X01BWCkKICAgICAsIG1fcnVsZVJhbmdlTWFwKDApCiAgICAgLCBtX2N1cnJlbnRTdHlsZURhdGEo
MCkKICAgICAsIG1fZGF0YSgwKQpAQCAtNTQ4MCwxMSArNTQ3OSwxMyBAQCBDU1NSdWxlKiBDU1NQ
YXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQog
ICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwogICAg
ICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRT
dHlsZURhdGEpOwotICAgICAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlSYW5n
ZSA9IFNvdXJjZVJhbmdlKG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9mZnNl
dCk7CisgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0g
bV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5
bGVCb2R5UmFuZ2UgPSBtX3J1bGVCb2R5UmFuZ2U7CiAgICAgICAgICAgICBtX3J1bGVSYW5nZU1h
cC0+c2V0KHJlc3VsdCwgbV9jdXJyZW50U3R5bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRTdHlsZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAg
ICAgICB9CiAgICAgfQorICAgIHJlc2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1
bGVCb2R5TWFya3MoKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtNTczMywyNiArNTczNCw0NCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVj
dG9yTGluZUFuZFBvc2l0aW9uKCkKICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lk
IENTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlz
dFJhbmdlLnN0YXJ0ID0geXl0ZXh0IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFy
a1NlbGVjdG9yTGlzdEVuZCgpCit7CisgICAgaWYgKCFtX2N1cnJlbnRTdHlsZURhdGEpCisgICAg
ICAgIHJldHVybjsKKyAgICBVQ2hhciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICB3aGlsZSAobGlz
dEVuZCA+IG1fZGF0YSArIDEpIHsKKyAgICAgICAgaWYgKGlzQ1NTV2hpdGVzcGFjZSgqKGxpc3RF
bmQgLSAxKSkpCisgICAgICAgICAgICAtLWxpc3RFbmQ7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLmVuZCA9IGxpc3RFbmQg
LSBtX2RhdGE7Cit9CisKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUJvZHlTdGFydCgpCiB7CiAg
ICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0ZXh0ID09
ICd7JykKICAgICAgICAgKytvZmZzZXQ7IC8vIFNraXAgdGhlIHJ1bGUgYm9keSBvcGVuaW5nIGJy
YWNlLgotICAgIGlmIChvZmZzZXQgPiBtX3J1bGVCb2R5U3RhcnRPZmZzZXQpCi0gICAgICAgIG1f
cnVsZUJvZHlTdGFydE9mZnNldCA9IG9mZnNldDsKKyAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9k
eVJhbmdlLnN0YXJ0KQorICAgICAgICBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQgPSBvZmZzZXQ7CiB9
CiAKIHZvaWQgQ1NTUGFyc2VyOjptYXJrUnVsZUJvZHlFbmQoKQogewogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IHl5dGV4dCAtIG1fZGF0YTsKLSAgICBpZiAob2Zmc2V0ID4gbV9ydWxlQm9keUVuZE9m
ZnNldCkKLSAgICAgICAgbV9ydWxlQm9keUVuZE9mZnNldCA9IG9mZnNldDsKKyAgICBpZiAob2Zm
c2V0ID4gbV9ydWxlQm9keVJhbmdlLmVuZCkKKyAgICAgICAgbV9ydWxlQm9keVJhbmdlLmVuZCA9
IG9mZnNldDsKIH0KIAogdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eVN0YXJ0KCkKIHsKLSAg
ICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2RhdGE7Ci0gICAgbV9wcm9wZXJ0eVN0YXJ0
T2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IHl5dGV4dCAtIG1f
ZGF0YTsKIH0KIAogdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0
YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkKQEAgLTU3NjAsMTEgKzU3NzksMTEgQEAg
dm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJv
b2wgaXNQcm9wZXJ0eVBhcnNlZCkKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBtX2Rh
dGE7CiAgICAgaWYgKCp5eXRleHQgPT0gJzsnKSAvLyBJbmNsdWRlIHNlbWljb2xvbiBpbnRvIHRo
ZSBwcm9wZXJ0eSB0ZXh0LgogICAgICAgICArK29mZnNldDsKLSAgICBtX3Byb3BlcnR5RW5kT2Zm
c2V0ID0gb2Zmc2V0OwotICAgIGlmIChtX3Byb3BlcnR5U3RhcnRPZmZzZXQgIT0gVUlOVF9NQVgg
JiYgbV9jdXJyZW50U3R5bGVEYXRhKSB7CisgICAgbV9wcm9wZXJ0eVJhbmdlLmVuZCA9IG9mZnNl
dDsKKyAgICBpZiAobV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ICE9IFVJTlRfTUFYICYmIG1fY3VycmVu
dFN0eWxlRGF0YSkgewogICAgICAgICAvLyBUaGlzIHN0dWZmIGlzIG9ubHkgZXhlY3V0ZWQgd2hl
biB0aGUgc3R5bGUgZGF0YSByZXRyaWV2YWwgaXMgcmVxdWVzdGVkIGJ5IGNsaWVudC4KLSAgICAg
ICAgY29uc3QgdW5zaWduZWQgc3RhcnQgPSBtX3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAgICAg
IGNvbnN0IHVuc2lnbmVkIGVuZCA9IG1fcHJvcGVydHlFbmRPZmZzZXQ7CisgICAgICAgIGNvbnN0
IHVuc2lnbmVkIHN0YXJ0ID0gbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0OworICAgICAgICBjb25zdCB1
bnNpZ25lZCBlbmQgPSBtX3Byb3BlcnR5UmFuZ2UuZW5kOwogICAgICAgICBBU1NFUlQoc3RhcnQg
PCBlbmQpOwogICAgICAgICBTdHJpbmcgcHJvcGVydHlTdHJpbmcgPSBTdHJpbmcobV9kYXRhICsg
c3RhcnQsIGVuZCAtIHN0YXJ0KS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgaWYgKHByb3Bl
cnR5U3RyaW5nLmVuZHNXaXRoKCI7IiwgdHJ1ZSkpCkBAIC01Nzc3LDcgKzU3OTYsNyBAQCB2b2lk
IENTU1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBp
c1Byb3BlcnR5UGFyc2VkKQogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwcm9wZXJ0eVN0cmluZy5z
dWJzdHJpbmcoY29sb25JbmRleCArIDEsIHByb3BlcnR5U3RyaW5nLmxlbmd0aCgpKS5zdHJpcFdo
aXRlU3BhY2UoKTsKICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZlIHRv
IHRoZSBkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQuCiAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0
YS0+cHJvcGVydHlEYXRhLmFwcGVuZCgKLSAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0
YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNl
UmFuZ2UobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0LCBtX3By
b3BlcnR5RW5kT2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KSkpOworICAgICAgICAgICAg
Q1NTUHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIHZhbHVlLCBpc0ltcG9ydGFudEZvdW5kLCBpc1By
b3BlcnR5UGFyc2VkLCBTb3VyY2VSYW5nZShzdGFydCAtIG1fcnVsZUJvZHlSYW5nZS5zdGFydCwg
ZW5kIC0gbV9ydWxlQm9keVJhbmdlLnN0YXJ0KSkpOwogICAgIH0KICAgICByZXNldFByb3BlcnR5
TWFya3MoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIvV2ViQ29y
ZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggZjhiMjRkZi4uNzZiYzY1NCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKQEAgLTI0
MSwxOCArMjQxLDIwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgQXRvbWljU3RyaW5n
IG1fZGVmYXVsdE5hbWVzcGFjZTsKIAogICAgICAgICAvLyB0b2tlbml6ZXIgbWV0aG9kcyBhbmQg
ZGF0YQotICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5U3RhcnRPZmZzZXQ7Ci0gICAgICAgIHVu
c2lnbmVkIG1fcnVsZUJvZHlFbmRPZmZzZXQ7Ci0gICAgICAgIHVuc2lnbmVkIG1fcHJvcGVydHlT
dGFydE9mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbV9wcm9wZXJ0eUVuZE9mZnNldDsKKyAgICAg
ICAgU291cmNlUmFuZ2UgbV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAgICAgICAgU291cmNlUmFuZ2Ug
bV9ydWxlQm9keVJhbmdlOworICAgICAgICBTb3VyY2VSYW5nZSBtX3Byb3BlcnR5UmFuZ2U7CiAg
ICAgICAgIFN0eWxlUnVsZVJhbmdlTWFwKiBtX3J1bGVSYW5nZU1hcDsKICAgICAgICAgUmVmUHRy
PENTU1N0eWxlU291cmNlRGF0YT4gbV9jdXJyZW50U3R5bGVEYXRhOworICAgICAgICB2b2lkIG1h
cmtTZWxlY3Rvckxpc3RTdGFydCgpOworICAgICAgICB2b2lkIG1hcmtTZWxlY3Rvckxpc3RFbmQo
KTsKICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtS
dWxlQm9keUVuZCgpOwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0eVN0YXJ0KCk7CiAgICAgICAg
IHZvaWQgbWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3Bl
cnR5UGFyc2VkKTsKLSAgICAgICAgdm9pZCByZXNldFJ1bGVCb2R5TWFya3MoKSB7IG1fcnVsZUJv
ZHlTdGFydE9mZnNldCA9IG1fcnVsZUJvZHlFbmRPZmZzZXQgPSAwOyB9Ci0gICAgICAgIHZvaWQg
cmVzZXRQcm9wZXJ0eU1hcmtzKCkgeyBtX3Byb3BlcnR5U3RhcnRPZmZzZXQgPSBtX3Byb3BlcnR5
RW5kT2Zmc2V0ID0gVUlOVF9NQVg7IH0KKyAgICAgICAgdm9pZCByZXNldFNlbGVjdG9yTGlzdE1h
cmtzKCkgeyBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0ID0gbV9zZWxlY3Rvckxpc3RSYW5nZS5l
bmQgPSAwOyB9CisgICAgICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkgeyBtX3J1bGVCb2R5
UmFuZ2Uuc3RhcnQgPSBtX3J1bGVCb2R5UmFuZ2UuZW5kID0gMDsgfQorICAgICAgICB2b2lkIHJl
c2V0UHJvcGVydHlNYXJrcygpIHsgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0gbV9wcm9wZXJ0eVJh
bmdlLmVuZCA9IFVJTlRfTUFYOyB9CiAgICAgICAgIGludCBsZXgodm9pZCogeXlsdmFsKTsKICAg
ICAgICAgaW50IHRva2VuKCkgeyByZXR1cm4geXlUb2s7IH0KICAgICAgICAgVUNoYXIqIHRleHQo
aW50KiBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VE
YXRhLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKaW5kZXggMTYy
ODAzMS4uZWI5YzJjMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VE
YXRhLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCkBAIC01
NCwxMyArNTQsNiBAQCBTb3VyY2VSYW5nZTo6U291cmNlUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVu
c2lnbmVkIGVuZCkKIHsKIH0KIAotU291cmNlUmFuZ2UmIFNvdXJjZVJhbmdlOjpvcGVyYXRvcj0o
Y29uc3QgU291cmNlUmFuZ2UmIG90aGVyKQotewotICAgIHRoaXMtPnN0YXJ0ID0gb3RoZXIuc3Rh
cnQ7Ci0gICAgdGhpcy0+ZW5kID0gb3RoZXIuZW5kOwotICAgIHJldHVybiAqdGhpczsKLX0KLQog
Q1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBwYXJzZWRP
aywgY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlKQogICAgIDogbmFtZShuYW1lKQogICAgICwgdmFs
dWUodmFsdWUpCkBAIC04OCwxNiArODEsNiBAQCBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OkNTU1By
b3BlcnR5U291cmNlRGF0YSgpCiB7CiB9CiAKLUNTU1Byb3BlcnR5U291cmNlRGF0YSYgQ1NTUHJv
cGVydHlTb3VyY2VEYXRhOjpvcGVyYXRvcj0oY29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBv
dGhlcikKLXsKLSAgICBuYW1lID0gb3RoZXIubmFtZTsKLSAgICB2YWx1ZSA9IG90aGVyLnZhbHVl
OwotICAgIGltcG9ydGFudCA9IG90aGVyLmltcG9ydGFudDsKLSAgICBwYXJzZWRPayA9IG90aGVy
LnBhcnNlZE9rOwotICAgIHJhbmdlID0gb3RoZXIucmFuZ2U7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCiBTdHJpbmcgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGVtcHR5VmFsdWUsICgiZSIpKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5oIGIvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmgKaW5kZXggYmVhZTlkMC4uYWM1NTQxMSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmgKKysrIGIvV2ViQ29yZS9jc3Mv
Q1NTUHJvcGVydHlTb3VyY2VEYXRhLmgKQEAgLTQ0LDcgKzQ0LDYgQEAgY2xhc3MgQ1NTU3R5bGVS
dWxlOwogc3RydWN0IFNvdXJjZVJhbmdlIHsKICAgICBTb3VyY2VSYW5nZSgpOwogICAgIFNvdXJj
ZVJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpOwotICAgIFNvdXJjZVJhbmdlJiBv
cGVyYXRvcj0oY29uc3QgU291cmNlUmFuZ2UmIG90aGVyKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0
OwogICAgIHVuc2lnbmVkIGVuZDsKQEAgLTU2LDkgKzU1LDcgQEAgc3RydWN0IENTU1Byb3BlcnR5
U291cmNlRGF0YSB7CiAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgcGFyc2VkT2ssIGNv
bnN0IFNvdXJjZVJhbmdlJiByYW5nZSk7CiAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0
IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0
YSgpOwotICAgIEFMV0FZU19JTkxJTkUgfkNTU1Byb3BlcnR5U291cmNlRGF0YSgpIHsgfQogCi0g
ICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBvcGVyYXRvcj0oY29uc3QgQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhJiBvdGhlcik7CiAgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CiAgICAgdW5zaWdu
ZWQgaGFzaCgpIGNvbnN0OwogCkBAIC03OSw2ICs3NiwxMCBAQCBzdHJ1Y3QgQ1NTU3R5bGVTb3Vy
Y2VEYXRhIDogcHVibGljIFJlZkNvdW50ZWQ8Q1NTU3R5bGVTb3VyY2VEYXRhPiB7CiAgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQ1NTU3R5bGVTb3VyY2VEYXRhKCkpOwogICAgIH0KIAorICAg
IC8vIFtPcHRpb25hbF0gUmFuZ2Ugb2YgdGhlIHNlbGVjdG9yIGxpc3QgaW4gdGhlIGVuY2xvc2lu
ZyBzb3VyY2UuCisgICAgLy8gSWYgdGhlIHN0eWxlIGlzIGEgcHVyZSBkZWNsYXJhdGlvbiwgdGhl
IHJhbmdlIGlzICgwLCAwKS4KKyAgICBTb3VyY2VSYW5nZSBzZWxlY3Rvckxpc3RSYW5nZTsKKwog
ICAgIC8vIFJhbmdlIG9mIHRoZSBzdHlsZSB0ZXh0IGluIHRoZSBlbmNsb3Npbmcgc291cmNlLgog
ICAgIFNvdXJjZVJhbmdlIHN0eWxlQm9keVJhbmdlOwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNv
dXJjZURhdGE+IHByb3BlcnR5RGF0YTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69794</attachid>
            <date>2010-10-05 09:07:43 -0700</date>
            <delta_ts>2010-10-05 10:14:25 -0700</delta_ts>
            <desc>[PATCH] Rebase + small API change</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>19412</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDAwZmEzZDgzODdlOWMyMjcyM2NmNWQ5OTUzZWIyNTk5ZjljODYwMzQKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgU2VwIDIz
IDIxOjExOjQ1IDIwMTAgKzA0MDAKCiAgICBGaXggc2VsZWN0b3IgaGFuZGxpbmcKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGQ5NjAyZGEu
Ljk0MTA2NjUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMDUgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDU1NQYXJzZXI6IEVuYWJsZSBydWxlIHNlbGVjdG9yIHNvdXJjZSByYW5n
ZSBleHRyYWN0aW9uLgorICAgICAgICBBUEkgbW9kaWZpY2F0aW9uIGZvbGxvd2VkIGJ5IGNsaWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjM2
NworCisgICAgICAgIFNvbWUgY29kZSByZW1vdmFsIHN1Z2dlc3RlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9y
TGlzdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlz
dEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlQm9keVN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1J1bGVCb2R5RW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1Byb3BlcnR5U3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmVzZXRTZWxlY3Rvckxpc3RNYXJrcyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UnVsZUJvZHlNYXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UHJvcGVydHlNYXJrcyk6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
U291cmNlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlU291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpn
ZXRTdHlsZVNvdXJjZURhdGEpOgorCiAyMDEwLTEwLTAzICBLZW50IFRhbXVyYSAgPHRrZW50QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBidWlsZCBmaXggZm9yIHI2ODk5Ni4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dy
YW1tYXIueQppbmRleCBjNTVmOTk4Li5jMDEzOWEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NHcmFtbWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC00MDgsNyArNDA4
LDkgQEAgcnVsZV9saXN0OgogIDsKIAogdmFsaWRfcnVsZToKLSAgICBydWxlc2V0CisgICAgYmVm
b3JlX3J1bGVzZXQgcnVsZXNldCB7CisgICAgICAgICQkID0gJDI7CisgICAgfQogICB8IG1lZGlh
CiAgIHwgcGFnZQogICB8IGZvbnRfZmFjZQpAQCAtOTEwLDggKzkxMiwyMiBAQCBtYXliZV9zcGFj
ZV9iZWZvcmVfZGVjbGFyYXRpb246CiAgICAgfQogICA7CiAKK2JlZm9yZV9ydWxlc2V0OgorICAg
IC8qIGVtcHR5ICovIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCk7CisgICAg
fQorICA7CisKK2JlZm9yZV9ydWxlX29wZW5pbmdfYnJhY2U6CisgICAgLyogZW1wdHkgKi8gewor
ICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwor
ICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0RW5kKCk7CisgICAgfQorICA7CisKIHJ1bGVzZXQ6
Ci0gICAgc2VsZWN0b3JfbGlzdCAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uIGRl
Y2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CisgICAgc2VsZWN0b3JfbGlzdCBiZWZvcmVf
cnVsZV9vcGVuaW5nX2JyYWNlICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVjbGFyYXRpb24gZGVj
bGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3Rh
dGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSBwLT5jcmVhdGVTdHls
ZVJ1bGUoJDEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDZjMjExMGYuLjQyYzRjYjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcApAQCAtMTQzLDEyICsxNDMsMTEgQEAgQ1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBz
dHJpY3RQYXJzaW5nKQogICAgICwgbV9oYXNGb250RmFjZU9ubHlWYWx1ZXMoZmFsc2UpCiAgICAg
LCBtX2hhZFN5bnRhY3RpY2FsbHlWYWxpZENTU1J1bGUoZmFsc2UpCiAgICAgLCBtX2RlZmF1bHRO
YW1lc3BhY2Uoc3RhckF0b20pCi0gICAgLCBtX3J1bGVCb2R5U3RhcnRPZmZzZXQoMCkKLSAgICAs
IG1fcnVsZUJvZHlFbmRPZmZzZXQoMCkKLSAgICAsIG1fcHJvcGVydHlTdGFydE9mZnNldChVSU5U
X01BWCkKLSAgICAsIG1fcHJvcGVydHlFbmRPZmZzZXQoVUlOVF9NQVgpCisgICAgLCBtX3NlbGVj
dG9yTGlzdFJhbmdlKDAsIDApCisgICAgLCBtX3J1bGVCb2R5UmFuZ2UoMCwgMCkKKyAgICAsIG1f
cHJvcGVydHlSYW5nZShVSU5UX01BWCwgVUlOVF9NQVgpCiAgICAgLCBtX3J1bGVSYW5nZU1hcCgw
KQotICAgICwgbV9jdXJyZW50U3R5bGVEYXRhKDApCisgICAgLCBtX2N1cnJlbnRSdWxlRGF0YSgw
KQogICAgICwgbV9kYXRhKDApCiAgICAgLCB5eV9zdGFydCgxKQogICAgICwgbV9saW5lTnVtYmVy
KDApCkBAIC0yMjgsMTQgKzIyNywxNyBAQCB2b2lkIENTU1BhcnNlcjo6cGFyc2VTaGVldChDU1NT
dHlsZVNoZWV0KiBzaGVldCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGludCBzdGFydAogICAgIG1f
c3R5bGVTaGVldCA9IHNoZWV0OwogICAgIG1fZGVmYXVsdE5hbWVzcGFjZSA9IHN0YXJBdG9tOyAv
LyBSZXNldCB0aGUgZGVmYXVsdCBuYW1lc3BhY2UuCiAgICAgbV9ydWxlUmFuZ2VNYXAgPSBydWxl
UmFuZ2VNYXA7Ci0gICAgaWYgKHJ1bGVSYW5nZU1hcCkKKyAgICBpZiAocnVsZVJhbmdlTWFwKSB7
CisgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZSgp
OwogICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0
ZSgpOworICAgIH0KIAogICAgIG1fbGluZU51bWJlciA9IHN0YXJ0TGluZU51bWJlcjsKICAgICBz
ZXR1cFBhcnNlcigiIiwgc3RyaW5nLCAiIik7CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBt
X3J1bGVSYW5nZU1hcCA9IDA7CiAgICAgbV9jdXJyZW50U3R5bGVEYXRhID0gMDsKKyAgICBtX2N1
cnJlbnRSdWxlRGF0YSA9IDA7CiAgICAgbV9ydWxlID0gMDsKIH0KIApAQCAtMzYzLDggKzM2NSw3
IEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgh
bV9ydWxlUmFuZ2VNYXApCi0gICAgICAgIG1fY3VycmVudFN0eWxlRGF0YSA9IDA7CisgICAgbV9j
dXJyZW50U3R5bGVEYXRhID0gMDsKICAgICByZXR1cm4gb2s7CiB9CiAKQEAgLTU0ODUsMTIgKzU0
ODYsMTYgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVTdHlsZVJ1bGUoVmVjdG9yPENTU1Nl
bGVjdG9yKj4qIHNlbGVjdG9ycykKICAgICAgICAgcmVzdWx0ID0gcnVsZS5nZXQoKTsKICAgICAg
ICAgbV9wYXJzZWRTdHlsZU9iamVjdHMuYXBwZW5kKHJ1bGUucmVsZWFzZSgpKTsKICAgICAgICAg
aWYgKG1fcnVsZVJhbmdlTWFwKSB7Ci0gICAgICAgICAgICBBU1NFUlQobV9jdXJyZW50U3R5bGVE
YXRhKTsKLSAgICAgICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5bGVCb2R5UmFuZ2UgPSBT
b3VyY2VSYW5nZShtX3J1bGVCb2R5U3RhcnRPZmZzZXQsIG1fcnVsZUJvZHlFbmRPZmZzZXQpOwot
ICAgICAgICAgICAgbV9ydWxlUmFuZ2VNYXAtPnNldChyZXN1bHQsIG1fY3VycmVudFN0eWxlRGF0
YS5yZWxlYXNlKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVudFN0eWxlRGF0YSAmJiBt
X2N1cnJlbnRSdWxlRGF0YSk7CisgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnN0eWxl
Qm9keVJhbmdlID0gbV9ydWxlQm9keVJhbmdlOworICAgICAgICAgICAgbV9jdXJyZW50UnVsZURh
dGEtPnNlbGVjdG9yTGlzdFJhbmdlID0gbV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAgICAgICAgICAg
IG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEgPSBtX2N1cnJlbnRTdHlsZURhdGEu
cmVsZWFzZSgpOworICAgICAgICAgICAgbV9ydWxlUmFuZ2VNYXAtPnNldChyZXN1bHQsIG1fY3Vy
cmVudFJ1bGVEYXRhLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEg
PSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgbV9jdXJyZW50UnVs
ZURhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIH0KICAgICB9Cisg
ICAgcmVzZXRTZWxlY3Rvckxpc3RNYXJrcygpOwogICAgIHJlc2V0UnVsZUJvZHlNYXJrcygpOwog
ICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC01NzM5LDI2ICs1
NzQ0LDQ0IEBAIHZvaWQgQ1NTUGFyc2VyOjp1cGRhdGVMYXN0U2VsZWN0b3JMaW5lQW5kUG9zaXRp
b24oKQogICAgIG1hcmtSdWxlQm9keVN0YXJ0KCk7CiB9CiAKK3ZvaWQgQ1NTUGFyc2VyOjptYXJr
U2VsZWN0b3JMaXN0U3RhcnQoKQoreworICAgIG1fc2VsZWN0b3JMaXN0UmFuZ2Uuc3RhcnQgPSB5
eXRleHQgLSBtX2RhdGE7Cit9CisKK3ZvaWQgQ1NTUGFyc2VyOjptYXJrU2VsZWN0b3JMaXN0RW5k
KCkKK3sKKyAgICBpZiAoIW1fY3VycmVudFJ1bGVEYXRhKQorICAgICAgICByZXR1cm47CisgICAg
VUNoYXIqIGxpc3RFbmQgPSB5eXRleHQ7CisgICAgd2hpbGUgKGxpc3RFbmQgPiBtX2RhdGEgKyAx
KSB7CisgICAgICAgIGlmIChpc0NTU1doaXRlc3BhY2UoKihsaXN0RW5kIC0gMSkpKQorICAgICAg
ICAgICAgLS1saXN0RW5kOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAgICB9
CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQgPSBsaXN0RW5kIC0gbV9kYXRhOworfQorCiB2
b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3RhcnQoKQogewogICAgIHVuc2lnbmVkIG9mZnNl
dCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAoKnl5dGV4dCA9PSAneycpCiAgICAgICAgICsr
b2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJvZHkgb3BlbmluZyBicmFjZS4KLSAgICBpZiAob2Zm
c2V0ID4gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KQotICAgICAgICBtX3J1bGVCb2R5U3RhcnRPZmZz
ZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlSYW5nZS5zdGFydCkKKyAg
ICAgICAgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gb2Zmc2V0OwogfQogCiB2b2lkIENTU1BhcnNl
cjo6bWFya1J1bGVCb2R5RW5kKCkKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQgLSBt
X2RhdGE7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlFbmRPZmZzZXQpCi0gICAgICAgIG1f
cnVsZUJvZHlFbmRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlS
YW5nZS5lbmQpCisgICAgICAgIG1fcnVsZUJvZHlSYW5nZS5lbmQgPSBvZmZzZXQ7CiB9CiAKIHZv
aWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlTdGFydCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zmc2V0
ID0geXl0ZXh0IC0gbV9kYXRhOwotICAgIG1fcHJvcGVydHlTdGFydE9mZnNldCA9IG9mZnNldDsK
KyAgICBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSB5eXRleHQgLSBtX2RhdGE7CiB9CiAKIHZvaWQg
Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlz
UHJvcGVydHlQYXJzZWQpCkBAIC01NzY2LDExICs1Nzg5LDExIEBAIHZvaWQgQ1NTUGFyc2VyOjpt
YXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQYXJz
ZWQpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwogICAgIGlmICgqeXl0
ZXh0ID09ICc7JykgLy8gSW5jbHVkZSBzZW1pY29sb24gaW50byB0aGUgcHJvcGVydHkgdGV4dC4K
ICAgICAgICAgKytvZmZzZXQ7Ci0gICAgbV9wcm9wZXJ0eUVuZE9mZnNldCA9IG9mZnNldDsKLSAg
ICBpZiAobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ICE9IFVJTlRfTUFYICYmIG1fY3VycmVudFN0eWxl
RGF0YSkgeworICAgIG1fcHJvcGVydHlSYW5nZS5lbmQgPSBvZmZzZXQ7CisgICAgaWYgKG1fcHJv
cGVydHlSYW5nZS5zdGFydCAhPSBVSU5UX01BWCAmJiBtX2N1cnJlbnRTdHlsZURhdGEpIHsKICAg
ICAgICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRhdGEg
cmV0cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGllbnQuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVk
IHN0YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBl
bmQgPSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9
IG1fcHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kID0gbV9w
cm9wZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNTRVJUKHN0YXJ0IDwgZW5kKTsKICAgICAgICAg
U3RyaW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5nKG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFy
dCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVN0cmluZy5lbmRzV2l0
aCgiOyIsIHRydWUpKQpAQCAtNTc4Myw3ICs1ODA2LDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtQ
cm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkK
ICAgICAgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVydHlTdHJpbmcuc3Vic3RyaW5nKGNvbG9uSW5k
ZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgoKSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAg
ICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0byB0aGUgZGVjbGFyYXRpb24g
c3RhcnQgb2Zmc2V0LgogICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnByb3BlcnR5RGF0YS5h
cHBlbmQoCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgdmFsdWUsIGlz
SW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJzZWQsIFNvdXJjZVJhbmdlKG1fcHJvcGVydHlT
dGFydE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9wcm9wZXJ0eUVuZE9mZnNldCAt
IG1fcnVsZUJvZHlTdGFydE9mZnNldCkpKTsKKyAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNl
RGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291
cmNlUmFuZ2Uoc3RhcnQgLSBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQsIGVuZCAtIG1fcnVsZUJvZHlS
YW5nZS5zdGFydCkpKTsKICAgICB9CiAgICAgcmVzZXRQcm9wZXJ0eU1hcmtzKCk7CiB9CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5o
CmluZGV4IGY4YjI0ZGYuLjU4Zjc3ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNDEsMTggKzI0MSwyMSBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHROYW1lc3Bh
Y2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1ldGhvZHMgYW5kIGRhdGEKLSAgICAgICAgdW5z
aWduZWQgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3J1bGVCb2R5
RW5kT2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0gICAg
ICAgIHVuc2lnbmVkIG1fcHJvcGVydHlFbmRPZmZzZXQ7CisgICAgICAgIFNvdXJjZVJhbmdlIG1f
c2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fcnVsZUJvZHlSYW5nZTsK
KyAgICAgICAgU291cmNlUmFuZ2UgbV9wcm9wZXJ0eVJhbmdlOwogICAgICAgICBTdHlsZVJ1bGVS
YW5nZU1hcCogbV9ydWxlUmFuZ2VNYXA7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURh
dGE+IG1fY3VycmVudFN0eWxlRGF0YTsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRh
PiBtX2N1cnJlbnRSdWxlRGF0YTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0U3RhcnQo
KTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0RW5kKCk7CiAgICAgICAgIHZvaWQgbWFy
a1J1bGVCb2R5U3RhcnQoKTsKICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlFbmQoKTsKICAgICAg
ICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0eUVu
ZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0gICAgICAg
IHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkgeyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBtX3J1
bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQotICAgICAgICB2b2lkIHJlc2V0UHJvcGVydHlNYXJrcygp
IHsgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ID0gbV9wcm9wZXJ0eUVuZE9mZnNldCA9IFVJTlRfTUFY
OyB9CisgICAgICAgIHZvaWQgcmVzZXRTZWxlY3Rvckxpc3RNYXJrcygpIHsgbV9zZWxlY3Rvckxp
c3RSYW5nZS5zdGFydCA9IG1fc2VsZWN0b3JMaXN0UmFuZ2UuZW5kID0gMDsgfQorICAgICAgICB2
b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9ydWxl
Qm9keVJhbmdlLmVuZCA9IDA7IH0KKyAgICAgICAgdm9pZCByZXNldFByb3BlcnR5TWFya3MoKSB7
IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1fcHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01BWDsg
fQogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5bHZhbCk7CiAgICAgICAgIGludCB0b2tlbigpIHsg
cmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVDaGFyKiB0ZXh0KGludCogbGVuZ3RoKTsKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgYi9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCmluZGV4IDE2MjgwMzEuLmViOWMyYzEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKKysrIGIvV2ViQ29y
ZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcApAQCAtNTQsMTMgKzU0LDYgQEAgU291cmNl
UmFuZ2U6OlNvdXJjZVJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7CiB9CiAK
LVNvdXJjZVJhbmdlJiBTb3VyY2VSYW5nZTo6b3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdlJiBv
dGhlcikKLXsKLSAgICB0aGlzLT5zdGFydCA9IG90aGVyLnN0YXJ0OwotICAgIHRoaXMtPmVuZCA9
IG90aGVyLmVuZDsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIENTU1Byb3BlcnR5U291cmNlRGF0
YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgcGFyc2VkT2ssIGNvbnN0IFNvdXJjZVJhbmdl
JiByYW5nZSkKICAgICA6IG5hbWUobmFtZSkKICAgICAsIHZhbHVlKHZhbHVlKQpAQCAtODgsMTYg
KzgxLDYgQEAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKQog
ewogfQogCi1DU1NQcm9wZXJ0eVNvdXJjZURhdGEmIENTU1Byb3BlcnR5U291cmNlRGF0YTo6b3Bl
cmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpCi17Ci0gICAgbmFtZSA9
IG90aGVyLm5hbWU7Ci0gICAgdmFsdWUgPSBvdGhlci52YWx1ZTsKLSAgICBpbXBvcnRhbnQgPSBv
dGhlci5pbXBvcnRhbnQ7Ci0gICAgcGFyc2VkT2sgPSBvdGhlci5wYXJzZWRPazsKLSAgICByYW5n
ZSA9IG90aGVyLnJhbmdlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogU3RyaW5nIENTU1Byb3Bl
cnR5U291cmNlRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBlbXB0eVZhbHVlLCAoImUiKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0
YS5oCmluZGV4IGJlYWU5ZDAuLmRiODBkNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1By
b3BlcnR5U291cmNlRGF0YS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0
YS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIENTU1N0eWxlUnVsZTsKIHN0cnVjdCBTb3VyY2VS
YW5nZSB7CiAgICAgU291cmNlUmFuZ2UoKTsKICAgICBTb3VyY2VSYW5nZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgZW5kKTsKLSAgICBTb3VyY2VSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFNvdXJj
ZVJhbmdlJiBvdGhlcik7CiAKICAgICB1bnNpZ25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBlbmQ7
CkBAIC01Niw5ICs1NSw3IEBAIHN0cnVjdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEgewogICAgIENT
U1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBhcnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYgcmFu
Z2UpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJjZURh
dGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKTsKLSAgICBBTFdBWVNfSU5M
SU5FIH5DU1NQcm9wZXJ0eVNvdXJjZURhdGEoKSB7IH0KIAotICAgIENTU1Byb3BlcnR5U291cmNl
RGF0YSYgb3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwogICAg
IFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsKIApA
QCAtODMsNyArODAsMTggQEAgc3RydWN0IENTU1N0eWxlU291cmNlRGF0YSA6IHB1YmxpYyBSZWZD
b3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4gewogICAgIFNvdXJjZVJhbmdlIHN0eWxlQm9keVJh
bmdlOwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+IHByb3BlcnR5RGF0YTsKIH07
Ci10eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlU291cmNlRGF0
YT4gPiBTdHlsZVJ1bGVSYW5nZU1hcDsKKworc3RydWN0IENTU1J1bGVTb3VyY2VEYXRhIDogcHVi
bGljIFJlZkNvdW50ZWQ8Q1NTUnVsZVNvdXJjZURhdGE+IHsKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxDU1NSdWxlU291cmNlRGF0YT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQ1NTUnVsZVNvdXJjZURhdGEoKSk7CisgICAgfQorCisgICAgLy8gUmFuZ2Ugb2Yg
dGhlIHNlbGVjdG9yIGxpc3QgaW4gdGhlIGVuY2xvc2luZyBzb3VyY2UuCisgICAgU291cmNlUmFu
Z2Ugc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgUmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4gc3R5
bGVTb3VyY2VEYXRhOworfTsKK3R5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVJ1bGUqLCBSZWZQdHI8
Q1NTUnVsZVNvdXJjZURhdGE+ID4gU3R5bGVSdWxlUmFuZ2VNYXA7CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3Rv
cmUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuY3BwCmluZGV4IGIw
MTk4NjAuLjA3YTVjMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U1N0b3JlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5jcHAK
QEAgLTE1OCw3ICsxNTgsNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ1NTU3RvcmU6OmlubGluZVN0eWxl
U2hlZXRUZXh0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAKIAogLy8gQWxsIHJhbmdlcyBh
cmU6IFtzdGFydDsgZW5kKSAoc3RhcnQgLSBpbmNsdXNpdmUsIGVuZCAtIGV4Y2x1c2l2ZSkuCi1i
b29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiByZXN1bHQpCitib29sIElu
c3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiogcmVzdWx0KQogewogICAgIGlmICghc3R5
bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2NiwxMSArMTY2LDEzIEBAIGJvb2wgSW5z
cGVjdG9yQ1NTU3RvcmU6OmdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZSwgUmVmUHRyPENTCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGlubGluZVN0eWxlRWxlbWVu
dChzdHlsZSk7CiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgLy8gSW5saW5lOiBzdHlsZT0i
Li4uIi4KKyAgICAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YSA9
IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKICAgICAgICAgUmVmUHRyPENTU1N0eWxlU291
cmNlRGF0YT4gc3R5bGVTb3VyY2VEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsK
ICAgICAgICAgYm9vbCBzdWNjZXNzID0gZ2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMoZWxlbWVudCwg
JnN0eWxlU291cmNlRGF0YSk7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgKnJlc3VsdCA9IHN0eWxlU291cmNlRGF0YTsKKyAgICAgICAg
cnVsZVNvdXJjZURhdGEtPnN0eWxlU291cmNlRGF0YSA9IHN0eWxlU291cmNlRGF0YS5yZWxlYXNl
KCk7CisgICAgICAgICpyZXN1bHQgPSBydWxlU291cmNlRGF0YTsKICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgfQogCkBAIC0xNzgsNyArMTgwLDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NTdG9yZTo6
Z2V0U3R5bGVTb3VyY2VEYXRhKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBSZWZQdHI8Q1MK
ICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiA+KiByYW5nZXNWZWN0b3IgPSAwOworICAgIFZl
Y3RvcjxSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+ID4qIHJhbmdlc1ZlY3RvciA9IDA7CiAgICAg
U3R5bGVTaGVldFRvT2Zmc2V0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3N0eWxlU2hlZXRUb09mZnNl
dHMuZmluZChzdHlsZVNoZWV0KTsKICAgICBpZiAoaXQgPT0gbV9zdHlsZVNoZWV0VG9PZmZzZXRz
LmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gc3R5bGVTaGVldFRleHQoYmluZFN0eWxl
U2hlZXQoc3R5bGVTaGVldCkpOwpAQCAtMTg3LDcgKzE4OSw3IEBAIGJvb2wgSW5zcGVjdG9yQ1NT
U3RvcmU6OmdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgUmVm
UHRyPENTCiAgICAgICAgICAgICBDU1NQYXJzZXIgcDsKICAgICAgICAgICAgIFN0eWxlUnVsZVJh
bmdlTWFwIHJ1bGVSYW5nZU1hcDsKICAgICAgICAgICAgIHAucGFyc2VTaGVldChuZXdTdHlsZVNo
ZWV0LmdldCgpLCB0ZXh0LCAwLCAmcnVsZVJhbmdlTWFwKTsKLSAgICAgICAgICAgIHJhbmdlc1Zl
Y3RvciA9IG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4gPjsKKyAgICAgICAg
ICAgIHJhbmdlc1ZlY3RvciA9IG5ldyBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiA+
OwogICAgICAgICAgICAgZXh0cmFjdFJhbmdlcyhuZXdTdHlsZVNoZWV0LmdldCgpLCBydWxlUmFu
Z2VNYXAsIHJhbmdlc1ZlY3Rvcik7CiAgICAgICAgICAgICBtX3N0eWxlU2hlZXRUb09mZnNldHMu
c2V0KHN0eWxlU2hlZXQsIHJhbmdlc1ZlY3Rvcik7CiAgICAgICAgIH0KQEAgLTIxMSw3ICsyMTMs
NyBAQCBib29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JDU1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0LCBjb25zdCBTdHlsZVJ1bGVSYW5nZU1hcCYgcnVsZVJhbmdlTWFwLCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU291cmNlRGF0YT4gPiogcmFuZ2VzVmVjdG9yKQordm9pZCBJbnNwZWN0b3JDU1NT
dG9yZTo6ZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBTdHls
ZVJ1bGVSYW5nZU1hcCYgcnVsZVJhbmdlTWFwLCBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiA+KiByYW5nZXNWZWN0b3IpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVuZ3Ro
ID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBDU1NT
dHlsZVJ1bGUqIHJ1bGUgPSBhc0NTU1N0eWxlUnVsZShzdHlsZVNoZWV0LT5pdGVtKGkpKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oCmluZGV4IDliMzI5ZGYuLjI1YTlkMTUgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaApAQCAtNTUsNyArNTUsNyBAQCB0eXBl
ZGVmIEhhc2hNYXA8Q1NTU3R5bGVEZWNsYXJhdGlvbiosIGxvbmc+IFN0eWxlVG9JZE1hcDsKIHR5
cGVkZWYgSGFzaE1hcDxsb25nLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPiBJZFRvU3R5
bGVNYXA7CiB0eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgbG9uZz4gUnVsZVRvSWRNYXA7
CiB0eXBlZGVmIEhhc2hNYXA8bG9uZywgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiBJZFRvUnVsZU1h
cDsKLXR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVNoZWV0KiwgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNvdXJjZURhdGE+ID4qID4gU3R5bGVTaGVldFRvT2Zmc2V0c01hcDsKK3R5cGVkZWYgSGFzaE1h
cDxDU1NTdHlsZVNoZWV0KiwgVmVjdG9yPFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gPiogPiBT
dHlsZVNoZWV0VG9PZmZzZXRzTWFwOwogdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlU2hlZXQqLCBs
b25nPiBTdHlsZVNoZWV0VG9JZE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gPiBJZFRvU3R5bGVTaGVldE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBT
dHJpbmc+IElkVG9TdHlsZVNoZWV0VGV4dE1hcDsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGljOgog
ICAgIEluc3BlY3RvckNTU1N0b3JlKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRy
b2xsZXIpOwogICAgIH5JbnNwZWN0b3JDU1NTdG9yZSgpOwogICAgIHZvaWQgcmVzZXQoKTsKLSAg
ICBib29sIGdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPENT
U1N0eWxlU291cmNlRGF0YT4qIHJlc3VsdCk7CisgICAgYm9vbCBnZXRSdWxlU291cmNlRGF0YShD
U1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiogcmVzdWx0KTsK
ICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGxvbmcgc3R5bGVJZCk7CiAgICAg
Q1NTU3R5bGVTaGVldCogc3R5bGVTaGVldEZvcklkKGxvbmcgc3R5bGVTaGVldElkKTsKICAgICBD
U1NTdHlsZVJ1bGUqIHJ1bGVGb3JJZChsb25nIHN0eWxlUnVsZUlkKTsKQEAgLTg4LDcgKzg4LDcg
QEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShTdHls
ZUJhc2UqKTsKICAgICBTdHJpbmcgaW5saW5lU3R5bGVTaGVldFRleHQoQ1NTU3R5bGVTaGVldCop
OwogICAgIGJvb2wgcmVzb3VyY2VTdHlsZVNoZWV0VGV4dChDU1NTdHlsZVNoZWV0KiwgU3RyaW5n
KiByZXN1bHQpOwotICAgIHZvaWQgZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiwgY29uc3Qg
U3R5bGVSdWxlUmFuZ2VNYXAmLCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4gPiog
cmFuZ2VzVmVjdG9yKTsKKyAgICB2b2lkIGV4dHJhY3RSYW5nZXMoQ1NTU3R5bGVTaGVldCosIGNv
bnN0IFN0eWxlUnVsZVJhbmdlTWFwJiwgVmVjdG9yPFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4g
PiogcmFuZ2VzVmVjdG9yKTsKICAgICBib29sIGdldFN0eWxlQXR0cmlidXRlUmFuZ2VzKE5vZGUq
IHBhcmVudE5vZGUsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiByZXN1bHQpOwogCiAgICAg
U3R5bGVUb0lkTWFwIG1fc3R5bGVUb0lkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwCmluZGV4IGMxYzIxYjYuLjIzMTZmMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JET01BZ2VudC5jcHAKQEAgLTEyMjMsMTggKzEyMjMsMjUgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6Z2V0U3R5bGVTb3VyY2VEYXRhKGxvbmcgc3R5bGVJZCwgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4KICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGNzc1N0b3JlKCktPnN0eWxl
Rm9ySWQoc3R5bGVJZCk7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuOwotICAgIFJl
ZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6
OmNyZWF0ZSgpOwotICAgIGJvb2wgc3VjY2VzcyA9IGNzc1N0b3JlKCktPmdldFN0eWxlU291cmNl
RGF0YShzdHlsZSwgJnNvdXJjZURhdGEpOworICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4g
c291cmNlRGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKKyAgICBib29sIHN1Y2Nl
c3MgPSBjc3NTdG9yZSgpLT5nZXRSdWxlU291cmNlRGF0YShzdHlsZSwgJnNvdXJjZURhdGEpOwog
ICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBib2R5UmFuZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwog
ICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJib2R5UmFuZ2UiLCBib2R5UmFuZ2UpOwotICAgIGJvZHlS
YW5nZS0+c2V0TnVtYmVyKCJzdGFydCIsIHNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0
KTsKLSAgICBib2R5UmFuZ2UtPnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c3R5bGVCb2R5
UmFuZ2UuZW5kKTsKKyAgICBib2R5UmFuZ2UtPnNldE51bWJlcigic3RhcnQiLCBzb3VyY2VEYXRh
LT5zdHlsZVNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0KTsKKyAgICBib2R5UmFuZ2Ut
PnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5zdHlsZUJvZHlS
YW5nZS5lbmQpOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2VsZWN0b3JSYW5nZSA9
IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5zZXRPYmplY3QoInNlbGVj
dG9yUmFuZ2UiLCBzZWxlY3RvclJhbmdlKTsKKyAgICBzZWxlY3RvclJhbmdlLT5zZXROdW1iZXIo
InN0YXJ0Iiwgc291cmNlRGF0YS0+c2VsZWN0b3JMaXN0UmFuZ2Uuc3RhcnQpOworICAgIHNlbGVj
dG9yUmFuZ2UtPnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c2VsZWN0b3JMaXN0UmFuZ2Uu
ZW5kKTsKKwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVydHlSYW5nZXMgPSBJbnNw
ZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5zZXRBcnJheSgicHJvcGVydHlEYXRh
IiwgcHJvcGVydHlSYW5nZXMpOwotICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+JiBw
cm9wZXJ0eURhdGEgPSBzb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGE7CisgICAgVmVjdG9yPENTU1By
b3BlcnR5U291cmNlRGF0YT4mIHByb3BlcnR5RGF0YSA9IHNvdXJjZURhdGEtPnN0eWxlU291cmNl
RGF0YS0+cHJvcGVydHlEYXRhOwogICAgIGZvciAoVmVjdG9yPENTU1Byb3BlcnR5U291cmNlRGF0
YT46Oml0ZXJhdG9yIGl0ID0gcHJvcGVydHlEYXRhLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5RGF0
YS5lbmQoKTsgKytpdCkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcm9wZXJ0
eVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcHJvcGVydHlSYW5n
ZS0+c2V0U3RyaW5nKCJuYW1lIiwgaXQtPm5hbWUpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69804</attachid>
            <date>2010-10-05 10:14:25 -0700</date>
            <delta_ts>2010-10-06 07:31:49 -0700</delta_ts>
            <desc>[PATCH] Rebase for compilability</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>19415</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IGFmYWYxYzFkMzc5NjhkNTQ4MGE3ZTZkNTIwY2ZlMThkYzUyZTdhMjkKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgU2VwIDIz
IDIxOjExOjQ1IDIwMTAgKzA0MDAKCiAgICBGaXggc2VsZWN0b3IgaGFuZGxpbmcKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDRiNTE1ZWMu
LjA4MGJmZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTAtMTAtMDUgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDU1NQYXJzZXI6IEVuYWJsZSBydWxlIHNlbGVjdG9yIHNvdXJjZSByYW5n
ZSBleHRyYWN0aW9uLgorICAgICAgICBBUEkgbW9kaWZpY2F0aW9uIGZvbGxvd2VkIGJ5IGNsaWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjM2
NworCisgICAgICAgIFNvbWUgY29kZSByZW1vdmFsIHN1Z2dlc3RlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9y
TGlzdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlz
dEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlQm9keVN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1J1bGVCb2R5RW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1Byb3BlcnR5U3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmVzZXRTZWxlY3Rvckxpc3RNYXJrcyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UnVsZUJvZHlNYXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UHJvcGVydHlNYXJrcyk6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
U291cmNlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlU291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojpn
ZXRTdHlsZVNvdXJjZURhdGEpOgorCiAyMDEwLTEwLTA1ICBNYXJ0aW4gUm9iaW5zb24gIDxtcm9i
aW5zb25AaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHdXN0YXZvIE5vcm9uaGEg
U2lsdmEuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nz
cy9DU1NHcmFtbWFyLnkKaW5kZXggYzU1Zjk5OC4uYzAxMzlhMiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAtNDA4
LDcgKzQwOCw5IEBAIHJ1bGVfbGlzdDoKICA7CiAKIHZhbGlkX3J1bGU6Ci0gICAgcnVsZXNldAor
ICAgIGJlZm9yZV9ydWxlc2V0IHJ1bGVzZXQgeworICAgICAgICAkJCA9ICQyOworICAgIH0KICAg
fCBtZWRpYQogICB8IHBhZ2UKICAgfCBmb250X2ZhY2UKQEAgLTkxMCw4ICs5MTIsMjIgQEAgbWF5
YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0aW9uOgogICAgIH0KICAgOwogCitiZWZvcmVfcnVsZXNl
dDoKKyAgICAvKiBlbXB0eSAqLyB7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgIHAtPm1hcmtTZWxlY3Rvckxpc3RTdGFydCgp
OworICAgIH0KKyAgOworCitiZWZvcmVfcnVsZV9vcGVuaW5nX2JyYWNlOgorICAgIC8qIGVtcHR5
ICovIHsKKyAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFy
c2VyKTsKKyAgICAgICAgcC0+bWFya1NlbGVjdG9yTGlzdEVuZCgpOworICAgIH0KKyAgOworCiBy
dWxlc2V0OgotICAgIHNlbGVjdG9yX2xpc3QgJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJh
dGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgeworICAgIHNlbGVjdG9yX2xpc3Qg
YmVmb3JlX3J1bGVfb3BlbmluZ19icmFjZSAneycgbWF5YmVfc3BhY2VfYmVmb3JlX2RlY2xhcmF0
aW9uIGRlY2xhcmF0aW9uX2xpc3QgY2xvc2luZ19icmFjZSB7CiAgICAgICAgIENTU1BhcnNlciog
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gcC0+Y3Jl
YXRlU3R5bGVSdWxlKCQxKTsKICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJz
ZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCAyMTgxMWZmLi43MDI1NWY0
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBiL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAKQEAgLTE0NCwxMiArMTQ0LDExIEBAIENTU1BhcnNlcjo6Q1NTUGFyc2Vy
KGJvb2wgc3RyaWN0UGFyc2luZykKICAgICAsIG1faGFzRm9udEZhY2VPbmx5VmFsdWVzKGZhbHNl
KQogICAgICwgbV9oYWRTeW50YWN0aWNhbGx5VmFsaWRDU1NSdWxlKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0TmFtZXNwYWNlKHN0YXJBdG9tKQotICAgICwgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KDAp
Ci0gICAgLCBtX3J1bGVCb2R5RW5kT2Zmc2V0KDApCi0gICAgLCBtX3Byb3BlcnR5U3RhcnRPZmZz
ZXQoVUlOVF9NQVgpCi0gICAgLCBtX3Byb3BlcnR5RW5kT2Zmc2V0KFVJTlRfTUFYKQorICAgICwg
bV9zZWxlY3Rvckxpc3RSYW5nZSgwLCAwKQorICAgICwgbV9ydWxlQm9keVJhbmdlKDAsIDApCisg
ICAgLCBtX3Byb3BlcnR5UmFuZ2UoVUlOVF9NQVgsIFVJTlRfTUFYKQogICAgICwgbV9ydWxlUmFu
Z2VNYXAoMCkKLSAgICAsIG1fY3VycmVudFN0eWxlRGF0YSgwKQorICAgICwgbV9jdXJyZW50UnVs
ZURhdGEoMCkKICAgICAsIG1fZGF0YSgwKQogICAgICwgeXlfc3RhcnQoMSkKICAgICAsIG1fbGlu
ZU51bWJlcigwKQpAQCAtMjI5LDE0ICsyMjgsMTcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNlU2hl
ZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBpbnQgc3RhcnQK
ICAgICBtX3N0eWxlU2hlZXQgPSBzaGVldDsKICAgICBtX2RlZmF1bHROYW1lc3BhY2UgPSBzdGFy
QXRvbTsgLy8gUmVzZXQgdGhlIGRlZmF1bHQgbmFtZXNwYWNlLgogICAgIG1fcnVsZVJhbmdlTWFw
ID0gcnVsZVJhbmdlTWFwOwotICAgIGlmIChydWxlUmFuZ2VNYXApCisgICAgaWYgKHJ1bGVSYW5n
ZU1hcCkgeworICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpj
cmVhdGUoKTsKICAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRh
OjpjcmVhdGUoKTsKKyAgICB9CiAKICAgICBtX2xpbmVOdW1iZXIgPSBzdGFydExpbmVOdW1iZXI7
CiAgICAgc2V0dXBQYXJzZXIoIiIsIHN0cmluZywgIiIpOwogICAgIGNzc3l5cGFyc2UodGhpcyk7
CiAgICAgbV9ydWxlUmFuZ2VNYXAgPSAwOwogICAgIG1fY3VycmVudFN0eWxlRGF0YSA9IDA7Cisg
ICAgbV9jdXJyZW50UnVsZURhdGEgPSAwOwogICAgIG1fcnVsZSA9IDA7CiB9CiAKQEAgLTM2NCw4
ICszNjYsNyBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRpb24sIGNvbnN0CiAgICAgICAgIH0KICAgICB9CiAKLSAg
ICBpZiAoIW1fcnVsZVJhbmdlTWFwKQotICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEgPSAwOwor
ICAgIG1fY3VycmVudFN0eWxlRGF0YSA9IDA7CiAgICAgcmV0dXJuIG9rOwogfQogCkBAIC01NDc5
LDEyICs1NDgwLDE2IEBAIENTU1J1bGUqIENTU1BhcnNlcjo6Y3JlYXRlU3R5bGVSdWxlKFZlY3Rv
cjxDU1NTZWxlY3Rvcio+KiBzZWxlY3RvcnMpCiAgICAgICAgIHJlc3VsdCA9IHJ1bGUuZ2V0KCk7
CiAgICAgICAgIG1fcGFyc2VkU3R5bGVPYmplY3RzLmFwcGVuZChydWxlLnJlbGVhc2UoKSk7CiAg
ICAgICAgIGlmIChtX3J1bGVSYW5nZU1hcCkgewotICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVu
dFN0eWxlRGF0YSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnN0eWxlQm9keVJh
bmdlID0gU291cmNlUmFuZ2UobV9ydWxlQm9keVN0YXJ0T2Zmc2V0LCBtX3J1bGVCb2R5RW5kT2Zm
c2V0KTsKLSAgICAgICAgICAgIG1fcnVsZVJhbmdlTWFwLT5zZXQocmVzdWx0LCBtX2N1cnJlbnRT
dHlsZURhdGEucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRTdHlsZURh
dGEgJiYgbV9jdXJyZW50UnVsZURhdGEpOworICAgICAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRh
LT5zdHlsZUJvZHlSYW5nZSA9IG1fcnVsZUJvZHlSYW5nZTsKKyAgICAgICAgICAgIG1fY3VycmVu
dFJ1bGVEYXRhLT5zZWxlY3Rvckxpc3RSYW5nZSA9IG1fc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAg
ICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YS0+c3R5bGVTb3VyY2VEYXRhID0gbV9jdXJyZW50U3R5
bGVEYXRhLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIG1fcnVsZVJhbmdlTWFwLT5zZXQocmVzdWx0
LCBtX2N1cnJlbnRSdWxlRGF0YS5yZWxlYXNlKCkpOwogICAgICAgICAgICAgbV9jdXJyZW50U3R5
bGVEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKKyAgICAgICAgICAgIG1fY3Vy
cmVudFJ1bGVEYXRhID0gQ1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOwogICAgICAgICB9CiAg
ICAgfQorICAgIHJlc2V0U2VsZWN0b3JMaXN0TWFya3MoKTsKICAgICByZXNldFJ1bGVCb2R5TWFy
a3MoKTsKICAgICBjbGVhclByb3BlcnRpZXMoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtNTcz
MywyNiArNTczOCw0NCBAQCB2b2lkIENTU1BhcnNlcjo6dXBkYXRlTGFzdFNlbGVjdG9yTGluZUFu
ZFBvc2l0aW9uKCkKICAgICBtYXJrUnVsZUJvZHlTdGFydCgpOwogfQogCit2b2lkIENTU1BhcnNl
cjo6bWFya1NlbGVjdG9yTGlzdFN0YXJ0KCkKK3sKKyAgICBtX3NlbGVjdG9yTGlzdFJhbmdlLnN0
YXJ0ID0geXl0ZXh0IC0gbV9kYXRhOworfQorCit2b2lkIENTU1BhcnNlcjo6bWFya1NlbGVjdG9y
TGlzdEVuZCgpCit7CisgICAgaWYgKCFtX2N1cnJlbnRSdWxlRGF0YSkKKyAgICAgICAgcmV0dXJu
OworICAgIFVDaGFyKiBsaXN0RW5kID0geXl0ZXh0OworICAgIHdoaWxlIChsaXN0RW5kID4gbV9k
YXRhICsgMSkgeworICAgICAgICBpZiAoaXNIVE1MU3BhY2UoKihsaXN0RW5kIC0gMSkpKQorICAg
ICAgICAgICAgLS1saXN0RW5kOworICAgICAgICBlbHNlCisgICAgICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5lbmQgPSBsaXN0RW5kIC0gbV9kYXRhOworfQor
CiB2b2lkIENTU1BhcnNlcjo6bWFya1J1bGVCb2R5U3RhcnQoKQogewogICAgIHVuc2lnbmVkIG9m
ZnNldCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAoKnl5dGV4dCA9PSAneycpCiAgICAgICAg
ICsrb2Zmc2V0OyAvLyBTa2lwIHRoZSBydWxlIGJvZHkgb3BlbmluZyBicmFjZS4KLSAgICBpZiAo
b2Zmc2V0ID4gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KQotICAgICAgICBtX3J1bGVCb2R5U3RhcnRP
ZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlSYW5nZS5zdGFydCkK
KyAgICAgICAgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gb2Zmc2V0OwogfQogCiB2b2lkIENTU1Bh
cnNlcjo6bWFya1J1bGVCb2R5RW5kKCkKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgPSB5eXRleHQg
LSBtX2RhdGE7Ci0gICAgaWYgKG9mZnNldCA+IG1fcnVsZUJvZHlFbmRPZmZzZXQpCi0gICAgICAg
IG1fcnVsZUJvZHlFbmRPZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKG9mZnNldCA+IG1fcnVsZUJv
ZHlSYW5nZS5lbmQpCisgICAgICAgIG1fcnVsZUJvZHlSYW5nZS5lbmQgPSBvZmZzZXQ7CiB9CiAK
IHZvaWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlTdGFydCgpCiB7Ci0gICAgdW5zaWduZWQgb2Zm
c2V0ID0geXl0ZXh0IC0gbV9kYXRhOwotICAgIG1fcHJvcGVydHlTdGFydE9mZnNldCA9IG9mZnNl
dDsKKyAgICBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSB5eXRleHQgLSBtX2RhdGE7CiB9CiAKIHZv
aWQgQ1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29s
IGlzUHJvcGVydHlQYXJzZWQpCkBAIC01NzYwLDExICs1NzgzLDExIEBAIHZvaWQgQ1NTUGFyc2Vy
OjptYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlzUHJvcGVydHlQ
YXJzZWQpCiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9kYXRhOwogICAgIGlmICgq
eXl0ZXh0ID09ICc7JykgLy8gSW5jbHVkZSBzZW1pY29sb24gaW50byB0aGUgcHJvcGVydHkgdGV4
dC4KICAgICAgICAgKytvZmZzZXQ7Ci0gICAgbV9wcm9wZXJ0eUVuZE9mZnNldCA9IG9mZnNldDsK
LSAgICBpZiAobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ICE9IFVJTlRfTUFYICYmIG1fY3VycmVudFN0
eWxlRGF0YSkgeworICAgIG1fcHJvcGVydHlSYW5nZS5lbmQgPSBvZmZzZXQ7CisgICAgaWYgKG1f
cHJvcGVydHlSYW5nZS5zdGFydCAhPSBVSU5UX01BWCAmJiBtX2N1cnJlbnRTdHlsZURhdGEpIHsK
ICAgICAgICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRh
dGEgcmV0cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGllbnQuCi0gICAgICAgIGNvbnN0IHVuc2ln
bmVkIHN0YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0OwotICAgICAgICBjb25zdCB1bnNpZ25l
ZCBlbmQgPSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzdGFy
dCA9IG1fcHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kID0g
bV9wcm9wZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNTRVJUKHN0YXJ0IDwgZW5kKTsKICAgICAg
ICAgU3RyaW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5nKG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBz
dGFydCkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVN0cmluZy5lbmRz
V2l0aCgiOyIsIHRydWUpKQpAQCAtNTc3Nyw3ICs1ODAwLDcgQEAgdm9pZCBDU1NQYXJzZXI6Om1h
cmtQcm9wZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNl
ZCkKICAgICAgICAgU3RyaW5nIHZhbHVlID0gcHJvcGVydHlTdHJpbmcuc3Vic3RyaW5nKGNvbG9u
SW5kZXggKyAxLCBwcm9wZXJ0eVN0cmluZy5sZW5ndGgoKSkuc3RyaXBXaGl0ZVNwYWNlKCk7CiAg
ICAgICAgIC8vIFRoZSBwcm9wZXJ0eSByYW5nZSBpcyByZWxhdGl2ZSB0byB0aGUgZGVjbGFyYXRp
b24gc3RhcnQgb2Zmc2V0LgogICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEtPnByb3BlcnR5RGF0
YS5hcHBlbmQoCi0gICAgICAgICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEobmFtZSwgdmFsdWUs
IGlzSW1wb3J0YW50Rm91bmQsIGlzUHJvcGVydHlQYXJzZWQsIFNvdXJjZVJhbmdlKG1fcHJvcGVy
dHlTdGFydE9mZnNldCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9wcm9wZXJ0eUVuZE9mZnNl
dCAtIG1fcnVsZUJvZHlTdGFydE9mZnNldCkpKTsKKyAgICAgICAgICAgIENTU1Byb3BlcnR5U291
cmNlRGF0YShuYW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwg
U291cmNlUmFuZ2Uoc3RhcnQgLSBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQsIGVuZCAtIG1fcnVsZUJv
ZHlSYW5nZS5zdGFydCkpKTsKICAgICB9CiAgICAgcmVzZXRQcm9wZXJ0eU1hcmtzKCk7CiB9CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oCmluZGV4IGY4YjI0ZGYuLjU4Zjc3ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yNDEsMTggKzI0MSwyMSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEF0b21pY1N0cmluZyBtX2RlZmF1bHROYW1l
c3BhY2U7CiAKICAgICAgICAgLy8gdG9rZW5pemVyIG1ldGhvZHMgYW5kIGRhdGEKLSAgICAgICAg
dW5zaWduZWQgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3J1bGVC
b2R5RW5kT2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3Byb3BlcnR5U3RhcnRPZmZzZXQ7Ci0g
ICAgICAgIHVuc2lnbmVkIG1fcHJvcGVydHlFbmRPZmZzZXQ7CisgICAgICAgIFNvdXJjZVJhbmdl
IG1fc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fcnVsZUJvZHlSYW5n
ZTsKKyAgICAgICAgU291cmNlUmFuZ2UgbV9wcm9wZXJ0eVJhbmdlOwogICAgICAgICBTdHlsZVJ1
bGVSYW5nZU1hcCogbV9ydWxlUmFuZ2VNYXA7CiAgICAgICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJj
ZURhdGE+IG1fY3VycmVudFN0eWxlRGF0YTsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VE
YXRhPiBtX2N1cnJlbnRSdWxlRGF0YTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0U3Rh
cnQoKTsKKyAgICAgICAgdm9pZCBtYXJrU2VsZWN0b3JMaXN0RW5kKCk7CiAgICAgICAgIHZvaWQg
bWFya1J1bGVCb2R5U3RhcnQoKTsKICAgICAgICAgdm9pZCBtYXJrUnVsZUJvZHlFbmQoKTsKICAg
ICAgICAgdm9pZCBtYXJrUHJvcGVydHlTdGFydCgpOwogICAgICAgICB2b2lkIG1hcmtQcm9wZXJ0
eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCk7Ci0gICAg
ICAgIHZvaWQgcmVzZXRSdWxlQm9keU1hcmtzKCkgeyBtX3J1bGVCb2R5U3RhcnRPZmZzZXQgPSBt
X3J1bGVCb2R5RW5kT2Zmc2V0ID0gMDsgfQotICAgICAgICB2b2lkIHJlc2V0UHJvcGVydHlNYXJr
cygpIHsgbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0ID0gbV9wcm9wZXJ0eUVuZE9mZnNldCA9IFVJTlRf
TUFYOyB9CisgICAgICAgIHZvaWQgcmVzZXRTZWxlY3Rvckxpc3RNYXJrcygpIHsgbV9zZWxlY3Rv
ckxpc3RSYW5nZS5zdGFydCA9IG1fc2VsZWN0b3JMaXN0UmFuZ2UuZW5kID0gMDsgfQorICAgICAg
ICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsgbV9ydWxlQm9keVJhbmdlLnN0YXJ0ID0gbV9y
dWxlQm9keVJhbmdlLmVuZCA9IDA7IH0KKyAgICAgICAgdm9pZCByZXNldFByb3BlcnR5TWFya3Mo
KSB7IG1fcHJvcGVydHlSYW5nZS5zdGFydCA9IG1fcHJvcGVydHlSYW5nZS5lbmQgPSBVSU5UX01B
WDsgfQogICAgICAgICBpbnQgbGV4KHZvaWQqIHl5bHZhbCk7CiAgICAgICAgIGludCB0b2tlbigp
IHsgcmV0dXJuIHl5VG9rOyB9CiAgICAgICAgIFVDaGFyKiB0ZXh0KGludCogbGVuZ3RoKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAgYi9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuY3BwCmluZGV4IDE2MjgwMzEuLmViOWMyYzEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcApAQCAtNTQsMTMgKzU0LDYgQEAgU291
cmNlUmFuZ2U6OlNvdXJjZVJhbmdlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQpCiB7CiB9
CiAKLVNvdXJjZVJhbmdlJiBTb3VyY2VSYW5nZTo6b3BlcmF0b3I9KGNvbnN0IFNvdXJjZVJhbmdl
JiBvdGhlcikKLXsKLSAgICB0aGlzLT5zdGFydCA9IG90aGVyLnN0YXJ0OwotICAgIHRoaXMtPmVu
ZCA9IG90aGVyLmVuZDsKLSAgICByZXR1cm4gKnRoaXM7Ci19Ci0KIENTU1Byb3BlcnR5U291cmNl
RGF0YTo6Q1NTUHJvcGVydHlTb3VyY2VEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIGJvb2wgcGFyc2VkT2ssIGNvbnN0IFNvdXJjZVJh
bmdlJiByYW5nZSkKICAgICA6IG5hbWUobmFtZSkKICAgICAsIHZhbHVlKHZhbHVlKQpAQCAtODgs
MTYgKzgxLDYgQEAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhOjpDU1NQcm9wZXJ0eVNvdXJjZURhdGEo
KQogewogfQogCi1DU1NQcm9wZXJ0eVNvdXJjZURhdGEmIENTU1Byb3BlcnR5U291cmNlRGF0YTo6
b3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpCi17Ci0gICAgbmFt
ZSA9IG90aGVyLm5hbWU7Ci0gICAgdmFsdWUgPSBvdGhlci52YWx1ZTsKLSAgICBpbXBvcnRhbnQg
PSBvdGhlci5pbXBvcnRhbnQ7Ci0gICAgcGFyc2VkT2sgPSBvdGhlci5wYXJzZWRPazsKLSAgICBy
YW5nZSA9IG90aGVyLnJhbmdlOwotICAgIHJldHVybiAqdGhpczsKLX0KLQogU3RyaW5nIENTU1By
b3BlcnR5U291cmNlRGF0YTo6dG9TdHJpbmcoKSBjb25zdAogewogICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBlbXB0eVZhbHVlLCAoImUiKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaCBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5oCmluZGV4IGJlYWU5ZDAuLmRiODBkNDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5U291cmNlRGF0YS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNl
RGF0YS5oCkBAIC00NCw3ICs0NCw2IEBAIGNsYXNzIENTU1N0eWxlUnVsZTsKIHN0cnVjdCBTb3Vy
Y2VSYW5nZSB7CiAgICAgU291cmNlUmFuZ2UoKTsKICAgICBTb3VyY2VSYW5nZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKTsKLSAgICBTb3VyY2VSYW5nZSYgb3BlcmF0b3I9KGNvbnN0IFNv
dXJjZVJhbmdlJiBvdGhlcik7CiAKICAgICB1bnNpZ25lZCBzdGFydDsKICAgICB1bnNpZ25lZCBl
bmQ7CkBAIC01Niw5ICs1NSw3IEBAIHN0cnVjdCBDU1NQcm9wZXJ0eVNvdXJjZURhdGEgewogICAg
IENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
dmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBhcnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYg
cmFuZ2UpOwogICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBDU1NQcm9wZXJ0eVNvdXJj
ZURhdGEmIG90aGVyKTsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEoKTsKLSAgICBBTFdBWVNf
SU5MSU5FIH5DU1NQcm9wZXJ0eVNvdXJjZURhdGEoKSB7IH0KIAotICAgIENTU1Byb3BlcnR5U291
cmNlRGF0YSYgb3BlcmF0b3I9KGNvbnN0IENTU1Byb3BlcnR5U291cmNlRGF0YSYgb3RoZXIpOwog
ICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogICAgIHVuc2lnbmVkIGhhc2goKSBjb25zdDsK
IApAQCAtODMsNyArODAsMTggQEAgc3RydWN0IENTU1N0eWxlU291cmNlRGF0YSA6IHB1YmxpYyBS
ZWZDb3VudGVkPENTU1N0eWxlU291cmNlRGF0YT4gewogICAgIFNvdXJjZVJhbmdlIHN0eWxlQm9k
eVJhbmdlOwogICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+IHByb3BlcnR5RGF0YTsK
IH07Ci10eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgUmVmUHRyPENTU1N0eWxlU291cmNl
RGF0YT4gPiBTdHlsZVJ1bGVSYW5nZU1hcDsKKworc3RydWN0IENTU1J1bGVTb3VyY2VEYXRhIDog
cHVibGljIFJlZkNvdW50ZWQ8Q1NTUnVsZVNvdXJjZURhdGE+IHsKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQ1NTUnVsZVNvdXJjZURhdGEoKSk7CisgICAgfQorCisgICAgLy8gUmFuZ2Ug
b2YgdGhlIHNlbGVjdG9yIGxpc3QgaW4gdGhlIGVuY2xvc2luZyBzb3VyY2UuCisgICAgU291cmNl
UmFuZ2Ugc2VsZWN0b3JMaXN0UmFuZ2U7CisgICAgUmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4g
c3R5bGVTb3VyY2VEYXRhOworfTsKK3R5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVJ1bGUqLCBSZWZQ
dHI8Q1NTUnVsZVNvdXJjZURhdGE+ID4gU3R5bGVSdWxlUmFuZ2VNYXA7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
U3RvcmUuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuY3BwCmluZGV4
IGIwMTk4NjAuLjA3YTVjMmEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU1N0b3JlLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5j
cHAKQEAgLTE1OCw3ICsxNTgsNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ1NTU3RvcmU6OmlubGluZVN0
eWxlU2hlZXRUZXh0KENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXQpCiAKIAogLy8gQWxsIHJhbmdl
cyBhcmU6IFtzdGFydDsgZW5kKSAoc3RhcnQgLSBpbmNsdXNpdmUsIGVuZCAtIGV4Y2x1c2l2ZSku
Ci1ib29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiByZXN1bHQpCitib29s
IEluc3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiogcmVzdWx0KQogewogICAgIGlmICgh
c3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE2NiwxMSArMTY2LDEzIEBAIGJvb2wg
SW5zcGVjdG9yQ1NTU3RvcmU6OmdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSwgUmVmUHRyPENTCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGlubGluZVN0eWxlRWxl
bWVudChzdHlsZSk7CiAgICAgaWYgKGVsZW1lbnQpIHsKICAgICAgICAgLy8gSW5saW5lOiBzdHls
ZT0iLi4uIi4KKyAgICAgICAgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0
YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKICAgICAgICAgUmVmUHRyPENTU1N0eWxl
U291cmNlRGF0YT4gc3R5bGVTb3VyY2VEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUo
KTsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gZ2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMoZWxlbWVu
dCwgJnN0eWxlU291cmNlRGF0YSk7CiAgICAgICAgIGlmICghc3VjY2VzcykKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICAgICAgKnJlc3VsdCA9IHN0eWxlU291cmNlRGF0YTsKKyAgICAg
ICAgcnVsZVNvdXJjZURhdGEtPnN0eWxlU291cmNlRGF0YSA9IHN0eWxlU291cmNlRGF0YS5yZWxl
YXNlKCk7CisgICAgICAgICpyZXN1bHQgPSBydWxlU291cmNlRGF0YTsKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogCkBAIC0xNzgsNyArMTgwLDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NTdG9y
ZTo6Z2V0U3R5bGVTb3VyY2VEYXRhKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBSZWZQdHI8
Q1MKICAgICBpZiAoIXN0eWxlU2hlZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiA+KiByYW5nZXNWZWN0b3IgPSAwOworICAg
IFZlY3RvcjxSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+ID4qIHJhbmdlc1ZlY3RvciA9IDA7CiAg
ICAgU3R5bGVTaGVldFRvT2Zmc2V0c01hcDo6aXRlcmF0b3IgaXQgPSBtX3N0eWxlU2hlZXRUb09m
ZnNldHMuZmluZChzdHlsZVNoZWV0KTsKICAgICBpZiAoaXQgPT0gbV9zdHlsZVNoZWV0VG9PZmZz
ZXRzLmVuZCgpKSB7CiAgICAgICAgIFN0cmluZyB0ZXh0ID0gc3R5bGVTaGVldFRleHQoYmluZFN0
eWxlU2hlZXQoc3R5bGVTaGVldCkpOwpAQCAtMTg3LDcgKzE4OSw3IEBAIGJvb2wgSW5zcGVjdG9y
Q1NTU3RvcmU6OmdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwg
UmVmUHRyPENTCiAgICAgICAgICAgICBDU1NQYXJzZXIgcDsKICAgICAgICAgICAgIFN0eWxlUnVs
ZVJhbmdlTWFwIHJ1bGVSYW5nZU1hcDsKICAgICAgICAgICAgIHAucGFyc2VTaGVldChuZXdTdHls
ZVNoZWV0LmdldCgpLCB0ZXh0LCAwLCAmcnVsZVJhbmdlTWFwKTsKLSAgICAgICAgICAgIHJhbmdl
c1ZlY3RvciA9IG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4gPjsKKyAgICAg
ICAgICAgIHJhbmdlc1ZlY3RvciA9IG5ldyBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRh
PiA+OwogICAgICAgICAgICAgZXh0cmFjdFJhbmdlcyhuZXdTdHlsZVNoZWV0LmdldCgpLCBydWxl
UmFuZ2VNYXAsIHJhbmdlc1ZlY3Rvcik7CiAgICAgICAgICAgICBtX3N0eWxlU2hlZXRUb09mZnNl
dHMuc2V0KHN0eWxlU2hlZXQsIHJhbmdlc1ZlY3Rvcik7CiAgICAgICAgIH0KQEAgLTIxMSw3ICsy
MTMsNyBAQCBib29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDUwogICAgIHJldHVybiBmYWxzZTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JDU1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiBzdHls
ZVNoZWV0LCBjb25zdCBTdHlsZVJ1bGVSYW5nZU1hcCYgcnVsZVJhbmdlTWFwLCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU291cmNlRGF0YT4gPiogcmFuZ2VzVmVjdG9yKQordm9pZCBJbnNwZWN0b3JD
U1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBT
dHlsZVJ1bGVSYW5nZU1hcCYgcnVsZVJhbmdlTWFwLCBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3Vy
Y2VEYXRhPiA+KiByYW5nZXNWZWN0b3IpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMCwgbGVu
Z3RoID0gc3R5bGVTaGVldC0+bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBD
U1NTdHlsZVJ1bGUqIHJ1bGUgPSBhc0NTU1N0eWxlUnVsZShzdHlsZVNoZWV0LT5pdGVtKGkpKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmggYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oCmluZGV4IDliMzI5ZGYuLjI1YTlkMTUg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaApAQCAtNTUsNyArNTUsNyBAQCB0
eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVEZWNsYXJhdGlvbiosIGxvbmc+IFN0eWxlVG9JZE1hcDsK
IHR5cGVkZWYgSGFzaE1hcDxsb25nLCBSZWZQdHI8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPiBJZFRv
U3R5bGVNYXA7CiB0eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVSdWxlKiwgbG9uZz4gUnVsZVRvSWRN
YXA7CiB0eXBlZGVmIEhhc2hNYXA8bG9uZywgUmVmUHRyPENTU1N0eWxlUnVsZT4gPiBJZFRvUnVs
ZU1hcDsKLXR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVNoZWV0KiwgVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNvdXJjZURhdGE+ID4qID4gU3R5bGVTaGVldFRvT2Zmc2V0c01hcDsKK3R5cGVkZWYgSGFz
aE1hcDxDU1NTdHlsZVNoZWV0KiwgVmVjdG9yPFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gPiog
PiBTdHlsZVNoZWV0VG9PZmZzZXRzTWFwOwogdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlU2hlZXQq
LCBsb25nPiBTdHlsZVNoZWV0VG9JZE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxsb25nLCBSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiBJZFRvU3R5bGVTaGVldE1hcDsKIHR5cGVkZWYgSGFzaE1hcDxsb25n
LCBTdHJpbmc+IElkVG9TdHlsZVNoZWV0VGV4dE1hcDsKQEAgLTcxLDcgKzcxLDcgQEAgcHVibGlj
OgogICAgIEluc3BlY3RvckNTU1N0b3JlKEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNv
bnRyb2xsZXIpOwogICAgIH5JbnNwZWN0b3JDU1NTdG9yZSgpOwogICAgIHZvaWQgcmVzZXQoKTsK
LSAgICBib29sIGdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRy
PENTU1N0eWxlU291cmNlRGF0YT4qIHJlc3VsdCk7CisgICAgYm9vbCBnZXRSdWxlU291cmNlRGF0
YShDU1NTdHlsZURlY2xhcmF0aW9uKiwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiogcmVzdWx0
KTsKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZUZvcklkKGxvbmcgc3R5bGVJZCk7CiAg
ICAgQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldEZvcklkKGxvbmcgc3R5bGVTaGVldElkKTsKICAg
ICBDU1NTdHlsZVJ1bGUqIHJ1bGVGb3JJZChsb25nIHN0eWxlUnVsZUlkKTsKQEAgLTg4LDcgKzg4
LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQ1NTU3R5bGVSdWxlKiBhc0NTU1N0eWxlUnVsZShT
dHlsZUJhc2UqKTsKICAgICBTdHJpbmcgaW5saW5lU3R5bGVTaGVldFRleHQoQ1NTU3R5bGVTaGVl
dCopOwogICAgIGJvb2wgcmVzb3VyY2VTdHlsZVNoZWV0VGV4dChDU1NTdHlsZVNoZWV0KiwgU3Ry
aW5nKiByZXN1bHQpOwotICAgIHZvaWQgZXh0cmFjdFJhbmdlcyhDU1NTdHlsZVNoZWV0KiwgY29u
c3QgU3R5bGVSdWxlUmFuZ2VNYXAmLCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4g
PiogcmFuZ2VzVmVjdG9yKTsKKyAgICB2b2lkIGV4dHJhY3RSYW5nZXMoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IFN0eWxlUnVsZVJhbmdlTWFwJiwgVmVjdG9yPFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gPiogcmFuZ2VzVmVjdG9yKTsKICAgICBib29sIGdldFN0eWxlQXR0cmlidXRlUmFuZ2VzKE5v
ZGUqIHBhcmVudE5vZGUsIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiByZXN1bHQpOwogCiAg
ICAgU3R5bGVUb0lkTWFwIG1fc3R5bGVUb0lkOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IGMxYzIxYjYuLjIzMTZmMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKQEAgLTEyMjMsMTggKzEyMjMsMjUgQEAgdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6Z2V0U3R5bGVTb3VyY2VEYXRhKGxvbmcgc3R5bGVJZCwgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4KICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSA9IGNzc1N0b3JlKCktPnN0
eWxlRm9ySWQoc3R5bGVJZCk7CiAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuOwotICAg
IFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IHNvdXJjZURhdGEgPSBDU1NTdHlsZVNvdXJjZURh
dGE6OmNyZWF0ZSgpOwotICAgIGJvb2wgc3VjY2VzcyA9IGNzc1N0b3JlKCktPmdldFN0eWxlU291
cmNlRGF0YShzdHlsZSwgJnNvdXJjZURhdGEpOworICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0
YT4gc291cmNlRGF0YSA9IENTU1J1bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSBjc3NTdG9yZSgpLT5nZXRSdWxlU291cmNlRGF0YShzdHlsZSwgJnNvdXJjZURhdGEp
OwogICAgIGlmICghc3VjY2VzcykKICAgICAgICAgcmV0dXJuOwogICAgIFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+IHJlc3VsdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBib2R5UmFuZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgp
OwogICAgIHJlc3VsdC0+c2V0T2JqZWN0KCJib2R5UmFuZ2UiLCBib2R5UmFuZ2UpOwotICAgIGJv
ZHlSYW5nZS0+c2V0TnVtYmVyKCJzdGFydCIsIHNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0
YXJ0KTsKLSAgICBib2R5UmFuZ2UtPnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c3R5bGVC
b2R5UmFuZ2UuZW5kKTsKKyAgICBib2R5UmFuZ2UtPnNldE51bWJlcigic3RhcnQiLCBzb3VyY2VE
YXRhLT5zdHlsZVNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0KTsKKyAgICBib2R5UmFu
Z2UtPnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5zdHlsZUJv
ZHlSYW5nZS5lbmQpOworCisgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gc2VsZWN0b3JSYW5n
ZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CisgICAgcmVzdWx0LT5zZXRPYmplY3QoInNl
bGVjdG9yUmFuZ2UiLCBzZWxlY3RvclJhbmdlKTsKKyAgICBzZWxlY3RvclJhbmdlLT5zZXROdW1i
ZXIoInN0YXJ0Iiwgc291cmNlRGF0YS0+c2VsZWN0b3JMaXN0UmFuZ2Uuc3RhcnQpOworICAgIHNl
bGVjdG9yUmFuZ2UtPnNldE51bWJlcigiZW5kIiwgc291cmNlRGF0YS0+c2VsZWN0b3JMaXN0UmFu
Z2UuZW5kKTsKKwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gcHJvcGVydHlSYW5nZXMgPSBJ
bnNwZWN0b3JBcnJheTo6Y3JlYXRlKCk7CiAgICAgcmVzdWx0LT5zZXRBcnJheSgicHJvcGVydHlE
YXRhIiwgcHJvcGVydHlSYW5nZXMpOwotICAgIFZlY3RvcjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+
JiBwcm9wZXJ0eURhdGEgPSBzb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGE7CisgICAgVmVjdG9yPENT
U1Byb3BlcnR5U291cmNlRGF0YT4mIHByb3BlcnR5RGF0YSA9IHNvdXJjZURhdGEtPnN0eWxlU291
cmNlRGF0YS0+cHJvcGVydHlEYXRhOwogICAgIGZvciAoVmVjdG9yPENTU1Byb3BlcnR5U291cmNl
RGF0YT46Oml0ZXJhdG9yIGl0ID0gcHJvcGVydHlEYXRhLmJlZ2luKCk7IGl0ICE9IHByb3BlcnR5
RGF0YS5lbmQoKTsgKytpdCkgewogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBwcm9w
ZXJ0eVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgcHJvcGVydHlS
YW5nZS0+c2V0U3RyaW5nKCJuYW1lIiwgaXQtPm5hbWUpOwo=
</data>
<flag name="review"
          id="59539"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69938</attachid>
            <date>2010-10-06 07:31:49 -0700</date>
            <delta_ts>2010-10-06 08:15:30 -0700</delta_ts>
            <desc>[PATCH] Comment addressed</desc>
            <filename>selector.patch</filename>
            <type>text/plain</type>
            <size>22611</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDk3ZGMzODZmYzNiN2JmOWFmNzkzZmFkY2I5NmQzYzU3ZTEzYTlkOTYKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBUaHUgU2VwIDIz
IDIxOjExOjQ1IDIwMTAgKzA0MDAKCiAgICBGaXggc2VsZWN0b3IgaGFuZGxpbmcKCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGJiZWY2OGYu
LmRlOWYwNGUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTAtMTAtMDYgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDU1NQYXJzZXI6IEVuYWJsZSBydWxlIHNlbGVjdG9yIHNvdXJjZSByYW5n
ZSBleHRyYWN0aW9uLgorICAgICAgICBBUEkgbW9kaWZpY2F0aW9uIGZvbGxvd2VkIGJ5IGNsaWVu
dHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NjM2
NworCisgICAgICAgIFNvbWUgY29kZSByZW1vdmFsIHN1Z2dlc3RlZCBieSBEYXJpbiBBZGxlci4K
KworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlU2hlZXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpwYXJzZURlY2xhcmF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3Jl
YXRlU3R5bGVSdWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9y
TGlzdFN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1NlbGVjdG9yTGlz
dEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6Om1hcmtSdWxlQm9keVN0YXJ0KToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1J1bGVCb2R5RW5kKToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1BhcnNlcjo6bWFya1Byb3BlcnR5U3RhcnQpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjptYXJrUHJvcGVydHlFbmQpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cmVzZXRTZWxlY3Rvckxpc3RNYXJrcyk6
CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UnVsZUJvZHlNYXJrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnJlc2V0UHJvcGVydHlNYXJrcyk6CisgICAgICAgICog
Y3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHA6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5
U291cmNlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNvdXJjZURhdGE6OmNyZWF0
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNTU1N0b3JlOjpnZXRSdWxlU291cmNlRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6ZXh0cmFjdFJhbmdlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6Z2V0U3R5bGVTb3VyY2VEYXRhKToKKwogMjAxMC0xMC0wNiAgUGF2ZWwgUG9kaXZpbG92
ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNl
bWlraGF0c2t5LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvV2ViQ29y
ZS9jc3MvQ1NTR3JhbW1hci55CmluZGV4IGM1NWY5OTguLmMwMTM5YTIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAg
LTQwOCw3ICs0MDgsOSBAQCBydWxlX2xpc3Q6CiAgOwogCiB2YWxpZF9ydWxlOgotICAgIHJ1bGVz
ZXQKKyAgICBiZWZvcmVfcnVsZXNldCBydWxlc2V0IHsKKyAgICAgICAgJCQgPSAkMjsKKyAgICB9
CiAgIHwgbWVkaWEKICAgfCBwYWdlCiAgIHwgZm9udF9mYWNlCkBAIC05MTAsOCArOTEyLDIyIEBA
IG1heWJlX3NwYWNlX2JlZm9yZV9kZWNsYXJhdGlvbjoKICAgICB9CiAgIDsKIAorYmVmb3JlX3J1
bGVzZXQ6CisgICAgLyogZW1wdHkgKi8geworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICBwLT5tYXJrU2VsZWN0b3JMaXN0U3Rh
cnQoKTsKKyAgICB9CisgIDsKKworYmVmb3JlX3J1bGVfb3BlbmluZ19icmFjZToKKyAgICAvKiBl
bXB0eSAqLyB7CisgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+
KHBhcnNlcik7CisgICAgICAgIHAtPm1hcmtTZWxlY3Rvckxpc3RFbmQoKTsKKyAgICB9CisgIDsK
KwogcnVsZXNldDoKLSAgICBzZWxlY3Rvcl9saXN0ICd7JyBtYXliZV9zcGFjZV9iZWZvcmVfZGVj
bGFyYXRpb24gZGVjbGFyYXRpb25fbGlzdCBjbG9zaW5nX2JyYWNlIHsKKyAgICBzZWxlY3Rvcl9s
aXN0IGJlZm9yZV9ydWxlX29wZW5pbmdfYnJhY2UgJ3snIG1heWJlX3NwYWNlX2JlZm9yZV9kZWNs
YXJhdGlvbiBkZWNsYXJhdGlvbl9saXN0IGNsb3NpbmdfYnJhY2UgewogICAgICAgICBDU1NQYXJz
ZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwogICAgICAgICAkJCA9IHAt
PmNyZWF0ZVN0eWxlUnVsZSgkMSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMjE4MTFmZi4uZWI0
MTA5ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC0xNDQsMTIgKzE0NCwxMSBAQCBDU1NQYXJzZXI6OkNTU1Bh
cnNlcihib29sIHN0cmljdFBhcnNpbmcpCiAgICAgLCBtX2hhc0ZvbnRGYWNlT25seVZhbHVlcyhm
YWxzZSkKICAgICAsIG1faGFkU3ludGFjdGljYWxseVZhbGlkQ1NTUnVsZShmYWxzZSkKICAgICAs
IG1fZGVmYXVsdE5hbWVzcGFjZShzdGFyQXRvbSkKLSAgICAsIG1fcnVsZUJvZHlTdGFydE9mZnNl
dCgwKQotICAgICwgbV9ydWxlQm9keUVuZE9mZnNldCgwKQotICAgICwgbV9wcm9wZXJ0eVN0YXJ0
T2Zmc2V0KFVJTlRfTUFYKQotICAgICwgbV9wcm9wZXJ0eUVuZE9mZnNldChVSU5UX01BWCkKKyAg
ICAsIG1fc2VsZWN0b3JMaXN0UmFuZ2UoMCwgMCkKKyAgICAsIG1fcnVsZUJvZHlSYW5nZSgwLCAw
KQorICAgICwgbV9wcm9wZXJ0eVJhbmdlKFVJTlRfTUFYLCBVSU5UX01BWCkKICAgICAsIG1fcnVs
ZVJhbmdlTWFwKDApCi0gICAgLCBtX2N1cnJlbnRTdHlsZURhdGEoMCkKKyAgICAsIG1fY3VycmVu
dFJ1bGVEYXRhKDApCiAgICAgLCBtX2RhdGEoMCkKICAgICAsIHl5X3N0YXJ0KDEpCiAgICAgLCBt
X2xpbmVOdW1iZXIoMCkKQEAgLTIyOSwxNCArMjI4LDE2IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJz
ZVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCBjb25zdCBTdHJpbmcmIHN0cmluZywgaW50IHN0
YXJ0CiAgICAgbV9zdHlsZVNoZWV0ID0gc2hlZXQ7CiAgICAgbV9kZWZhdWx0TmFtZXNwYWNlID0g
c3RhckF0b207IC8vIFJlc2V0IHRoZSBkZWZhdWx0IG5hbWVzcGFjZS4KICAgICBtX3J1bGVSYW5n
ZU1hcCA9IHJ1bGVSYW5nZU1hcDsKLSAgICBpZiAocnVsZVJhbmdlTWFwKQotICAgICAgICBtX2N1
cnJlbnRTdHlsZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOworICAgIGlmIChy
dWxlUmFuZ2VNYXApIHsKKyAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNl
RGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURh
dGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOworICAgIH0KIAogICAgIG1fbGluZU51
bWJlciA9IHN0YXJ0TGluZU51bWJlcjsKICAgICBzZXR1cFBhcnNlcigiIiwgc3RyaW5nLCAiIik7
CiAgICAgY3NzeXlwYXJzZSh0aGlzKTsKICAgICBtX3J1bGVSYW5nZU1hcCA9IDA7Ci0gICAgbV9j
dXJyZW50U3R5bGVEYXRhID0gMDsKKyAgICBtX2N1cnJlbnRSdWxlRGF0YSA9IDA7CiAgICAgbV9y
dWxlID0gMDsKIH0KIApAQCAtMzMzLDE0ICszMzQsMTcgQEAgdm9pZCBDU1NQYXJzZXI6OnBhcnNl
U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIERvY3VtZW50KiBkb2MsIENTU1NlbGVjdG9y
TGkKICAgICBtX3NlbGVjdG9yTGlzdEZvclBhcnNlU2VsZWN0b3IgPSAwOwogfQogCi1ib29sIENT
U1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVj
bGFyYXRpb24sIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NTdHlsZVNvdXJjZURhdGEqIHN0eWxl
U291cmNlRGF0YSkKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uKiBkZWNsYXJhdGlvbiwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIFJlZlB0
cjxDU1NTdHlsZVNvdXJjZURhdGE+KiBzdHlsZVNvdXJjZURhdGEpCiB7CiAgICAgLy8gTGVuZ3Ro
IG9mIHRoZSAiQC13ZWJraXQtZGVjbHN7IiBwcmVmaXguCiAgICAgc3RhdGljIGNvbnN0IHVuc2ln
bmVkIHByZWZpeExlbmd0aCA9IDE1OwogCiAgICAgQVNTRVJUKCFkZWNsYXJhdGlvbi0+c3R5bGVz
aGVldCgpIHx8IGRlY2xhcmF0aW9uLT5zdHlsZXNoZWV0KCktPmlzQ1NTU3R5bGVTaGVldCgpKTsK
ICAgICBtX3N0eWxlU2hlZXQgPSBzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oZGVjbGFyYXRp
b24tPnN0eWxlc2hlZXQoKSk7Ci0gICAgbV9jdXJyZW50U3R5bGVEYXRhID0gc3R5bGVTb3VyY2VE
YXRhOworICAgIGlmIChzdHlsZVNvdXJjZURhdGEpIHsKKyAgICAgICAgbV9jdXJyZW50UnVsZURh
dGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CisgICAgICAgIG1fY3VycmVudFJ1bGVE
YXRhLT5zdHlsZVNvdXJjZURhdGEgPSBDU1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOworICAg
IH0KIAogICAgIHNldHVwUGFyc2VyKCJALXdlYmtpdC1kZWNsc3siLCBzdHJpbmcsICJ9ICIpOwog
ICAgIGNzc3l5cGFyc2UodGhpcyk7CkBAIC0zNTUsMTcgKzM1OSwxOSBAQCBib29sIENTU1BhcnNl
cjo6cGFyc2VEZWNsYXJhdGlvbihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogZGVjbGFyYXRp
b24sIGNvbnN0CiAgICAgICAgIGNsZWFyUHJvcGVydGllcygpOwogICAgIH0KIAotICAgIGlmICht
X2N1cnJlbnRTdHlsZURhdGEpIHsKLSAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJv
ZHlSYW5nZS5zdGFydCA9IDA7Ci0gICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+c3R5bGVCb2R5
UmFuZ2UuZW5kID0gc3RyaW5nLmxlbmd0aCgpOwotICAgICAgICBmb3IgKFZlY3RvcjxDU1NQcm9w
ZXJ0eVNvdXJjZURhdGE+OjppdGVyYXRvciBpdCA9IG1fY3VycmVudFN0eWxlRGF0YS0+cHJvcGVy
dHlEYXRhLmJlZ2luKCk7IGl0ICE9IG1fY3VycmVudFN0eWxlRGF0YS0+cHJvcGVydHlEYXRhLmVu
ZCgpOyArK2l0KSB7CisgICAgaWYgKG1fY3VycmVudFJ1bGVEYXRhKSB7CisgICAgICAgIG1fY3Vy
cmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEtPnN0eWxlQm9keVJhbmdlLnN0YXJ0ID0gMDsK
KyAgICAgICAgbV9jdXJyZW50UnVsZURhdGEtPnN0eWxlU291cmNlRGF0YS0+c3R5bGVCb2R5UmFu
Z2UuZW5kID0gc3RyaW5nLmxlbmd0aCgpOworICAgICAgICBmb3IgKFZlY3RvcjxDU1NQcm9wZXJ0
eVNvdXJjZURhdGE+OjppdGVyYXRvciBpdCA9IG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJj
ZURhdGEtPnByb3BlcnR5RGF0YS5iZWdpbigpLCBlbmRJdCA9IG1fY3VycmVudFJ1bGVEYXRhLT5z
dHlsZVNvdXJjZURhdGEtPnByb3BlcnR5RGF0YS5lbmQoKTsgaXQgIT0gZW5kSXQ7ICsraXQpIHsK
ICAgICAgICAgICAgICgqaXQpLnJhbmdlLnN0YXJ0IC09IHByZWZpeExlbmd0aDsKICAgICAgICAg
ICAgICgqaXQpLnJhbmdlLmVuZCAtPSBwcmVmaXhMZW5ndGg7CiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBpZiAoIW1fcnVsZVJhbmdlTWFwKQotICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEgPSAw
OworICAgIGlmIChzdHlsZVNvdXJjZURhdGEpIHsKKyAgICAgICAgKnN0eWxlU291cmNlRGF0YSA9
IG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURhdGEucmVsZWFzZSgpOworICAgICAgICBt
X2N1cnJlbnRSdWxlRGF0YSA9IDA7CisgICAgfQogICAgIHJldHVybiBvazsKIH0KIApAQCAtNTQ3
OSwxMiArNTQ4NSwxNSBAQCBDU1NSdWxlKiBDU1NQYXJzZXI6OmNyZWF0ZVN0eWxlUnVsZShWZWN0
b3I8Q1NTU2VsZWN0b3IqPiogc2VsZWN0b3JzKQogICAgICAgICByZXN1bHQgPSBydWxlLmdldCgp
OwogICAgICAgICBtX3BhcnNlZFN0eWxlT2JqZWN0cy5hcHBlbmQocnVsZS5yZWxlYXNlKCkpOwog
ICAgICAgICBpZiAobV9ydWxlUmFuZ2VNYXApIHsKLSAgICAgICAgICAgIEFTU0VSVChtX2N1cnJl
bnRTdHlsZURhdGEpOwotICAgICAgICAgICAgbV9jdXJyZW50U3R5bGVEYXRhLT5zdHlsZUJvZHlS
YW5nZSA9IFNvdXJjZVJhbmdlKG1fcnVsZUJvZHlTdGFydE9mZnNldCwgbV9ydWxlQm9keUVuZE9m
ZnNldCk7Ci0gICAgICAgICAgICBtX3J1bGVSYW5nZU1hcC0+c2V0KHJlc3VsdCwgbV9jdXJyZW50
U3R5bGVEYXRhLnJlbGVhc2UoKSk7Ci0gICAgICAgICAgICBtX2N1cnJlbnRTdHlsZURhdGEgPSBD
U1NTdHlsZVNvdXJjZURhdGE6OmNyZWF0ZSgpOworICAgICAgICAgICAgQVNTRVJUKG1fY3VycmVu
dFJ1bGVEYXRhKTsKKyAgICAgICAgICAgIG1fY3VycmVudFJ1bGVEYXRhLT5zdHlsZVNvdXJjZURh
dGEtPnN0eWxlQm9keVJhbmdlID0gbV9ydWxlQm9keVJhbmdlOworICAgICAgICAgICAgbV9jdXJy
ZW50UnVsZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlID0gbV9zZWxlY3Rvckxpc3RSYW5nZTsKKyAg
ICAgICAgICAgIG1fcnVsZVJhbmdlTWFwLT5zZXQocmVzdWx0LCBtX2N1cnJlbnRSdWxlRGF0YS5y
ZWxlYXNlKCkpOworICAgICAgICAgICAgbV9jdXJyZW50UnVsZURhdGEgPSBDU1NSdWxlU291cmNl
RGF0YTo6Y3JlYXRlKCk7CisgICAgICAgICAgICBtX2N1cnJlbnRSdWxlRGF0YS0+c3R5bGVTb3Vy
Y2VEYXRhID0gQ1NTU3R5bGVTb3VyY2VEYXRhOjpjcmVhdGUoKTsKICAgICAgICAgfQogICAgIH0K
KyAgICByZXNldFNlbGVjdG9yTGlzdE1hcmtzKCk7CiAgICAgcmVzZXRSdWxlQm9keU1hcmtzKCk7
CiAgICAgY2xlYXJQcm9wZXJ0aWVzKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTU3MzMsMjYg
KzU3NDIsNDQgQEAgdm9pZCBDU1NQYXJzZXI6OnVwZGF0ZUxhc3RTZWxlY3RvckxpbmVBbmRQb3Np
dGlvbigpCiAgICAgbWFya1J1bGVCb2R5U3RhcnQoKTsKIH0KIAordm9pZCBDU1NQYXJzZXI6Om1h
cmtTZWxlY3Rvckxpc3RTdGFydCgpCit7CisgICAgbV9zZWxlY3Rvckxpc3RSYW5nZS5zdGFydCA9
IHl5dGV4dCAtIG1fZGF0YTsKK30KKwordm9pZCBDU1NQYXJzZXI6Om1hcmtTZWxlY3Rvckxpc3RF
bmQoKQoreworICAgIGlmICghbV9jdXJyZW50UnVsZURhdGEpCisgICAgICAgIHJldHVybjsKKyAg
ICBVQ2hhciogbGlzdEVuZCA9IHl5dGV4dDsKKyAgICB3aGlsZSAobGlzdEVuZCA+IG1fZGF0YSAr
IDEpIHsKKyAgICAgICAgaWYgKGlzSFRNTFNwYWNlKCoobGlzdEVuZCAtIDEpKSkKKyAgICAgICAg
ICAgIC0tbGlzdEVuZDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQor
ICAgIG1fc2VsZWN0b3JMaXN0UmFuZ2UuZW5kID0gbGlzdEVuZCAtIG1fZGF0YTsKK30KKwogdm9p
ZCBDU1NQYXJzZXI6Om1hcmtSdWxlQm9keVN0YXJ0KCkKIHsKICAgICB1bnNpZ25lZCBvZmZzZXQg
PSB5eXRleHQgLSBtX2RhdGE7CiAgICAgaWYgKCp5eXRleHQgPT0gJ3snKQogICAgICAgICArK29m
ZnNldDsgLy8gU2tpcCB0aGUgcnVsZSBib2R5IG9wZW5pbmcgYnJhY2UuCi0gICAgaWYgKG9mZnNl
dCA+IG1fcnVsZUJvZHlTdGFydE9mZnNldCkKLSAgICAgICAgbV9ydWxlQm9keVN0YXJ0T2Zmc2V0
ID0gb2Zmc2V0OworICAgIGlmIChvZmZzZXQgPiBtX3J1bGVCb2R5UmFuZ2Uuc3RhcnQpCisgICAg
ICAgIG1fcnVsZUJvZHlSYW5nZS5zdGFydCA9IG9mZnNldDsKIH0KIAogdm9pZCBDU1NQYXJzZXI6
Om1hcmtSdWxlQm9keUVuZCgpCiB7CiAgICAgdW5zaWduZWQgb2Zmc2V0ID0geXl0ZXh0IC0gbV9k
YXRhOwotICAgIGlmIChvZmZzZXQgPiBtX3J1bGVCb2R5RW5kT2Zmc2V0KQotICAgICAgICBtX3J1
bGVCb2R5RW5kT2Zmc2V0ID0gb2Zmc2V0OworICAgIGlmIChvZmZzZXQgPiBtX3J1bGVCb2R5UmFu
Z2UuZW5kKQorICAgICAgICBtX3J1bGVCb2R5UmFuZ2UuZW5kID0gb2Zmc2V0OwogfQogCiB2b2lk
IENTU1BhcnNlcjo6bWFya1Byb3BlcnR5U3RhcnQoKQogewotICAgIHVuc2lnbmVkIG9mZnNldCA9
IHl5dGV4dCAtIG1fZGF0YTsKLSAgICBtX3Byb3BlcnR5U3RhcnRPZmZzZXQgPSBvZmZzZXQ7Cisg
ICAgbV9wcm9wZXJ0eVJhbmdlLnN0YXJ0ID0geXl0ZXh0IC0gbV9kYXRhOwogfQogCiB2b2lkIENT
U1BhcnNlcjo6bWFya1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1By
b3BlcnR5UGFyc2VkKQpAQCAtNTc2MCwxMSArNTc4NywxMSBAQCB2b2lkIENTU1BhcnNlcjo6bWFy
a1Byb3BlcnR5RW5kKGJvb2wgaXNJbXBvcnRhbnRGb3VuZCwgYm9vbCBpc1Byb3BlcnR5UGFyc2Vk
KQogICAgIHVuc2lnbmVkIG9mZnNldCA9IHl5dGV4dCAtIG1fZGF0YTsKICAgICBpZiAoKnl5dGV4
dCA9PSAnOycpIC8vIEluY2x1ZGUgc2VtaWNvbG9uIGludG8gdGhlIHByb3BlcnR5IHRleHQuCiAg
ICAgICAgICsrb2Zmc2V0OwotICAgIG1fcHJvcGVydHlFbmRPZmZzZXQgPSBvZmZzZXQ7Ci0gICAg
aWYgKG1fcHJvcGVydHlTdGFydE9mZnNldCAhPSBVSU5UX01BWCAmJiBtX2N1cnJlbnRTdHlsZURh
dGEpIHsKKyAgICBtX3Byb3BlcnR5UmFuZ2UuZW5kID0gb2Zmc2V0OworICAgIGlmIChtX3Byb3Bl
cnR5UmFuZ2Uuc3RhcnQgIT0gVUlOVF9NQVggJiYgbV9jdXJyZW50UnVsZURhdGEpIHsKICAgICAg
ICAgLy8gVGhpcyBzdHVmZiBpcyBvbmx5IGV4ZWN1dGVkIHdoZW4gdGhlIHN0eWxlIGRhdGEgcmV0
cmlldmFsIGlzIHJlcXVlc3RlZCBieSBjbGllbnQuCi0gICAgICAgIGNvbnN0IHVuc2lnbmVkIHN0
YXJ0ID0gbV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0OwotICAgICAgICBjb25zdCB1bnNpZ25lZCBlbmQg
PSBtX3Byb3BlcnR5RW5kT2Zmc2V0OworICAgICAgICBjb25zdCB1bnNpZ25lZCBzdGFydCA9IG1f
cHJvcGVydHlSYW5nZS5zdGFydDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgZW5kID0gbV9wcm9w
ZXJ0eVJhbmdlLmVuZDsKICAgICAgICAgQVNTRVJUKHN0YXJ0IDwgZW5kKTsKICAgICAgICAgU3Ry
aW5nIHByb3BlcnR5U3RyaW5nID0gU3RyaW5nKG1fZGF0YSArIHN0YXJ0LCBlbmQgLSBzdGFydCku
c3RyaXBXaGl0ZVNwYWNlKCk7CiAgICAgICAgIGlmIChwcm9wZXJ0eVN0cmluZy5lbmRzV2l0aCgi
OyIsIHRydWUpKQpAQCAtNTc3Niw4ICs1ODAzLDggQEAgdm9pZCBDU1NQYXJzZXI6Om1hcmtQcm9w
ZXJ0eUVuZChib29sIGlzSW1wb3J0YW50Rm91bmQsIGJvb2wgaXNQcm9wZXJ0eVBhcnNlZCkKICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBwcm9wZXJ0eVN0cmluZy5sZWZ0KGNvbG9uSW5kZXgpLnN0cmlw
V2hpdGVTcGFjZSgpOwogICAgICAgICBTdHJpbmcgdmFsdWUgPSBwcm9wZXJ0eVN0cmluZy5zdWJz
dHJpbmcoY29sb25JbmRleCArIDEsIHByb3BlcnR5U3RyaW5nLmxlbmd0aCgpKS5zdHJpcFdoaXRl
U3BhY2UoKTsKICAgICAgICAgLy8gVGhlIHByb3BlcnR5IHJhbmdlIGlzIHJlbGF0aXZlIHRvIHRo
ZSBkZWNsYXJhdGlvbiBzdGFydCBvZmZzZXQuCi0gICAgICAgIG1fY3VycmVudFN0eWxlRGF0YS0+
cHJvcGVydHlEYXRhLmFwcGVuZCgKLSAgICAgICAgICAgIENTU1Byb3BlcnR5U291cmNlRGF0YShu
YW1lLCB2YWx1ZSwgaXNJbXBvcnRhbnRGb3VuZCwgaXNQcm9wZXJ0eVBhcnNlZCwgU291cmNlUmFu
Z2UobV9wcm9wZXJ0eVN0YXJ0T2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0LCBtX3Byb3Bl
cnR5RW5kT2Zmc2V0IC0gbV9ydWxlQm9keVN0YXJ0T2Zmc2V0KSkpOworICAgICAgICBtX2N1cnJl
bnRSdWxlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5wcm9wZXJ0eURhdGEuYXBwZW5kKAorICAgICAg
ICAgICAgQ1NTUHJvcGVydHlTb3VyY2VEYXRhKG5hbWUsIHZhbHVlLCBpc0ltcG9ydGFudEZvdW5k
LCBpc1Byb3BlcnR5UGFyc2VkLCBTb3VyY2VSYW5nZShzdGFydCAtIG1fcnVsZUJvZHlSYW5nZS5z
dGFydCwgZW5kIC0gbV9ydWxlQm9keVJhbmdlLnN0YXJ0KSkpOwogICAgIH0KICAgICByZXNldFBy
b3BlcnR5TWFya3MoKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oIGIv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggZjhiMjRkZi4uOGYzYzZkZCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgK
QEAgLTY1LDcgKzY1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIHBhcnNl
VmFsdWUoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBpbnQgcHJvcElkLCBjb25zdCBTdHJp
bmcmLCBib29sIGltcG9ydGFudCk7CiAgICAgICAgIHN0YXRpYyBib29sIHBhcnNlQ29sb3IoUkdC
QTMyJiBjb2xvciwgY29uc3QgU3RyaW5nJiwgYm9vbCBzdHJpY3QgPSBmYWxzZSk7CiAgICAgICAg
IGJvb2wgcGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmlu
ZyYpOwotICAgICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qLCBjb25zdCBTdHJpbmcmLCBDU1NTdHlsZVNvdXJjZURhdGEqIHN0eWxlU291cmNlRGF0
YSA9IDApOworICAgICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24oQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiogc3R5
bGVTb3VyY2VEYXRhID0gMCk7CiAgICAgICAgIGJvb2wgcGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlz
dCosIGNvbnN0IFN0cmluZyYpOwogCiAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0
OwpAQCAtMjQxLDE4ICsyNDEsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBBdG9t
aWNTdHJpbmcgbV9kZWZhdWx0TmFtZXNwYWNlOwogCiAgICAgICAgIC8vIHRva2VuaXplciBtZXRo
b2RzIGFuZCBkYXRhCi0gICAgICAgIHVuc2lnbmVkIG1fcnVsZUJvZHlTdGFydE9mZnNldDsKLSAg
ICAgICAgdW5zaWduZWQgbV9ydWxlQm9keUVuZE9mZnNldDsKLSAgICAgICAgdW5zaWduZWQgbV9w
cm9wZXJ0eVN0YXJ0T2Zmc2V0OwotICAgICAgICB1bnNpZ25lZCBtX3Byb3BlcnR5RW5kT2Zmc2V0
OworICAgICAgICBTb3VyY2VSYW5nZSBtX3NlbGVjdG9yTGlzdFJhbmdlOworICAgICAgICBTb3Vy
Y2VSYW5nZSBtX3J1bGVCb2R5UmFuZ2U7CisgICAgICAgIFNvdXJjZVJhbmdlIG1fcHJvcGVydHlS
YW5nZTsKICAgICAgICAgU3R5bGVSdWxlUmFuZ2VNYXAqIG1fcnVsZVJhbmdlTWFwOwotICAgICAg
ICBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiBtX2N1cnJlbnRTdHlsZURhdGE7CisgICAgICAg
IFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gbV9jdXJyZW50UnVsZURhdGE7CisgICAgICAgIHZv
aWQgbWFya1NlbGVjdG9yTGlzdFN0YXJ0KCk7CisgICAgICAgIHZvaWQgbWFya1NlbGVjdG9yTGlz
dEVuZCgpOwogICAgICAgICB2b2lkIG1hcmtSdWxlQm9keVN0YXJ0KCk7CiAgICAgICAgIHZvaWQg
bWFya1J1bGVCb2R5RW5kKCk7CiAgICAgICAgIHZvaWQgbWFya1Byb3BlcnR5U3RhcnQoKTsKICAg
ICAgICAgdm9pZCBtYXJrUHJvcGVydHlFbmQoYm9vbCBpc0ltcG9ydGFudEZvdW5kLCBib29sIGlz
UHJvcGVydHlQYXJzZWQpOwotICAgICAgICB2b2lkIHJlc2V0UnVsZUJvZHlNYXJrcygpIHsgbV9y
dWxlQm9keVN0YXJ0T2Zmc2V0ID0gbV9ydWxlQm9keUVuZE9mZnNldCA9IDA7IH0KLSAgICAgICAg
dm9pZCByZXNldFByb3BlcnR5TWFya3MoKSB7IG1fcHJvcGVydHlTdGFydE9mZnNldCA9IG1fcHJv
cGVydHlFbmRPZmZzZXQgPSBVSU5UX01BWDsgfQorICAgICAgICB2b2lkIHJlc2V0U2VsZWN0b3JM
aXN0TWFya3MoKSB7IG1fc2VsZWN0b3JMaXN0UmFuZ2Uuc3RhcnQgPSBtX3NlbGVjdG9yTGlzdFJh
bmdlLmVuZCA9IDA7IH0KKyAgICAgICAgdm9pZCByZXNldFJ1bGVCb2R5TWFya3MoKSB7IG1fcnVs
ZUJvZHlSYW5nZS5zdGFydCA9IG1fcnVsZUJvZHlSYW5nZS5lbmQgPSAwOyB9CisgICAgICAgIHZv
aWQgcmVzZXRQcm9wZXJ0eU1hcmtzKCkgeyBtX3Byb3BlcnR5UmFuZ2Uuc3RhcnQgPSBtX3Byb3Bl
cnR5UmFuZ2UuZW5kID0gVUlOVF9NQVg7IH0KICAgICAgICAgaW50IGxleCh2b2lkKiB5eWx2YWwp
OwogICAgICAgICBpbnQgdG9rZW4oKSB7IHJldHVybiB5eVRvazsgfQogICAgICAgICBVQ2hhciog
dGV4dChpbnQqIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmNwcAppbmRl
eCAxNjI4MDMxLi5lYjljMmMxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNv
dXJjZURhdGEuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5U291cmNlRGF0YS5jcHAK
QEAgLTU0LDEzICs1NCw2IEBAIFNvdXJjZVJhbmdlOjpTb3VyY2VSYW5nZSh1bnNpZ25lZCBzdGFy
dCwgdW5zaWduZWQgZW5kKQogewogfQogCi1Tb3VyY2VSYW5nZSYgU291cmNlUmFuZ2U6Om9wZXJh
dG9yPShjb25zdCBTb3VyY2VSYW5nZSYgb3RoZXIpCi17Ci0gICAgdGhpcy0+c3RhcnQgPSBvdGhl
ci5zdGFydDsKLSAgICB0aGlzLT5lbmQgPSBvdGhlci5lbmQ7Ci0gICAgcmV0dXJuICp0aGlzOwot
fQotCiBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OkNTU1Byb3BlcnR5U291cmNlRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50LCBib29sIHBh
cnNlZE9rLCBjb25zdCBTb3VyY2VSYW5nZSYgcmFuZ2UpCiAgICAgOiBuYW1lKG5hbWUpCiAgICAg
LCB2YWx1ZSh2YWx1ZSkKQEAgLTg4LDE2ICs4MSw2IEBAIENTU1Byb3BlcnR5U291cmNlRGF0YTo6
Q1NTUHJvcGVydHlTb3VyY2VEYXRhKCkKIHsKIH0KIAotQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBD
U1NQcm9wZXJ0eVNvdXJjZURhdGE6Om9wZXJhdG9yPShjb25zdCBDU1NQcm9wZXJ0eVNvdXJjZURh
dGEmIG90aGVyKQotewotICAgIG5hbWUgPSBvdGhlci5uYW1lOwotICAgIHZhbHVlID0gb3RoZXIu
dmFsdWU7Ci0gICAgaW1wb3J0YW50ID0gb3RoZXIuaW1wb3J0YW50OwotICAgIHBhcnNlZE9rID0g
b3RoZXIucGFyc2VkT2s7Ci0gICAgcmFuZ2UgPSBvdGhlci5yYW5nZTsKLSAgICByZXR1cm4gKnRo
aXM7Ci19Ci0KIFN0cmluZyBDU1NQcm9wZXJ0eVNvdXJjZURhdGE6OnRvU3RyaW5nKCkgY29uc3QK
IHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZW1wdHlWYWx1ZSwgKCJlIikpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlTb3VyY2VEYXRhLmggYi9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaAppbmRleCBiZWFlOWQwLi5kYjgwZDQ2IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eVNvdXJjZURhdGEuaApAQCAtNDQsNyArNDQsNiBAQCBjbGFzcyBDU1NT
dHlsZVJ1bGU7CiBzdHJ1Y3QgU291cmNlUmFuZ2UgewogICAgIFNvdXJjZVJhbmdlKCk7CiAgICAg
U291cmNlUmFuZ2UodW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCk7Ci0gICAgU291cmNlUmFu
Z2UmIG9wZXJhdG9yPShjb25zdCBTb3VyY2VSYW5nZSYgb3RoZXIpOwogCiAgICAgdW5zaWduZWQg
c3RhcnQ7CiAgICAgdW5zaWduZWQgZW5kOwpAQCAtNTYsOSArNTUsNyBAQCBzdHJ1Y3QgQ1NTUHJv
cGVydHlTb3VyY2VEYXRhIHsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCwgYm9vbCBwYXJzZWRP
aywgY29uc3QgU291cmNlUmFuZ2UmIHJhbmdlKTsKICAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEo
Y29uc3QgQ1NTUHJvcGVydHlTb3VyY2VEYXRhJiBvdGhlcik7CiAgICAgQ1NTUHJvcGVydHlTb3Vy
Y2VEYXRhKCk7Ci0gICAgQUxXQVlTX0lOTElORSB+Q1NTUHJvcGVydHlTb3VyY2VEYXRhKCkgeyB9
CiAKLSAgICBDU1NQcm9wZXJ0eVNvdXJjZURhdGEmIG9wZXJhdG9yPShjb25zdCBDU1NQcm9wZXJ0
eVNvdXJjZURhdGEmIG90aGVyKTsKICAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKICAgICB1
bnNpZ25lZCBoYXNoKCkgY29uc3Q7CiAKQEAgLTgzLDcgKzgwLDE4IEBAIHN0cnVjdCBDU1NTdHls
ZVNvdXJjZURhdGEgOiBwdWJsaWMgUmVmQ291bnRlZDxDU1NTdHlsZVNvdXJjZURhdGE+IHsKICAg
ICBTb3VyY2VSYW5nZSBzdHlsZUJvZHlSYW5nZTsKICAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3Vy
Y2VEYXRhPiBwcm9wZXJ0eURhdGE7CiB9OwotdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlUnVsZSos
IFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+ID4gU3R5bGVSdWxlUmFuZ2VNYXA7CisKK3N0cnVj
dCBDU1NSdWxlU291cmNlRGF0YSA6IHB1YmxpYyBSZWZDb3VudGVkPENTU1J1bGVTb3VyY2VEYXRh
PiB7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+IGNyZWF0ZSgpCisg
ICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IENTU1J1bGVTb3VyY2VEYXRhKCkpOwor
ICAgIH0KKworICAgIC8vIFJhbmdlIG9mIHRoZSBzZWxlY3RvciBsaXN0IGluIHRoZSBlbmNsb3Np
bmcgc291cmNlLgorICAgIFNvdXJjZVJhbmdlIHNlbGVjdG9yTGlzdFJhbmdlOworICAgIFJlZlB0
cjxDU1NTdHlsZVNvdXJjZURhdGE+IHN0eWxlU291cmNlRGF0YTsKK307Cit0eXBlZGVmIEhhc2hN
YXA8Q1NTU3R5bGVSdWxlKiwgUmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiA+IFN0eWxlUnVsZVJh
bmdlTWFwOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU1N0b3JlLmNwcAppbmRleCBiMDE5ODYwLi5lMGI2NThmIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ1NTU3RvcmUuY3BwCkBAIC0xNTgsNyArMTU4LDcgQEAgU3RyaW5nIEluc3Bl
Y3RvckNTU1N0b3JlOjppbmxpbmVTdHlsZVNoZWV0VGV4dChDU1NTdHlsZVNoZWV0KiBzdHlsZVNo
ZWV0KQogCiAKIC8vIEFsbCByYW5nZXMgYXJlOiBbc3RhcnQ7IGVuZCkgKHN0YXJ0IC0gaW5jbHVz
aXZlLCBlbmQgLSBleGNsdXNpdmUpLgotYm9vbCBJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0U3R5bGVT
b3VyY2VEYXRhKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBSZWZQdHI8Q1NTU3R5bGVTb3Vy
Y2VEYXRhPiogcmVzdWx0KQorYm9vbCBJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0UnVsZVNvdXJjZURh
dGEoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4q
IHJlc3VsdCkKIHsKICAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0x
NjYsMTEgKzE2NiwxMyBAQCBib29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURh
dGEoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDUwogICAgIEVsZW1lbnQqIGVs
ZW1lbnQgPSBpbmxpbmVTdHlsZUVsZW1lbnQoc3R5bGUpOwogICAgIGlmIChlbGVtZW50KSB7CiAg
ICAgICAgIC8vIElubGluZTogc3R5bGU9Ii4uLiIuCisgICAgICAgIFJlZlB0cjxDU1NSdWxlU291
cmNlRGF0YT4gcnVsZVNvdXJjZURhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CiAg
ICAgICAgIFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+IHN0eWxlU291cmNlRGF0YSA9IENTU1N0
eWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IGdldFN0eWxl
QXR0cmlidXRlUmFuZ2VzKGVsZW1lbnQsICZzdHlsZVNvdXJjZURhdGEpOwogICAgICAgICBpZiAo
IXN1Y2Nlc3MpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICpyZXN1bHQgPSBz
dHlsZVNvdXJjZURhdGE7CisgICAgICAgIHJ1bGVTb3VyY2VEYXRhLT5zdHlsZVNvdXJjZURhdGEg
PSBzdHlsZVNvdXJjZURhdGEucmVsZWFzZSgpOworICAgICAgICAqcmVzdWx0ID0gcnVsZVNvdXJj
ZURhdGE7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtMTc4LDcgKzE4MCw3IEBA
IGJvb2wgSW5zcGVjdG9yQ1NTU3RvcmU6OmdldFN0eWxlU291cmNlRGF0YShDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSwgUmVmUHRyPENTCiAgICAgaWYgKCFzdHlsZVNoZWV0KQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU291cmNlRGF0YT4gPiog
cmFuZ2VzVmVjdG9yID0gMDsKKyAgICBWZWN0b3I8UmVmUHRyPENTU1J1bGVTb3VyY2VEYXRhPiA+
KiByYW5nZXNWZWN0b3IgPSAwOwogICAgIFN0eWxlU2hlZXRUb09mZnNldHNNYXA6Oml0ZXJhdG9y
IGl0ID0gbV9zdHlsZVNoZWV0VG9PZmZzZXRzLmZpbmQoc3R5bGVTaGVldCk7CiAgICAgaWYgKGl0
ID09IG1fc3R5bGVTaGVldFRvT2Zmc2V0cy5lbmQoKSkgewogICAgICAgICBTdHJpbmcgdGV4dCA9
IHN0eWxlU2hlZXRUZXh0KGJpbmRTdHlsZVNoZWV0KHN0eWxlU2hlZXQpKTsKQEAgLTE4Nyw3ICsx
ODksNyBAQCBib29sIEluc3BlY3RvckNTU1N0b3JlOjpnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5
bGVEZWNsYXJhdGlvbiogc3R5bGUsIFJlZlB0cjxDUwogICAgICAgICAgICAgQ1NTUGFyc2VyIHA7
CiAgICAgICAgICAgICBTdHlsZVJ1bGVSYW5nZU1hcCBydWxlUmFuZ2VNYXA7CiAgICAgICAgICAg
ICBwLnBhcnNlU2hlZXQobmV3U3R5bGVTaGVldC5nZXQoKSwgdGV4dCwgMCwgJnJ1bGVSYW5nZU1h
cCk7Ci0gICAgICAgICAgICByYW5nZXNWZWN0b3IgPSBuZXcgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNvdXJjZURhdGE+ID47CisgICAgICAgICAgICByYW5nZXNWZWN0b3IgPSBuZXcgVmVjdG9yPFJl
ZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gPjsKICAgICAgICAgICAgIGV4dHJhY3RSYW5nZXMobmV3
U3R5bGVTaGVldC5nZXQoKSwgcnVsZVJhbmdlTWFwLCByYW5nZXNWZWN0b3IpOwogICAgICAgICAg
ICAgbV9zdHlsZVNoZWV0VG9PZmZzZXRzLnNldChzdHlsZVNoZWV0LCByYW5nZXNWZWN0b3IpOwog
ICAgICAgICB9CkBAIC0yMTEsNyArMjEzLDcgQEAgYm9vbCBJbnNwZWN0b3JDU1NTdG9yZTo6Z2V0
U3R5bGVTb3VyY2VEYXRhKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBSZWZQdHI8Q1MKICAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTU3RvcmU6OmV4dHJhY3RSYW5n
ZXMoQ1NTU3R5bGVTaGVldCogc3R5bGVTaGVldCwgY29uc3QgU3R5bGVSdWxlUmFuZ2VNYXAmIHJ1
bGVSYW5nZU1hcCwgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+ID4qIHJhbmdlc1Zl
Y3RvcikKK3ZvaWQgSW5zcGVjdG9yQ1NTU3RvcmU6OmV4dHJhY3RSYW5nZXMoQ1NTU3R5bGVTaGVl
dCogc3R5bGVTaGVldCwgY29uc3QgU3R5bGVSdWxlUmFuZ2VNYXAmIHJ1bGVSYW5nZU1hcCwgVmVj
dG9yPFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gPiogcmFuZ2VzVmVjdG9yKQogewogICAgIGZv
ciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHN0eWxlU2hlZXQtPmxlbmd0aCgpOyBpIDwgbGVu
Z3RoOyArK2kpIHsKICAgICAgICAgQ1NTU3R5bGVSdWxlKiBydWxlID0gYXNDU1NTdHlsZVJ1bGUo
c3R5bGVTaGVldC0+aXRlbShpKSk7CkBAIC0yMzcsNyArMjM5LDcgQEAgYm9vbCBJbnNwZWN0b3JD
U1NTdG9yZTo6Z2V0U3R5bGVBdHRyaWJ1dGVSYW5nZXMoTm9kZSogbm9kZSwgUmVmUHRyPENTU1N0
eWxlU291cmMKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gdGVtcERl
Y2xhcmF0aW9uID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwogICAgIENT
U1BhcnNlciBwOwotICAgIHAucGFyc2VEZWNsYXJhdGlvbih0ZW1wRGVjbGFyYXRpb24uZ2V0KCks
IHN0eWxlVGV4dCwgcmVzdWx0LT5nZXQoKSk7CisgICAgcC5wYXJzZURlY2xhcmF0aW9uKHRlbXBE
ZWNsYXJhdGlvbi5nZXQoKSwgc3R5bGVUZXh0LCByZXN1bHQpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTU3RvcmUuaAppbmRleCA5YjMyOWRmLi4yNWE5
ZDE1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NTdG9yZS5oCisr
KyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU1N0b3JlLmgKQEAgLTU1LDcgKzU1LDcg
QEAgdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlRGVjbGFyYXRpb24qLCBsb25nPiBTdHlsZVRvSWRN
YXA7CiB0eXBlZGVmIEhhc2hNYXA8bG9uZywgUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+ID4g
SWRUb1N0eWxlTWFwOwogdHlwZWRlZiBIYXNoTWFwPENTU1N0eWxlUnVsZSosIGxvbmc+IFJ1bGVU
b0lkTWFwOwogdHlwZWRlZiBIYXNoTWFwPGxvbmcsIFJlZlB0cjxDU1NTdHlsZVJ1bGU+ID4gSWRU
b1J1bGVNYXA7Ci10eXBlZGVmIEhhc2hNYXA8Q1NTU3R5bGVTaGVldCosIFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTb3VyY2VEYXRhPiA+KiA+IFN0eWxlU2hlZXRUb09mZnNldHNNYXA7Cit0eXBlZGVm
IEhhc2hNYXA8Q1NTU3R5bGVTaGVldCosIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZVNvdXJjZURhdGE+
ID4qID4gU3R5bGVTaGVldFRvT2Zmc2V0c01hcDsKIHR5cGVkZWYgSGFzaE1hcDxDU1NTdHlsZVNo
ZWV0KiwgbG9uZz4gU3R5bGVTaGVldFRvSWRNYXA7CiB0eXBlZGVmIEhhc2hNYXA8bG9uZywgUmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4gSWRUb1N0eWxlU2hlZXRNYXA7CiB0eXBlZGVmIEhhc2hNYXA8
bG9uZywgU3RyaW5nPiBJZFRvU3R5bGVTaGVldFRleHRNYXA7CkBAIC03MSw3ICs3MSw3IEBAIHB1
YmxpYzoKICAgICBJbnNwZWN0b3JDU1NTdG9yZShJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyKTsKICAgICB+SW5zcGVjdG9yQ1NTU3RvcmUoKTsKICAgICB2b2lkIHJlc2V0
KCk7Ci0gICAgYm9vbCBnZXRTdHlsZVNvdXJjZURhdGEoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIFJl
ZlB0cjxDU1NTdHlsZVNvdXJjZURhdGE+KiByZXN1bHQpOworICAgIGJvb2wgZ2V0UnVsZVNvdXJj
ZURhdGEoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4qIHJl
c3VsdCk7CiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVGb3JJZChsb25nIHN0eWxlSWQp
OwogICAgIENTU1N0eWxlU2hlZXQqIHN0eWxlU2hlZXRGb3JJZChsb25nIHN0eWxlU2hlZXRJZCk7
CiAgICAgQ1NTU3R5bGVSdWxlKiBydWxlRm9ySWQobG9uZyBzdHlsZVJ1bGVJZCk7CkBAIC04OCw3
ICs4OCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIENTU1N0eWxlUnVsZSogYXNDU1NTdHlsZVJ1
bGUoU3R5bGVCYXNlKik7CiAgICAgU3RyaW5nIGlubGluZVN0eWxlU2hlZXRUZXh0KENTU1N0eWxl
U2hlZXQqKTsKICAgICBib29sIHJlc291cmNlU3R5bGVTaGVldFRleHQoQ1NTU3R5bGVTaGVldCos
IFN0cmluZyogcmVzdWx0KTsKLSAgICB2b2lkIGV4dHJhY3RSYW5nZXMoQ1NTU3R5bGVTaGVldCos
IGNvbnN0IFN0eWxlUnVsZVJhbmdlTWFwJiwgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNvdXJjZURh
dGE+ID4qIHJhbmdlc1ZlY3Rvcik7CisgICAgdm9pZCBleHRyYWN0UmFuZ2VzKENTU1N0eWxlU2hl
ZXQqLCBjb25zdCBTdHlsZVJ1bGVSYW5nZU1hcCYsIFZlY3RvcjxSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+ID4qIHJhbmdlc1ZlY3Rvcik7CiAgICAgYm9vbCBnZXRTdHlsZUF0dHJpYnV0ZVJhbmdl
cyhOb2RlKiBwYXJlbnROb2RlLCBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiogcmVzdWx0KTsK
IAogICAgIFN0eWxlVG9JZE1hcCBtX3N0eWxlVG9JZDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAppbmRleCBjMWMyMWI2Li4yMzE2ZjA0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMjIzLDE4ICsxMjIzLDI1IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldFN0eWxlU291cmNlRGF0YShsb25nIHN0eWxlSWQsIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+CiAgICAgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUgPSBjc3NTdG9yZSgp
LT5zdHlsZUZvcklkKHN0eWxlSWQpOwogICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybjsK
LSAgICBSZWZQdHI8Q1NTU3R5bGVTb3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gQ1NTU3R5bGVTb3Vy
Y2VEYXRhOjpjcmVhdGUoKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBjc3NTdG9yZSgpLT5nZXRTdHls
ZVNvdXJjZURhdGEoc3R5bGUsICZzb3VyY2VEYXRhKTsKKyAgICBSZWZQdHI8Q1NTUnVsZVNvdXJj
ZURhdGE+IHNvdXJjZURhdGEgPSBDU1NSdWxlU291cmNlRGF0YTo6Y3JlYXRlKCk7CisgICAgYm9v
bCBzdWNjZXNzID0gY3NzU3RvcmUoKS0+Z2V0UnVsZVNvdXJjZURhdGEoc3R5bGUsICZzb3VyY2VE
YXRhKTsKICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgIHJldHVybjsKICAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiByZXN1bHQgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworCiAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYm9keVJhbmdlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVh
dGUoKTsKICAgICByZXN1bHQtPnNldE9iamVjdCgiYm9keVJhbmdlIiwgYm9keVJhbmdlKTsKLSAg
ICBib2R5UmFuZ2UtPnNldE51bWJlcigic3RhcnQiLCBzb3VyY2VEYXRhLT5zdHlsZUJvZHlSYW5n
ZS5zdGFydCk7Ci0gICAgYm9keVJhbmdlLT5zZXROdW1iZXIoImVuZCIsIHNvdXJjZURhdGEtPnN0
eWxlQm9keVJhbmdlLmVuZCk7CisgICAgYm9keVJhbmdlLT5zZXROdW1iZXIoInN0YXJ0Iiwgc291
cmNlRGF0YS0+c3R5bGVTb3VyY2VEYXRhLT5zdHlsZUJvZHlSYW5nZS5zdGFydCk7CisgICAgYm9k
eVJhbmdlLT5zZXROdW1iZXIoImVuZCIsIHNvdXJjZURhdGEtPnN0eWxlU291cmNlRGF0YS0+c3R5
bGVCb2R5UmFuZ2UuZW5kKTsKKworICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IHNlbGVjdG9y
UmFuZ2UgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOworICAgIHJlc3VsdC0+c2V0T2JqZWN0
KCJzZWxlY3RvclJhbmdlIiwgc2VsZWN0b3JSYW5nZSk7CisgICAgc2VsZWN0b3JSYW5nZS0+c2V0
TnVtYmVyKCJzdGFydCIsIHNvdXJjZURhdGEtPnNlbGVjdG9yTGlzdFJhbmdlLnN0YXJ0KTsKKyAg
ICBzZWxlY3RvclJhbmdlLT5zZXROdW1iZXIoImVuZCIsIHNvdXJjZURhdGEtPnNlbGVjdG9yTGlz
dFJhbmdlLmVuZCk7CisKICAgICBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+IHByb3BlcnR5UmFuZ2Vz
ID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIHJlc3VsdC0+c2V0QXJyYXkoInByb3Bl
cnR5RGF0YSIsIHByb3BlcnR5UmFuZ2VzKTsKLSAgICBWZWN0b3I8Q1NTUHJvcGVydHlTb3VyY2VE
YXRhPiYgcHJvcGVydHlEYXRhID0gc291cmNlRGF0YS0+cHJvcGVydHlEYXRhOworICAgIFZlY3Rv
cjxDU1NQcm9wZXJ0eVNvdXJjZURhdGE+JiBwcm9wZXJ0eURhdGEgPSBzb3VyY2VEYXRhLT5zdHls
ZVNvdXJjZURhdGEtPnByb3BlcnR5RGF0YTsKICAgICBmb3IgKFZlY3RvcjxDU1NQcm9wZXJ0eVNv
dXJjZURhdGE+OjppdGVyYXRvciBpdCA9IHByb3BlcnR5RGF0YS5iZWdpbigpOyBpdCAhPSBwcm9w
ZXJ0eURhdGEuZW5kKCk7ICsraXQpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4g
cHJvcGVydHlSYW5nZSA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAgICAgICAgIHByb3Bl
cnR5UmFuZ2UtPnNldFN0cmluZygibmFtZSIsIGl0LT5uYW1lKTsK
</data>
<flag name="review"
          id="59704"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>