<?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>48843</bug_id>
          
          <creation_ts>2010-11-02 09:35:41 -0700</creation_ts>
          <short_desc>Web Inspector: [Chromium] Profiling must survive navigation</short_desc>
          <delta_ts>2010-11-08 06:03:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mikhail Naganov">mnaganov</reporter>
          <assigned_to name="Mikhail Naganov">mnaganov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>ossy</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</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>303410</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-02 09:35:41 -0700</bug_when>
    <thetext>From crbug/60998:

What steps will reproduce the problem?
1. Navigate to www.google.com
2. Open inspector(Ctrl+Shift+I) and go to Profile tab
3. Start profiling
4. Reload the page
5. Stop profiling

What is the expected output? 
Profile should be present

What do you see instead?
Profile is not visible

----

Also, it would be nice to resume profiling when navigation leads to a page from other domain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303429</commentid>
    <comment_count>1</comment_count>
      <attachid>72688</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-02 09:48:22 -0700</bug_when>
    <thetext>Created attachment 72688
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303434</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-11-02 09:55:14 -0700</bug_when>
    <thetext>Attachment 72688 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/inspector/InspectorProfilerAgent.cpp:207:  More than one command on the same line in if  [whitespace/parens] [4]
WebCore/inspector/InspectorProfilerAgent.cpp:226:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 2 in 10 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>303475</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-11-02 10:54:29 -0700</bug_when>
    <thetext>Attachment 72688 did not build on qt:
Build output: http://queues.webkit.org/results/4980018</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>303977</commentid>
    <comment_count>4</comment_count>
      <attachid>72811</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-03 04:29:06 -0700</bug_when>
    <thetext>Created attachment 72811
fix style and qt errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304042</commentid>
    <comment_count>5</comment_count>
      <attachid>72826</attachid>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-03 08:38:09 -0700</bug_when>
    <thetext>Created attachment 72826
profiles list in Inspector is now cleaned up on any reload, this simplifies code a lot</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304939</commentid>
    <comment_count>6</comment_count>
      <attachid>72826</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-11-04 15:43:45 -0700</bug_when>
    <thetext>Comment on attachment 72826
profiles list in Inspector is now cleaned up on any reload, this simplifies code a lot

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

Lack of tests =&gt; sadness

&gt; WebCore/inspector/InspectorController.cpp:677
&gt; -void InspectorController::restoreProfiler()
&gt; +void InspectorController::restoreProfiler(bool reset)

Consider using an enum rather than a bool here to make the call sites more readable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306093</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2010-11-08 05:54:06 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/71511 broke Qt minimal build:
../../../WebCore/inspector/InspectorController.cpp:241: error: ‘startUserInitiatedProfiling’ was not declared in this scope

Using of startUserInitiatedProfiling must be guarded 
by ENABLE(JAVASCRIPT_DEBUGGER) as its declaration.

Could you fix it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>306096</commentid>
    <comment_count>8</comment_count>
    <who name="Mikhail Naganov">mnaganov</who>
    <bug_when>2010-11-08 06:03:46 -0800</bug_when>
    <thetext>Manually committed as http://trac.webkit.org/changeset/71511 + r71513


2010-11-08  Mikhail Naganov  &lt;mnaganov@chromium.org&gt;

        Reviewed by Adam Barth.

        Web Inspector [Chromium]: Make CPU profiling to survive navigation.

        https://bugs.webkit.org/show_bug.cgi?id=48843

        * inspector/Inspector.idl:
        * inspector/InspectorController.cpp:
        (WebCore::InspectorController::restoreInspectorStateFromCookie):
        (WebCore::InspectorController::reuseFrontend):
        (WebCore::InspectorController::disconnectFrontend):
        (WebCore::InspectorController::populateScriptObjects):
        (WebCore::InspectorController::restoreProfiler):
        (WebCore::InspectorController::didCommitLoad):
        (WebCore::InspectorController::startUserInitiatedProfiling):
        (WebCore::InspectorController::stopUserInitiatedProfiling):
        * inspector/InspectorController.h:
        (WebCore::InspectorController::startProfiling):
        (WebCore::InspectorController::stopProfiling):
        * inspector/InspectorProfilerAgent.cpp:
        (WebCore::InspectorProfilerAgent::startUserInitiatedProfiling):
        (WebCore::InspectorProfilerAgent::stopUserInitiatedProfiling):
        * inspector/InspectorProfilerAgent.h:
        * inspector/InspectorState.cpp:
        (WebCore::InspectorState::InspectorState):
        * inspector/InspectorState.h:
        * inspector/front-end/ProfilesPanel.js:
        (WebInspector.ProfilesPanel.prototype.hasTemporaryProfile):
        (WebInspector.ProfilesPanel.prototype.hasProfile):
        * inspector/front-end/inspector.js:
        (WebInspector.setRecordingProfile):</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72688</attachid>
            <date>2010-11-02 09:48:22 -0700</date>
            <delta_ts>2010-11-03 04:29:06 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>patch-48843</filename>
            <type>text/plain</type>
            <size>15123</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzAxNmVkOS4uNGIwN2Y3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0xMS0wMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgW0Nocm9taXVtXTogTWFrZSBDUFUg
cHJvZmlsaW5nIHRvIHN1cnZpdmUgbmF2aWdhdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4NDMKKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0
b3JTdGF0ZUZyb21Db29raWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnJlc3RvcmVQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3RhdGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudXBk
YXRlUHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUuaGFzVGVtcG9yYXJ5UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGUuaGFzUHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUHJvZmlsZXNQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisKIDIwMTAt
MTAtMzEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXgg
ZTZlMGE3Zi4uOWY3ZGUxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC00OSw2ICs0OSw3
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW25vdGlmeV0gdm9pZCByZW1vdmVSZXNvdXJjZShv
dXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCByZXNl
dCgpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHJlc2V0UHJvZmlsZXNQYW5lbCgpOworICAgICAg
ICBbbm90aWZ5XSB2b2lkIHVwZGF0ZVByb2ZpbGVzUGFuZWwob3V0IHVuc2lnbmVkIGxvbmcgcHJv
ZmlsZXNMaXN0SWQpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHNldENoaWxkTm9kZXMob3V0IGxv
bmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgc2V0
RGV0YWNoZWRSb290KG91dCBPYmplY3Qgcm9vdCk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgc2V0
RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOwpAQCAtMTUzLDEwICsxNTQsMTAgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGVuYWJsZVByb2ZpbGVyKGlu
IGJvb2xlYW4gYWx3YXlzKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBkaXNh
YmxlUHJvZmlsZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAgIFtoYW5kbGVyPVByb2Zp
bGVyXSB2b2lkIHN0YXJ0UHJvZmlsaW5nKCk7Ci0gICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2
b2lkIHN0b3BQcm9maWxpbmcoKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBz
dGFydFByb2ZpbGluZygpOworICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHN0b3BQ
cm9maWxpbmcoKTsKIAotICAgICAgICBbaGFuZGxlcj1Qcm9maWxlcl0gdm9pZCBnZXRQcm9maWxl
SGVhZGVycyhvdXQgQXJyYXkgaGVhZGVycyk7CisgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2
b2lkIGdldFByb2ZpbGVIZWFkZXJzKG91dCB1bnNpZ25lZCBsb25nIHByb2ZpbGVzTGlzdElkLCBv
dXQgQXJyYXkgaGVhZGVycyk7CiAgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2b2lkIGdldFBy
b2ZpbGUoaW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgT2JqZWN0IHBy
b2ZpbGUpOwogCiAgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2b2lkIHJlbW92ZVByb2ZpbGUo
aW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWJiMzkxOS4uY2YyODZjYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI1NCw2ICsyNTQsOCBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUo
Y29uc3QgU3RyaW5nJiBpbnNwZWN0bwogICAgIG1fc3RhdGUtPnJlc3RvcmVGcm9tSW5zcGVjdG9y
Q29va2llKGluc3BlY3RvclN0YXRlQ29va2llKTsKICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVh
bihJbnNwZWN0b3JTdGF0ZTo6dGltZWxpbmVQcm9maWxlckVuYWJsZWQpKQogICAgICAgICBzdGFy
dFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0
b3JTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0VXNlckluaXRp
YXRlZFByb2ZpbGluZygpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Qo
Tm9kZSogbm9kZSkKQEAgLTU4NSw3ICs1ODcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
ICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldEZyb250ZW5kKDApOwotICAgIG1fcHJvZmlsZXJBZ2Vu
dC0+c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKKyAgICBtX3Byb2ZpbGVyQWdlbnQtPnN0
b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKHRydWUpOwogI2VuZGlmCiAKICAgICByZWxlYXNlRnJv
bnRlbmRMaWZldGltZUFnZW50cygpOwpAQCAtNzAwLDYgKzcwMiw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVzdG9yZVByb2ZpbGVyKCkKICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldEZy
b250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmICghU2NyaXB0UHJvZmlsZXI6OmlzUHJv
ZmlsZXJBbHdheXNFbmFibGVkKCkgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0
ZTo6cHJvZmlsZXJBbHdheXNFbmFibGVkKSkKICAgICAgICAgZW5hYmxlUHJvZmlsZXIoKTsKKyAg
ICBtX3Byb2ZpbGVyQWdlbnQtPnVwZGF0ZVN0YXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNzc5LDYg
Kzc4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgVVNFKEpTQykKKyAgICAgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRl
ZFByb2ZpbGluZyh0cnVlKTsKICAgICAgICAgbV9wcm9maWxlckFnZW50LT5yZXNldFN0YXRlKCk7
CiAjZW5kaWYKIApAQCAtMTY2Niw2ICsxNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQogICAgIGlmICghZW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9wcm9maWxlckFnZW50LT5zdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjp1c2VySW5p
dGlhdGVkUHJvZmlsaW5nLCB0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCkBAIC0xNjczLDYgKzE2NzgsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAgICBpZiAo
IWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcHJvZmlsZXJBZ2VudC0+c3RvcFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3Rv
clN0YXRlOjp1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6cHJvZmlsZXJFbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2NDA5ODdiLi5hZjc4Y2Q3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yNTYsNyArMjU2LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAg
ICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKSBjb25zdDsKICAgICBTdHJp
bmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2Zp
bGVOdW1iZXIgPSBmYWxzZSk7CisgICAgdm9pZCBzdGFydFByb2ZpbGluZygpIHsgc3RhcnRVc2Vy
SW5pdGlhdGVkUHJvZmlsaW5nKCk7IH0KICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFByb2Zp
bGluZygpOworICAgIHZvaWQgc3RvcFByb2ZpbGluZygpIHsgc3RvcFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsgfQogICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKICAgICB2
b2lkIGVuYWJsZVByb2ZpbGVyKGJvb2wgYWx3YXlzID0gZmFsc2UsIGJvb2wgc2tpcFJlY29tcGls
ZSA9IGZhbHNlKTsKICAgICB2b2lkIGRpc2FibGVQcm9maWxlcihib29sIGFsd2F5cyA9IGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
NzFjNzIzMS4uMDhjOTNiZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAKQEAgLTE0Niw4ICsxNDYsOSBAQCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJp
bmc6Om51bWJlcihtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcikpOwogfQogCi12
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFBy
b2ZpbGVIZWFkZXJzKHVuc2lnbmVkIGxvbmcqIGhlYWRlcnNJZCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogaGVhZGVycykKIHsKKyAgICAqaGVhZGVyc0lkID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oJm1fcHJvZmlsZXMpOwogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0Vu
ZCA9IG1fcHJvZmlsZXMuZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQg
PSBtX3Byb2ZpbGVzLmJlZ2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQogICAgICAgICAo
KmhlYWRlcnMpLT5wdXNoT2JqZWN0KGNyZWF0ZVByb2ZpbGVIZWFkZXIoKml0LT5zZWNvbmQpKTsK
QEAgLTE5NSw4ICsxOTYsMTUgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0
YXRlKCkKICAgICAgICAgbV9mcm9udGVuZC0+cmVzZXRQcm9maWxlc1BhbmVsKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dXBkYXRlU3RhdGUoKQoreworICAgIGlmIChtX2Zy
b250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT51cGRhdGVQcm9maWxlc1BhbmVsKHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KCZtX3Byb2ZpbGVzKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKIHsKKyAgICBpZiAobV9y
ZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkgcmV0dXJuOwogICAgIGlmICghZW5hYmxlZCgp
KSB7CiAgICAgICAgIGVuYWJsZShmYWxzZSk7CiAgICAgICAgIFNjcmlwdERlYnVnU2VydmVyOjpz
aGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtMjEzLDggKzIyMSw5IEBAIHZv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkK
ICAgICB0b2dnbGVSZWNvcmRCdXR0b24odHJ1ZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudDo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQordm9pZCBJbnNwZWN0b3JQcm9m
aWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVByb2ZpbGUp
CiB7CisgICAgaWYgKCFtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlKSByZXR1cm47CiAg
ICAgbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSA9IGZhbHNlOwogICAgIFN0cmluZyB0
aXRsZSA9IGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5hbWUoKTsKICNpZiBVU0UoSlND
KQpAQCAtMjI2LDcgKzIzNSwxMCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0b3BV
c2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICNlbmRpZgogICAgIFJlZlB0cjxTY3JpcHRQcm9maWxl
PiBwcm9maWxlID0gU2NyaXB0UHJvZmlsZXI6OnN0b3Aoc2NyaXB0U3RhdGUsIHRpdGxlKTsKICAg
ICBpZiAocHJvZmlsZSkKLSAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJpbmcoKSk7
CisgICAgICAgIGlmICghaWdub3JlUHJvZmlsZSkKKyAgICAgICAgICAgIGFkZFByb2ZpbGUocHJv
ZmlsZSwgMCwgU3RyaW5nKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhZGRQcm9maWxl
RmluaXNoZWRNZXNzYWdlVG9Db25zb2xlKHByb2ZpbGUsIDAsIFN0cmluZygpKTsKICAgICB0b2dn
bGVSZWNvcmRCdXR0b24oZmFsc2UpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQ
cm9maWxlckFnZW50LmgKaW5kZXggNDIxZWZiMC4uZWE4OTlkOCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtNjAsMTggKzYwLDE3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBpbGUpOwogICAgIGJvb2wgZW5hYmxlZCgp
IHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmluZyBnZXRDdXJyZW50VXNlckluaXRpYXRl
ZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmlsZU51bWJlciA9IGZhbHNlKTsKLSAgICB2
b2lkIGdldFByb2ZpbGVIZWFkZXJzKFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGhlYWRlcnMpOwor
ICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnModW5zaWduZWQgbG9uZyogaGVhZGVyc0lkLCBSZWZQ
dHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKTsKICAgICB2b2lkIGdldFByb2ZpbGUoY29uc3Qg
U3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBwcm9m
aWxlT2JqZWN0KTsKICAgICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKSB7
IHJldHVybiBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9maWxlOyB9CiAgICAgdm9pZCByZW1v
dmVQcm9maWxlKGNvbnN0IFN0cmluZyYgdHlwZSwgdW5zaWduZWQgdWlkKTsKICAgICB2b2lkIHJl
c2V0U3RhdGUoKTsKICAgICB2b2lkIHNldEZyb250ZW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0KLSAgICB2b2lkIHN0YXJ0UHJvZmlsaW5n
KCkgeyBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsgfQogICAgIHZvaWQgc3RhcnRVc2Vy
SW5pdGlhdGVkUHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBzdG9wUHJvZmlsaW5nKCkgeyBzdG9wVXNl
ckluaXRpYXRlZFByb2ZpbGluZygpOyB9Ci0gICAgdm9pZCBzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZygpOworICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoYm9vbCBpZ25vcmVQ
cm9maWxlID0gZmFsc2UpOwogICAgIHZvaWQgdGFrZUhlYXBTbmFwc2hvdCgpOwogICAgIHZvaWQg
dG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxpbmcpOworICAgIHZvaWQgdXBkYXRlU3Rh
dGUoKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8dW5zaWduZWQgaW50LCBSZWZQ
dHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc01hcDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
YXRlLmNwcAppbmRleCBlNmQzMDQ0Li5mNjIyNjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
U3RhdGUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIEluc3BlY3RvclN0YXRlOjpJbnNwZWN0b3JTdGF0
ZShJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICByZWdpc3RlckxvbmcoaW5zcGVjdG9yQXR0
YWNoZWRIZWlnaHQsIEluc3BlY3RvckNvbnRyb2xsZXI6OmRlZmF1bHRBdHRhY2hlZEhlaWdodCwg
KGNvbnN0IGNoYXIqKTAsICJpbnNwZWN0b3JBdHRhY2hlZEhlaWdodCIpOwogICAgIHJlZ2lzdGVy
TG9uZyhwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCAwLCAicGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIs
IChjb25zdCBjaGFyKikwKTsKICAgICByZWdpc3RlckJvb2xlYW4oY29uc29sZU1lc3NhZ2VzRW5h
YmxlZCwgZmFsc2UsICJjb25zb2xlTWVzc2FnZXNFbmFibGVkIiwgKGNvbnN0IGNoYXIqKTApOwor
ICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSwgInVzZXJJ
bml0aWF0ZWRQcm9maWxpbmciLCAoY29uc3QgY2hhciopMCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
U3RhdGU6OnJlc3RvcmVGcm9tSW5zcGVjdG9yQ29va2llKGNvbnN0IFN0cmluZyYganNvbikKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCmluZGV4IDM4N2YzYzcuLjJkODNhMzYgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAgICAg
IGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0LAogICAgICAgICBwYXVzZU9uRXhjZXB0aW9uc1N0YXRl
LAogICAgICAgICBjb25zb2xlTWVzc2FnZXNFbmFibGVkLAorICAgICAgICB1c2VySW5pdGlhdGVk
UHJvZmlsaW5nLAogICAgICAgICBsYXN0UHJvcGVydHlJZAogICAgIH07CiAKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggY2EwMmY5ZS4uMDBkOGE4
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAg
LTE4Nyw2ICsxODcsMTUgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0sCiAKKyAgICB1cGRhdGVQcm9maWxlczog
ZnVuY3Rpb24ocHJvZmlsZXNMaXN0SWQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcHJvZmls
ZXNMaXN0SWQgJiYgdGhpcy5fcHJvZmlsZXNMaXN0SWQgIT0gcHJvZmlsZXNMaXN0SWQpIHsKKyAg
ICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlKQor
ICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUHJvZmlsZXMoKTsKKyAgICAgICAgfQorICAg
IH0sCisKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgdGhpcy5fcHJvZmlsZXMubGVuZ3RoOyArK2kpCkBAIC0yMDEsNiArMjEwLDcgQEAg
V2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9w
cm9maWxlR3JvdXBzID0ge307CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVHcm91cHNGb3JMaW5rcyA9
IHt9CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVzV2VyZVJlcXVlc3RlZCA9IGZhbHNlOworICAgICAg
ICB0aGlzLl9wcm9maWxlc0xpc3RJZCA9IG51bGw7CiAKICAgICAgICAgdGhpcy5zaWRlYmFyVHJl
ZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic29tZS1leHBhbmRhYmxlIik7CiAKQEAgLTM4Niw2
ICszOTYsMjAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAg
ICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAgICBoYXNUZW1wb3JhcnlQcm9maWxlOiBm
dW5jdGlvbih0eXBlSWQpCisgICAgeworICAgICAgICB2YXIgcHJvZmlsZXNDb3VudCA9IHRoaXMu
X3Byb2ZpbGVzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9maWxlc0Nv
dW50OyArK2kpCisgICAgICAgICAgICBpZiAodGhpcy5fcHJvZmlsZXNbaV0udHlwZUlkID09PSB0
eXBlSWQgJiYgdGhpcy5fcHJvZmlsZXNbaV0uaXNUZW1wb3JhcnkpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgaGFzUHJv
ZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX3By
b2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShwcm9maWxlLnVpZCwgcHJvZmlsZS50eXBlSWQpXTsK
KyAgICB9LAorCiAgICAgdXBkYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKICAgICB7CiAg
ICAgICAgIHZhciBwcm9maWxlc0NvdW50ID0gdGhpcy5fcHJvZmlsZXMubGVuZ3RoOwpAQCAtNTM0
LDE0ICs1NTgsMTYgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICBpZiAoIXRoaXMuX3Byb2ZpbGVyRW5hYmxlZCB8fCB0aGlzLl9wcm9maWxlc1dlcmVS
ZXF1ZXN0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZnVuY3Rpb24gcG9wdWxh
dGVDYWxsYmFjayhwcm9maWxlSGVhZGVycykgeworICAgICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNh
bGxiYWNrKHByb2ZpbGVzTGlzdElkLCBwcm9maWxlSGVhZGVycykgeworICAgICAgICAgICAgdGhp
cy5fcHJvZmlsZXNMaXN0SWQgPSBwcm9maWxlc0xpc3RJZDsKICAgICAgICAgICAgIHByb2ZpbGVI
ZWFkZXJzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1cm4gYS51aWQgLSBiLnVpZDsgfSk7CiAg
ICAgICAgICAgICB2YXIgcHJvZmlsZUhlYWRlcnNMZW5ndGggPSBwcm9maWxlSGVhZGVycy5sZW5n
dGg7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb2ZpbGVIZWFkZXJzTGVuZ3Ro
OyArK2kpCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFByb2ZpbGVIZWFkZXIocHJv
ZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5oYXNQcm9maWxlKHBy
b2ZpbGVIZWFkZXJzW2ldKSkKKyAgICAgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmFkZFBy
b2ZpbGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0pOwogICAgICAgICB9CiAKLSAgICAgICAgSW5z
cGVjdG9yQmFja2VuZC5nZXRQcm9maWxlSGVhZGVycyhwb3B1bGF0ZUNhbGxiYWNrKTsKKyAgICAg
ICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9maWxlSGVhZGVycyhwb3B1bGF0ZUNhbGxiYWNrLmJp
bmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuX3Byb2ZpbGVzV2VyZVJlcXVlc3RlZCA9IHRydWU7
CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGM4
OWQ5MGEuLjVjZmIwZTkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5q
cwpAQCAtMTUxMSw2ICsxNTExLDEyIEBAIFdlYkluc3BlY3Rvci5yZXNldFByb2ZpbGVzUGFuZWwg
PSBmdW5jdGlvbigpCiAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMucHJvZmlsZXMucmVzZXRQ
cm9maWxlcygpOwogfQogCitXZWJJbnNwZWN0b3IudXBkYXRlUHJvZmlsZXNQYW5lbCA9IGZ1bmN0
aW9uKHByb2ZpbGVzTGlzdElkKQoreworICAgIGlmIChXZWJJbnNwZWN0b3IucGFuZWxzLnByb2Zp
bGVzKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzLnVwZGF0ZVByb2ZpbGVz
KHByb2ZpbGVzTGlzdElkKTsKK30KKwogV2ViSW5zcGVjdG9yLmJyaW5nVG9Gcm9udCA9IGZ1bmN0
aW9uKCkKIHsKICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3QuYnJpbmdUb0Zyb250KCk7CkBAIC0x
NjUwLDcgKzE2NTYsNyBAQCBXZWJJbnNwZWN0b3IuYWRkUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9u
KHByb2ZpbGUpCiBXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSA9IGZ1bmN0aW9uKGlz
UHJvZmlsaW5nKQogewogICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzLmdldFByb2ZpbGVUeXBlKFdl
Ykluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpLnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQ
cm9maWxpbmcpOwotICAgIGlmICh0aGlzLl9wcmV2aW91c0lzUHJvZmlsaW5nICE9PSBpc1Byb2Zp
bGluZykgeworICAgIGlmICh0aGlzLnBhbmVscy5wcm9maWxlcy5oYXNUZW1wb3JhcnlQcm9maWxl
KFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQpICE9PSBpc1Byb2ZpbGluZykgewog
ICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpIHsKICAgICAgICAg
ICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUgPSB7CiAgICAgICAgICAgICAgICAg
dHlwZUlkOiBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5cGUuVHlwZUlkLApAQCAtMTY1OSw3ICsx
NjY1LDYgQEAgV2ViSW5zcGVjdG9yLnNldFJlY29yZGluZ1Byb2ZpbGUgPSBmdW5jdGlvbihpc1By
b2ZpbGluZykKICAgICAgICAgICAgICAgICBpc1RlbXBvcmFyeTogdHJ1ZQogICAgICAgICAgICAg
fTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9wcmV2aW91c0lzUHJvZmlsaW5nID0gaXNQcm9m
aWxpbmc7CiAgICAgICAgIGlmIChpc1Byb2ZpbGluZykKICAgICAgICAgICAgIHRoaXMucGFuZWxz
LnByb2ZpbGVzLmFkZFByb2ZpbGVIZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmls
ZSk7CiAgICAgICAgIGVsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72811</attachid>
            <date>2010-11-03 04:29:06 -0700</date>
            <delta_ts>2010-11-03 08:38:09 -0700</delta_ts>
            <desc>fix style and qt errors</desc>
            <filename>patch-48843</filename>
            <type>text/plain</type>
            <size>15204</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NzAxNmVkOS4uNGIwN2Y3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MCBAQAorMjAxMC0xMS0wMiAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgW0Nocm9taXVtXTogTWFrZSBDUFUg
cHJvZmlsaW5nIHRvIHN1cnZpdmUgbmF2aWdhdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4NDMKKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0
b3JTdGF0ZUZyb21Db29raWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlzY29ubmVjdEZyb250ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnJlc3RvcmVQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRy
b2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclBy
b2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnVwZGF0ZVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3RhdGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUudXBk
YXRlUHJvZmlsZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5
cGUuaGFzVGVtcG9yYXJ5UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQ
YW5lbC5wcm90b3R5cGUuaGFzUHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlUHJvZmlsZXNQYW5l
bCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisKIDIwMTAt
MTAtMzEgIFBhdmVsIEZlbGRtYW4gIDxwZmVsZG1hbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgVGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmlkbCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwKaW5kZXgg
ZTZlMGE3Zi4uOWY3ZGUxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
LmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsCkBAIC00OSw2ICs0OSw3
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgW25vdGlmeV0gdm9pZCByZW1vdmVSZXNvdXJjZShv
dXQgdW5zaWduZWQgbG9uZyBpZGVudGlmaWVyKTsKICAgICAgICAgW25vdGlmeV0gdm9pZCByZXNl
dCgpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHJlc2V0UHJvZmlsZXNQYW5lbCgpOworICAgICAg
ICBbbm90aWZ5XSB2b2lkIHVwZGF0ZVByb2ZpbGVzUGFuZWwob3V0IHVuc2lnbmVkIGxvbmcgcHJv
ZmlsZXNMaXN0SWQpOwogICAgICAgICBbbm90aWZ5XSB2b2lkIHNldENoaWxkTm9kZXMob3V0IGxv
bmcgcGFyZW50SWQsIG91dCBBcnJheSBub2Rlcyk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgc2V0
RGV0YWNoZWRSb290KG91dCBPYmplY3Qgcm9vdCk7CiAgICAgICAgIFtub3RpZnldIHZvaWQgc2V0
RG9jdW1lbnQob3V0IFZhbHVlIHJvb3QpOwpAQCAtMTUzLDEwICsxNTQsMTAgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGVuYWJsZVByb2ZpbGVyKGlu
IGJvb2xlYW4gYWx3YXlzKTsKICAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBkaXNh
YmxlUHJvZmlsZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogCi0gICAgICAgIFtoYW5kbGVyPVByb2Zp
bGVyXSB2b2lkIHN0YXJ0UHJvZmlsaW5nKCk7Ci0gICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2
b2lkIHN0b3BQcm9maWxpbmcoKTsKKyAgICAgICAgW2hhbmRsZXI9Q29udHJvbGxlcl0gdm9pZCBz
dGFydFByb2ZpbGluZygpOworICAgICAgICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHN0b3BQ
cm9maWxpbmcoKTsKIAotICAgICAgICBbaGFuZGxlcj1Qcm9maWxlcl0gdm9pZCBnZXRQcm9maWxl
SGVhZGVycyhvdXQgQXJyYXkgaGVhZGVycyk7CisgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2
b2lkIGdldFByb2ZpbGVIZWFkZXJzKG91dCB1bnNpZ25lZCBsb25nIHByb2ZpbGVzTGlzdElkLCBv
dXQgQXJyYXkgaGVhZGVycyk7CiAgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2b2lkIGdldFBy
b2ZpbGUoaW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkLCBvdXQgT2JqZWN0IHBy
b2ZpbGUpOwogCiAgICAgICAgIFtoYW5kbGVyPVByb2ZpbGVyXSB2b2lkIHJlbW92ZVByb2ZpbGUo
aW4gU3RyaW5nIHR5cGUsIGluIHVuc2lnbmVkIGxvbmcgdWlkKTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggMWJiMzkxOS4uY2YyODZjYyAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI1NCw2ICsyNTQsOCBAQCB2
b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0b3JTdGF0ZUZyb21Db29raWUo
Y29uc3QgU3RyaW5nJiBpbnNwZWN0bwogICAgIG1fc3RhdGUtPnJlc3RvcmVGcm9tSW5zcGVjdG9y
Q29va2llKGluc3BlY3RvclN0YXRlQ29va2llKTsKICAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVh
bihJbnNwZWN0b3JTdGF0ZTo6dGltZWxpbmVQcm9maWxlckVuYWJsZWQpKQogICAgICAgICBzdGFy
dFRpbWVsaW5lUHJvZmlsZXIoKTsKKyAgICBpZiAobV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0
b3JTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZykpCisgICAgICAgIHN0YXJ0VXNlckluaXRp
YXRlZFByb2ZpbGluZygpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6Omluc3BlY3Qo
Tm9kZSogbm9kZSkKQEAgLTU4NSw3ICs1ODcsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpc2Nvbm5lY3RGcm9udGVuZCgpCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikK
ICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldEZyb250ZW5kKDApOwotICAgIG1fcHJvZmlsZXJBZ2Vu
dC0+c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKKyAgICBtX3Byb2ZpbGVyQWdlbnQtPnN0
b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKHRydWUpOwogI2VuZGlmCiAKICAgICByZWxlYXNlRnJv
bnRlbmRMaWZldGltZUFnZW50cygpOwpAQCAtNzAwLDYgKzcwMiw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVzdG9yZVByb2ZpbGVyKCkKICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNldEZy
b250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmICghU2NyaXB0UHJvZmlsZXI6OmlzUHJv
ZmlsZXJBbHdheXNFbmFibGVkKCkgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0
ZTo6cHJvZmlsZXJBbHdheXNFbmFibGVkKSkKICAgICAgICAgZW5hYmxlUHJvZmlsZXIoKTsKKyAg
ICBtX3Byb2ZpbGVyQWdlbnQtPnVwZGF0ZVN0YXRlKCk7CiAjZW5kaWYKIH0KIApAQCAtNzc5LDYg
Kzc4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgVVNFKEpTQykKKyAgICAgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRl
ZFByb2ZpbGluZyh0cnVlKTsKICAgICAgICAgbV9wcm9maWxlckFnZW50LT5yZXNldFN0YXRlKCk7
CiAjZW5kaWYKIApAQCAtMTY2Niw2ICsxNjcwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVy
OjpzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQogICAgIGlmICghZW5hYmxlZCgpKQogICAg
ICAgICByZXR1cm47CiAgICAgbV9wcm9maWxlckFnZW50LT5zdGFydFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3RvclN0YXRlOjp1c2VySW5p
dGlhdGVkUHJvZmlsaW5nLCB0cnVlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpz
dG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCkBAIC0xNjczLDYgKzE2NzgsNyBAQCB2b2lkIElu
c3BlY3RvckNvbnRyb2xsZXI6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAgICBpZiAo
IWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcHJvZmlsZXJBZ2VudC0+c3RvcFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKKyAgICBtX3N0YXRlLT5zZXRCb29sZWFuKEluc3BlY3Rv
clN0YXRlOjp1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSk7CiB9CiAKIGJvb2wgSW5zcGVj
dG9yQ29udHJvbGxlcjo6cHJvZmlsZXJFbmFibGVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCA2NDA5ODdiLi5hZjc4Y2Q3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC0yNTYsNyArMjU2LDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYWRkU3RhcnRQcm9maWxpbmdNZXNzYWdlVG9Db25zb2xlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKTsKICAg
ICBib29sIGlzUmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUoKSBjb25zdDsKICAgICBTdHJp
bmcgZ2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudFByb2Zp
bGVOdW1iZXIgPSBmYWxzZSk7CisgICAgdm9pZCBzdGFydFByb2ZpbGluZygpIHsgc3RhcnRVc2Vy
SW5pdGlhdGVkUHJvZmlsaW5nKCk7IH0KICAgICB2b2lkIHN0YXJ0VXNlckluaXRpYXRlZFByb2Zp
bGluZygpOworICAgIHZvaWQgc3RvcFByb2ZpbGluZygpIHsgc3RvcFVzZXJJbml0aWF0ZWRQcm9m
aWxpbmcoKTsgfQogICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKICAgICB2
b2lkIGVuYWJsZVByb2ZpbGVyKGJvb2wgYWx3YXlzID0gZmFsc2UsIGJvb2wgc2tpcFJlY29tcGls
ZSA9IGZhbHNlKTsKICAgICB2b2lkIGRpc2FibGVQcm9maWxlcihib29sIGFsd2F5cyA9IGZhbHNl
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXgg
NzFjNzIzMS4uNDU4ODc1MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5jcHAKQEAgLTE0Niw4ICsxNDYsOSBAQCBTdHJpbmcgSW5zcGVjdG9yUHJvZmlsZXJB
Z2VudDo6Z2V0Q3VycmVudFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZShib29sIGluY3JlbWVudAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKFVzZXJJbml0aWF0ZWRQcm9maWxlTmFtZSwgJy4nLCBTdHJp
bmc6Om51bWJlcihtX2N1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlcikpOwogfQogCi12
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFByb2ZpbGVIZWFkZXJzKFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OmdldFBy
b2ZpbGVIZWFkZXJzKHVuc2lnbmVkIGxvbmcqIGhlYWRlcnNJZCwgUmVmUHRyPEluc3BlY3RvckFy
cmF5PiogaGVhZGVycykKIHsKKyAgICAqaGVhZGVyc0lkID0gcmVpbnRlcnByZXRfY2FzdDxpbnRw
dHJfdD4oJm1fcHJvZmlsZXMpOwogICAgIFByb2ZpbGVzTWFwOjppdGVyYXRvciBwcm9maWxlc0Vu
ZCA9IG1fcHJvZmlsZXMuZW5kKCk7CiAgICAgZm9yIChQcm9maWxlc01hcDo6aXRlcmF0b3IgaXQg
PSBtX3Byb2ZpbGVzLmJlZ2luKCk7IGl0ICE9IHByb2ZpbGVzRW5kOyArK2l0KQogICAgICAgICAo
KmhlYWRlcnMpLT5wdXNoT2JqZWN0KGNyZWF0ZVByb2ZpbGVIZWFkZXIoKml0LT5zZWNvbmQpKTsK
QEAgLTE5NSw4ICsxOTYsMTYgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpyZXNldFN0
YXRlKCkKICAgICAgICAgbV9mcm9udGVuZC0+cmVzZXRQcm9maWxlc1BhbmVsKCk7CiB9CiAKK3Zv
aWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6dXBkYXRlU3RhdGUoKQoreworICAgIGlmIChtX2Zy
b250ZW5kKQorICAgICAgICBtX2Zyb250ZW5kLT51cGRhdGVQcm9maWxlc1BhbmVsKHJlaW50ZXJw
cmV0X2Nhc3Q8aW50cHRyX3Q+KCZtX3Byb2ZpbGVzKSk7Cit9CisKIHZvaWQgSW5zcGVjdG9yUHJv
ZmlsZXJBZ2VudDo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKIHsKKyAgICBpZiAobV9y
ZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkKKyAgICAgICAgcmV0dXJuOwogICAgIGlmICgh
ZW5hYmxlZCgpKSB7CiAgICAgICAgIGVuYWJsZShmYWxzZSk7CiAgICAgICAgIFNjcmlwdERlYnVn
U2VydmVyOjpzaGFyZWQoKS5yZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtMjEzLDggKzIy
MiwxMCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0VXNlckluaXRpYXRlZFBy
b2ZpbGluZygpCiAgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKHRydWUpOwogfQogCi12b2lkIEluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKK3ZvaWQgSW5z
cGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoYm9vbCBpZ25v
cmVQcm9maWxlKQogeworICAgIGlmICghbV9yZWNvcmRpbmdVc2VySW5pdGlhdGVkUHJvZmlsZSkK
KyAgICAgICAgcmV0dXJuOwogICAgIG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUgPSBm
YWxzZTsKICAgICBTdHJpbmcgdGl0bGUgPSBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVO
YW1lKCk7CiAjaWYgVVNFKEpTQykKQEAgLTIyNSw4ICsyMzYsMTIgQEAgdm9pZCBJbnNwZWN0b3JQ
cm9maWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpCiAgICAgU2NyaXB0U3Rh
dGUqIHNjcmlwdFN0YXRlID0gMDsKICNlbmRpZgogICAgIFJlZlB0cjxTY3JpcHRQcm9maWxlPiBw
cm9maWxlID0gU2NyaXB0UHJvZmlsZXI6OnN0b3Aoc2NyaXB0U3RhdGUsIHRpdGxlKTsKLSAgICBp
ZiAocHJvZmlsZSkKLSAgICAgICAgYWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJpbmcoKSk7Cisg
ICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgICAgaWYgKCFpZ25vcmVQcm9maWxlKQorICAgICAgICAg
ICAgYWRkUHJvZmlsZShwcm9maWxlLCAwLCBTdHJpbmcoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGFkZFByb2ZpbGVGaW5pc2hlZE1lc3NhZ2VUb0NvbnNvbGUocHJvZmlsZSwgMCwgU3Ry
aW5nKCkpOworICAgIH0KICAgICB0b2dnbGVSZWNvcmRCdXR0b24oZmFsc2UpOwogfQogCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNDIxZWZiMC4uZWE4
OTlkOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAt
NjAsMTggKzYwLDE3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVuYWJsZShib29sIHNraXBSZWNvbXBp
bGUpOwogICAgIGJvb2wgZW5hYmxlZCgpIHsgcmV0dXJuIG1fZW5hYmxlZDsgfQogICAgIFN0cmlu
ZyBnZXRDdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOYW1lKGJvb2wgaW5jcmVtZW50UHJvZmls
ZU51bWJlciA9IGZhbHNlKTsKLSAgICB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4qIGhlYWRlcnMpOworICAgIHZvaWQgZ2V0UHJvZmlsZUhlYWRlcnModW5zaWdu
ZWQgbG9uZyogaGVhZGVyc0lkLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+KiBoZWFkZXJzKTsKICAg
ICB2b2lkIGdldFByb2ZpbGUoY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQsIFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+KiBwcm9maWxlT2JqZWN0KTsKICAgICBib29sIGlzUmVjb3JkaW5n
VXNlckluaXRpYXRlZFByb2ZpbGUoKSB7IHJldHVybiBtX3JlY29yZGluZ1VzZXJJbml0aWF0ZWRQ
cm9maWxlOyB9CiAgICAgdm9pZCByZW1vdmVQcm9maWxlKGNvbnN0IFN0cmluZyYgdHlwZSwgdW5z
aWduZWQgdWlkKTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKICAgICB2b2lkIHNldEZyb250ZW5k
KEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkgeyBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7IH0K
LSAgICB2b2lkIHN0YXJ0UHJvZmlsaW5nKCkgeyBzdGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmco
KTsgfQogICAgIHZvaWQgc3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7Ci0gICAgdm9pZCBz
dG9wUHJvZmlsaW5nKCkgeyBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpOyB9Ci0gICAgdm9p
ZCBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZygpOworICAgIHZvaWQgc3RvcFVzZXJJbml0aWF0
ZWRQcm9maWxpbmcoYm9vbCBpZ25vcmVQcm9maWxlID0gZmFsc2UpOwogICAgIHZvaWQgdGFrZUhl
YXBTbmFwc2hvdCgpOwogICAgIHZvaWQgdG9nZ2xlUmVjb3JkQnV0dG9uKGJvb2wgaXNQcm9maWxp
bmcpOworICAgIHZvaWQgdXBkYXRlU3RhdGUoKTsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVmIEhh
c2hNYXA8dW5zaWduZWQgaW50LCBSZWZQdHI8U2NyaXB0UHJvZmlsZT4gPiBQcm9maWxlc01hcDsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcAppbmRleCBlNmQzMDQ0Li5mNjIyNjQzIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIEluc3Bl
Y3RvclN0YXRlOjpJbnNwZWN0b3JTdGF0ZShJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICBy
ZWdpc3RlckxvbmcoaW5zcGVjdG9yQXR0YWNoZWRIZWlnaHQsIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRlZmF1bHRBdHRhY2hlZEhlaWdodCwgKGNvbnN0IGNoYXIqKTAsICJpbnNwZWN0b3JBdHRhY2hl
ZEhlaWdodCIpOwogICAgIHJlZ2lzdGVyTG9uZyhwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCAwLCAi
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSIsIChjb25zdCBjaGFyKikwKTsKICAgICByZWdpc3RlckJv
b2xlYW4oY29uc29sZU1lc3NhZ2VzRW5hYmxlZCwgZmFsc2UsICJjb25zb2xlTWVzc2FnZXNFbmFi
bGVkIiwgKGNvbnN0IGNoYXIqKTApOworICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5pdGlhdGVk
UHJvZmlsaW5nLCBmYWxzZSwgInVzZXJJbml0aWF0ZWRQcm9maWxpbmciLCAoY29uc3QgY2hhciop
MCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yU3RhdGU6OnJlc3RvcmVGcm9tSW5zcGVjdG9yQ29va2ll
KGNvbnN0IFN0cmluZyYganNvbikKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0YXRlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCmluZGV4IDM4
N2YzYzcuLjJkODNhMzYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
YXRlLmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApAQCAtNTYsNiAr
NTYsNyBAQCBwdWJsaWM6CiAgICAgICAgIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0LAogICAgICAg
ICBwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLAogICAgICAgICBjb25zb2xlTWVzc2FnZXNFbmFibGVk
LAorICAgICAgICB1c2VySW5pdGlhdGVkUHJvZmlsaW5nLAogICAgICAgICBsYXN0UHJvcGVydHlJ
ZAogICAgIH07CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9m
aWxlc1BhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwu
anMKaW5kZXggY2EwMmY5ZS4uMDBkOGE4YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1Byb2ZpbGVzUGFuZWwuanMKQEAgLTE4Nyw2ICsxODcsMTUgQEAgV2ViSW5zcGVjdG9yLlBy
b2ZpbGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9yZXNldCgpOwogICAgIH0s
CiAKKyAgICB1cGRhdGVQcm9maWxlczogZnVuY3Rpb24ocHJvZmlsZXNMaXN0SWQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fcHJvZmlsZXNMaXN0SWQgJiYgdGhpcy5fcHJvZmlsZXNMaXN0SWQg
IT0gcHJvZmlsZXNMaXN0SWQpIHsKKyAgICAgICAgICAgIHRoaXMuX3Jlc2V0KCk7CisgICAgICAg
ICAgICBpZiAodGhpcy52aXNpYmxlKQorICAgICAgICAgICAgICAgIHRoaXMuX3BvcHVsYXRlUHJv
ZmlsZXMoKTsKKyAgICAgICAgfQorICAgIH0sCisKICAgICBfcmVzZXQ6IGZ1bmN0aW9uKCkKICAg
ICB7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5fcHJvZmlsZXMubGVuZ3RoOyAr
K2kpCkBAIC0yMDEsNiArMjEwLDcgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICB0aGlzLl9wcm9maWxlR3JvdXBzID0ge307CiAgICAgICAgIHRoaXMu
X3Byb2ZpbGVHcm91cHNGb3JMaW5rcyA9IHt9CiAgICAgICAgIHRoaXMuX3Byb2ZpbGVzV2VyZVJl
cXVlc3RlZCA9IGZhbHNlOworICAgICAgICB0aGlzLl9wcm9maWxlc0xpc3RJZCA9IG51bGw7CiAK
ICAgICAgICAgdGhpcy5zaWRlYmFyVHJlZUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygic29tZS1l
eHBhbmRhYmxlIik7CiAKQEAgLTM4Niw2ICszOTYsMjAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAg
ICBoYXNUZW1wb3JhcnlQcm9maWxlOiBmdW5jdGlvbih0eXBlSWQpCisgICAgeworICAgICAgICB2
YXIgcHJvZmlsZXNDb3VudCA9IHRoaXMuX3Byb2ZpbGVzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBwcm9maWxlc0NvdW50OyArK2kpCisgICAgICAgICAgICBpZiAodGhpcy5f
cHJvZmlsZXNbaV0udHlwZUlkID09PSB0eXBlSWQgJiYgdGhpcy5fcHJvZmlsZXNbaV0uaXNUZW1w
b3JhcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICB9LAorCisgICAgaGFzUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiAhIXRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShwcm9maWxl
LnVpZCwgcHJvZmlsZS50eXBlSWQpXTsKKyAgICB9LAorCiAgICAgdXBkYXRlUHJvZmlsZTogZnVu
Y3Rpb24ocHJvZmlsZSkKICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlc0NvdW50ID0gdGhpcy5f
cHJvZmlsZXMubGVuZ3RoOwpAQCAtNTM0LDE0ICs1NTgsMTYgQEAgV2ViSW5zcGVjdG9yLlByb2Zp
bGVzUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXRoaXMuX3Byb2ZpbGVyRW5hYmxl
ZCB8fCB0aGlzLl9wcm9maWxlc1dlcmVSZXF1ZXN0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgZnVuY3Rpb24gcG9wdWxhdGVDYWxsYmFjayhwcm9maWxlSGVhZGVycykgeworICAg
ICAgICBmdW5jdGlvbiBwb3B1bGF0ZUNhbGxiYWNrKHByb2ZpbGVzTGlzdElkLCBwcm9maWxlSGVh
ZGVycykgeworICAgICAgICAgICAgdGhpcy5fcHJvZmlsZXNMaXN0SWQgPSBwcm9maWxlc0xpc3RJ
ZDsKICAgICAgICAgICAgIHByb2ZpbGVIZWFkZXJzLnNvcnQoZnVuY3Rpb24oYSwgYikgeyByZXR1
cm4gYS51aWQgLSBiLnVpZDsgfSk7CiAgICAgICAgICAgICB2YXIgcHJvZmlsZUhlYWRlcnNMZW5n
dGggPSBwcm9maWxlSGVhZGVycy5sZW5ndGg7CiAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHByb2ZpbGVIZWFkZXJzTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0pOworICAgICAgICAgICAgICAg
IGlmICghdGhpcy5oYXNQcm9maWxlKHByb2ZpbGVIZWFkZXJzW2ldKSkKKyAgICAgICAgICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLmFkZFByb2ZpbGVIZWFkZXIocHJvZmlsZUhlYWRlcnNbaV0pOwog
ICAgICAgICB9CiAKLSAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9maWxlSGVhZGVycyhw
b3B1bGF0ZUNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQmFja2VuZC5nZXRQcm9maWxlSGVh
ZGVycyhwb3B1bGF0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwogCiAgICAgICAgIHRoaXMuX3Byb2Zp
bGVzV2VyZVJlcXVlc3RlZCA9IHRydWU7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvaW5zcGVjdG9yLmpzCmluZGV4IGM4OWQ5MGEuLjVjZmIwZTkgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMTUxMSw2ICsxNTExLDEyIEBAIFdlYkluc3Bl
Y3Rvci5yZXNldFByb2ZpbGVzUGFuZWwgPSBmdW5jdGlvbigpCiAgICAgICAgIFdlYkluc3BlY3Rv
ci5wYW5lbHMucHJvZmlsZXMucmVzZXRQcm9maWxlcygpOwogfQogCitXZWJJbnNwZWN0b3IudXBk
YXRlUHJvZmlsZXNQYW5lbCA9IGZ1bmN0aW9uKHByb2ZpbGVzTGlzdElkKQoreworICAgIGlmIChX
ZWJJbnNwZWN0b3IucGFuZWxzLnByb2ZpbGVzKQorICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LnByb2ZpbGVzLnVwZGF0ZVByb2ZpbGVzKHByb2ZpbGVzTGlzdElkKTsKK30KKwogV2ViSW5zcGVj
dG9yLmJyaW5nVG9Gcm9udCA9IGZ1bmN0aW9uKCkKIHsKICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3QuYnJpbmdUb0Zyb250KCk7CkBAIC0xNjUwLDcgKzE2NTYsNyBAQCBXZWJJbnNwZWN0b3IuYWRk
UHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHByb2ZpbGUpCiBXZWJJbnNwZWN0b3Iuc2V0UmVjb3Jk
aW5nUHJvZmlsZSA9IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQogewogICAgIHRoaXMucGFuZWxzLnBy
b2ZpbGVzLmdldFByb2ZpbGVUeXBlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBlSWQp
LnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwotICAgIGlmICh0aGlzLl9wcmV2aW91
c0lzUHJvZmlsaW5nICE9PSBpc1Byb2ZpbGluZykgeworICAgIGlmICh0aGlzLnBhbmVscy5wcm9m
aWxlcy5oYXNUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxlVHlwZS5UeXBl
SWQpICE9PSBpc1Byb2ZpbGluZykgewogICAgICAgICBpZiAoIXRoaXMuX3RlbXBvcmFyeVJlY29y
ZGluZ1Byb2ZpbGUpIHsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJlY29yZGluZ1Byb2Zp
bGUgPSB7CiAgICAgICAgICAgICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3IuQ1BVUHJvZmlsZVR5
cGUuVHlwZUlkLApAQCAtMTY1OSw3ICsxNjY1LDYgQEAgV2ViSW5zcGVjdG9yLnNldFJlY29yZGlu
Z1Byb2ZpbGUgPSBmdW5jdGlvbihpc1Byb2ZpbGluZykKICAgICAgICAgICAgICAgICBpc1RlbXBv
cmFyeTogdHJ1ZQogICAgICAgICAgICAgfTsKICAgICAgICAgfQotICAgICAgICB0aGlzLl9wcmV2
aW91c0lzUHJvZmlsaW5nID0gaXNQcm9maWxpbmc7CiAgICAgICAgIGlmIChpc1Byb2ZpbGluZykK
ICAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzLmFkZFByb2ZpbGVIZWFkZXIodGhpcy5f
dGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CiAgICAgICAgIGVsc2UK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72826</attachid>
            <date>2010-11-03 08:38:09 -0700</date>
            <delta_ts>2010-11-04 15:43:45 -0700</delta_ts>
            <desc>profiles list in Inspector is now cleaned up on any reload, this simplifies code a lot</desc>
            <filename>patch-48843</filename>
            <type>text/plain</type>
            <size>12423</size>
            <attacher name="Mikhail Naganov">mnaganov</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTljODFiNi4uMGFkZmMwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAxMC0xMS0wMyAgTWlraGFpbCBOYWdh
bm92ICA8bW5hZ2Fub3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3IgW0Nocm9taXVtXTogTWFrZSBDUFUg
cHJvZmlsaW5nIHRvIHN1cnZpdmUgbmF2aWdhdGlvbi4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDg4NDMKKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3IuaWRsOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlc3RvcmVJbnNwZWN0
b3JTdGF0ZUZyb21Db29raWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6cmV1c2VGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJv
bGxlcjo6cG9wdWxhdGVTY3JpcHRPYmplY3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OnJlc3RvcmVQcm9maWxlcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnN0YXJ0UHJvZmlsaW5nKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnN0b3BQcm9maWxpbmcpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yU3RhdGU6Okluc3BlY3RvclN0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yU3RhdGUuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5wcm90b3R5cGUuaGFz
VGVtcG9yYXJ5UHJvZmlsZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJvZmlsZXNQYW5lbC5w
cm90b3R5cGUuaGFzUHJvZmlsZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNw
ZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSk6CisK
IDIwMTAtMTEtMDMgIEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuICA8a2VubmV0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yLmlkbAppbmRleCAxMWQ5YTAxLi5iYzMzZjYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3IuaWRsCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5pZGwK
QEAgLTE0OSw4ICsxNDksOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIFtoYW5kbGVyPUNvbnRy
b2xsZXJdIHZvaWQgZW5hYmxlUHJvZmlsZXIoaW4gYm9vbGVhbiBhbHdheXMpOwogICAgICAgICBb
aGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIGRpc2FibGVQcm9maWxlcihpbiBib29sZWFuIGFsd2F5
cyk7CiAKLSAgICAgICAgW2hhbmRsZXI9UHJvZmlsZXJdIHZvaWQgc3RhcnRQcm9maWxpbmcoKTsK
LSAgICAgICAgW2hhbmRsZXI9UHJvZmlsZXJdIHZvaWQgc3RvcFByb2ZpbGluZygpOworICAgICAg
ICBbaGFuZGxlcj1Db250cm9sbGVyXSB2b2lkIHN0YXJ0UHJvZmlsaW5nKCk7CisgICAgICAgIFto
YW5kbGVyPUNvbnRyb2xsZXJdIHZvaWQgc3RvcFByb2ZpbGluZygpOwogCiAgICAgICAgIFtoYW5k
bGVyPVByb2ZpbGVyXSB2b2lkIGdldFByb2ZpbGVIZWFkZXJzKG91dCBBcnJheSBoZWFkZXJzKTsK
ICAgICAgICAgW2hhbmRsZXI9UHJvZmlsZXJdIHZvaWQgZ2V0UHJvZmlsZShpbiBTdHJpbmcgdHlw
ZSwgaW4gdW5zaWduZWQgbG9uZyB1aWQsIG91dCBPYmplY3QgcHJvZmlsZSk7CmRpZmYgLS1naXQg
YS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDA4MjVkYzYuLmVmNTZiMDQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBi
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yMzcsNiArMjM3
LDggQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZXN0b3JlSW5zcGVjdG9yU3RhdGVGcm9t
Q29va2llKGNvbnN0IFN0cmluZyYgaW5zcGVjdG8KICAgICBtX3N0YXRlLT5yZXN0b3JlRnJvbUlu
c3BlY3RvckNvb2tpZShpbnNwZWN0b3JTdGF0ZUNvb2tpZSk7CiAgICAgaWYgKG1fc3RhdGUtPmdl
dEJvb2xlYW4oSW5zcGVjdG9yU3RhdGU6OnRpbWVsaW5lUHJvZmlsZXJFbmFibGVkKSkKICAgICAg
ICAgc3RhcnRUaW1lbGluZVByb2ZpbGVyKCk7CisgICAgaWYgKG1fc3RhdGUtPmdldEJvb2xlYW4o
SW5zcGVjdG9yU3RhdGU6OnVzZXJJbml0aWF0ZWRQcm9maWxpbmcpKQorICAgICAgICBzdGFydFVz
ZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpp
bnNwZWN0KE5vZGUqIG5vZGUpCkBAIC01MDgsNyArNTEwLDcgQEAgdm9pZCBJbnNwZWN0b3JDb250
cm9sbGVyOjpyZXVzZUZyb250ZW5kKCkKIHsKICAgICBjb25uZWN0RnJvbnRlbmQoKTsKICAgICBy
ZXN0b3JlRGVidWdnZXIoKTsKLSAgICByZXN0b3JlUHJvZmlsZXIoKTsKKyAgICByZXN0b3JlUHJv
ZmlsZXIodHJ1ZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c2hvdygpCkBAIC01
NzcsNyArNTc5LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRl
bmQoKQogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAgICAgbV9wcm9maWxlckFn
ZW50LT5zZXRGcm9udGVuZCgwKTsKLSAgICBtX3Byb2ZpbGVyQWdlbnQtPnN0b3BVc2VySW5pdGlh
dGVkUHJvZmlsaW5nKCk7CisgICAgbV9wcm9maWxlckFnZW50LT5zdG9wVXNlckluaXRpYXRlZFBy
b2ZpbGluZyh0cnVlKTsKICNlbmRpZgogCiAgICAgcmVsZWFzZUZyb250ZW5kTGlmZXRpbWVBZ2Vu
dHMoKTsKQEAgLTY1Niw3ICs2NTgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnBvcHVs
YXRlU2NyaXB0T2JqZWN0cygpCiAgICAgbV9wZW5kaW5nRXZhbHVhdGVUZXN0Q29tbWFuZHMuY2xl
YXIoKTsKIAogICAgIHJlc3RvcmVEZWJ1Z2dlcigpOwotICAgIHJlc3RvcmVQcm9maWxlcigpOwor
ICAgIHJlc3RvcmVQcm9maWxlcihmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxl
cjo6cmVzdG9yZURlYnVnZ2VyKCkKQEAgLTY3MiwxMyArNjc0LDE1IEBAIHZvaWQgSW5zcGVjdG9y
Q29udHJvbGxlcjo6cmVzdG9yZURlYnVnZ2VyKCkKICNlbmRpZgogfQogCi12b2lkIEluc3BlY3Rv
ckNvbnRyb2xsZXI6OnJlc3RvcmVQcm9maWxlcigpCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OnJlc3RvcmVQcm9maWxlcihib29sIHJlc2V0KQogewogICAgIEFTU0VSVChtX2Zyb250ZW5kKTsK
ICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKICAgICBtX3Byb2ZpbGVyQWdlbnQtPnNl
dEZyb250ZW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogICAgIGlmICghU2NyaXB0UHJvZmlsZXI6Omlz
UHJvZmlsZXJBbHdheXNFbmFibGVkKCkgJiYgbV9zdGF0ZS0+Z2V0Qm9vbGVhbihJbnNwZWN0b3JT
dGF0ZTo6cHJvZmlsZXJBbHdheXNFbmFibGVkKSkKICAgICAgICAgZW5hYmxlUHJvZmlsZXIoKTsK
KyAgICBpZiAocmVzZXQpCisgICAgICAgIG1fcHJvZmlsZXJBZ2VudC0+cmVzZXRTdGF0ZSgpOwog
I2VuZGlmCiB9CiAKQEAgLTcyNiw2ICs3MzAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6
OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIFVTRShKU0MpCisgICAgICAgIG1fcHJvZmlsZXJB
Z2VudC0+c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcodHJ1ZSk7CiAgICAgICAgIG1fcHJvZmls
ZXJBZ2VudC0+cmVzZXRTdGF0ZSgpOwogI2VuZGlmCiAKQEAgLTEzMDEsNiArMTMwNiw3IEBAIHZv
aWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCkKICAg
ICBpZiAoIWVuYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIG1fcHJvZmlsZXJBZ2VudC0+
c3RhcnRVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJ
bnNwZWN0b3JTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZywgdHJ1ZSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQpAQCAtMTMw
OCw2ICsxMzE0LDcgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzdG9wVXNlckluaXRpYXRl
ZFByb2ZpbGluZygpCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybjsKICAgICBt
X3Byb2ZpbGVyQWdlbnQtPnN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7CisgICAgbV9zdGF0
ZS0+c2V0Qm9vbGVhbihJbnNwZWN0b3JTdGF0ZTo6dXNlckluaXRpYXRlZFByb2ZpbGluZywgZmFs
c2UpOwogfQogCiBib29sIEluc3BlY3RvckNvbnRyb2xsZXI6OnByb2ZpbGVyRW5hYmxlZCgpIGNv
bnN0CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgg
Yi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggODZmZWE2Ny4u
YWZiYTQxYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxl
ci5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtMjM5
LDcgKzIzOSw5IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFN0YXJ0UHJvZmlsaW5nTWVzc2FnZVRv
Q29uc29sZShjb25zdCBTdHJpbmcmIHRpdGxlLCB1bnNpZ25lZCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHNvdXJjZVVSTCk7CiAgICAgYm9vbCBpc1JlY29yZGluZ1VzZXJJbml0aWF0ZWRQcm9m
aWxlKCkgY29uc3Q7CiAgICAgU3RyaW5nIGdldEN1cnJlbnRVc2VySW5pdGlhdGVkUHJvZmlsZU5h
bWUoYm9vbCBpbmNyZW1lbnRQcm9maWxlTnVtYmVyID0gZmFsc2UpOworICAgIHZvaWQgc3RhcnRQ
cm9maWxpbmcoKSB7IHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZygpOyB9CiAgICAgdm9pZCBz
dGFydFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKTsKKyAgICB2b2lkIHN0b3BQcm9maWxpbmcoKSB7
IHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5nKCk7IH0KICAgICB2b2lkIHN0b3BVc2VySW5pdGlh
dGVkUHJvZmlsaW5nKCk7CiAgICAgdm9pZCBlbmFibGVQcm9maWxlcihib29sIGFsd2F5cyA9IGZh
bHNlLCBib29sIHNraXBSZWNvbXBpbGUgPSBmYWxzZSk7CiAgICAgdm9pZCBkaXNhYmxlUHJvZmls
ZXIoYm9vbCBhbHdheXMgPSBmYWxzZSk7CkBAIC0yODIsNyArMjg0LDcgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcG9wdWxhdGVTY3JpcHRPYmplY3RzKCk7CiAgICAgdm9pZCByZXN0b3JlRGVidWdn
ZXIoKTsKLSAgICB2b2lkIHJlc3RvcmVQcm9maWxlcigpOworICAgIHZvaWQgcmVzdG9yZVByb2Zp
bGVyKGJvb2wgcmVzZXQpOwogICAgIHZvaWQgdW5iaW5kQWxsUmVzb3VyY2VzKCk7CiAgICAgdm9p
ZCBzZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggNzFjNzIzMS4uZjg5ZGI3MSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysr
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE5Nyw2
ICsxOTcsOCBAQCB2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnJlc2V0U3RhdGUoKQogCiB2
b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZygp
CiB7CisgICAgaWYgKG1fcmVjb3JkaW5nVXNlckluaXRpYXRlZFByb2ZpbGUpCisgICAgICAgIHJl
dHVybjsKICAgICBpZiAoIWVuYWJsZWQoKSkgewogICAgICAgICBlbmFibGUoZmFsc2UpOwogICAg
ICAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6c2hhcmVkKCkucmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
KTsKQEAgLTIxMyw4ICsyMTUsMTAgQEAgdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdGFy
dFVzZXJJbml0aWF0ZWRQcm9maWxpbmcoKQogICAgIHRvZ2dsZVJlY29yZEJ1dHRvbih0cnVlKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JQcm9maWxlckFnZW50OjpzdG9wVXNlckluaXRpYXRlZFByb2Zp
bGluZygpCit2b2lkIEluc3BlY3RvclByb2ZpbGVyQWdlbnQ6OnN0b3BVc2VySW5pdGlhdGVkUHJv
ZmlsaW5nKGJvb2wgaWdub3JlUHJvZmlsZSkKIHsKKyAgICBpZiAoIW1fcmVjb3JkaW5nVXNlcklu
aXRpYXRlZFByb2ZpbGUpCisgICAgICAgIHJldHVybjsKICAgICBtX3JlY29yZGluZ1VzZXJJbml0
aWF0ZWRQcm9maWxlID0gZmFsc2U7CiAgICAgU3RyaW5nIHRpdGxlID0gZ2V0Q3VycmVudFVzZXJJ
bml0aWF0ZWRQcm9maWxlTmFtZSgpOwogI2lmIFVTRShKU0MpCkBAIC0yMjUsOCArMjI5LDEyIEBA
IHZvaWQgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudDo6c3RvcFVzZXJJbml0aWF0ZWRQcm9maWxpbmco
KQogICAgIFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSA9IDA7CiAjZW5kaWYKICAgICBSZWZQdHI8
U2NyaXB0UHJvZmlsZT4gcHJvZmlsZSA9IFNjcmlwdFByb2ZpbGVyOjpzdG9wKHNjcmlwdFN0YXRl
LCB0aXRsZSk7Ci0gICAgaWYgKHByb2ZpbGUpCi0gICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwg
MCwgU3RyaW5nKCkpOworICAgIGlmIChwcm9maWxlKSB7CisgICAgICAgIGlmICghaWdub3JlUHJv
ZmlsZSkKKyAgICAgICAgICAgIGFkZFByb2ZpbGUocHJvZmlsZSwgMCwgU3RyaW5nKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBhZGRQcm9maWxlRmluaXNoZWRNZXNzYWdlVG9Db25zb2xl
KHByb2ZpbGUsIDAsIFN0cmluZygpKTsKKyAgICB9CiAgICAgdG9nZ2xlUmVjb3JkQnV0dG9uKGZh
bHNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmlu
ZGV4IDQyMWVmYjAuLmMxZjVkYjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmgKQEAgLTY2LDEwICs2Niw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVBy
b2ZpbGUoY29uc3QgU3RyaW5nJiB0eXBlLCB1bnNpZ25lZCB1aWQpOwogICAgIHZvaWQgcmVzZXRT
dGF0ZSgpOwogICAgIHZvaWQgc2V0RnJvbnRlbmQoSW5zcGVjdG9yRnJvbnRlbmQqIGZyb250ZW5k
KSB7IG1fZnJvbnRlbmQgPSBmcm9udGVuZDsgfQotICAgIHZvaWQgc3RhcnRQcm9maWxpbmcoKSB7
IHN0YXJ0VXNlckluaXRpYXRlZFByb2ZpbGluZygpOyB9CiAgICAgdm9pZCBzdGFydFVzZXJJbml0
aWF0ZWRQcm9maWxpbmcoKTsKLSAgICB2b2lkIHN0b3BQcm9maWxpbmcoKSB7IHN0b3BVc2VySW5p
dGlhdGVkUHJvZmlsaW5nKCk7IH0KLSAgICB2b2lkIHN0b3BVc2VySW5pdGlhdGVkUHJvZmlsaW5n
KCk7CisgICAgdm9pZCBzdG9wVXNlckluaXRpYXRlZFByb2ZpbGluZyhib29sIGlnbm9yZVByb2Zp
bGUgPSBmYWxzZSk7CiAgICAgdm9pZCB0YWtlSGVhcFNuYXBzaG90KCk7CiAgICAgdm9pZCB0b2dn
bGVSZWNvcmRCdXR0b24oYm9vbCBpc1Byb2ZpbGluZyk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clN0YXRlLmNwcAppbmRleCBlNmQzMDQ0Li5mNjIyNjQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3RhdGUuY3BwCkBAIC01MCw2ICs1MCw3IEBAIEluc3BlY3RvclN0YXRlOjpJbnNwZWN0b3JT
dGF0ZShJbnNwZWN0b3JDbGllbnQqIGNsaWVudCkKICAgICByZWdpc3RlckxvbmcoaW5zcGVjdG9y
QXR0YWNoZWRIZWlnaHQsIEluc3BlY3RvckNvbnRyb2xsZXI6OmRlZmF1bHRBdHRhY2hlZEhlaWdo
dCwgKGNvbnN0IGNoYXIqKTAsICJpbnNwZWN0b3JBdHRhY2hlZEhlaWdodCIpOwogICAgIHJlZ2lz
dGVyTG9uZyhwYXVzZU9uRXhjZXB0aW9uc1N0YXRlLCAwLCAicGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSIsIChjb25zdCBjaGFyKikwKTsKICAgICByZWdpc3RlckJvb2xlYW4oY29uc29sZU1lc3NhZ2Vz
RW5hYmxlZCwgZmFsc2UsICJjb25zb2xlTWVzc2FnZXNFbmFibGVkIiwgKGNvbnN0IGNoYXIqKTAp
OworICAgIHJlZ2lzdGVyQm9vbGVhbih1c2VySW5pdGlhdGVkUHJvZmlsaW5nLCBmYWxzZSwgInVz
ZXJJbml0aWF0ZWRQcm9maWxpbmciLCAoY29uc3QgY2hhciopMCk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yU3RhdGU6OnJlc3RvcmVGcm9tSW5zcGVjdG9yQ29va2llKGNvbnN0IFN0cmluZyYganNvbikK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmggYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdGF0ZS5oCmluZGV4IDM4N2YzYzcuLjJkODNhMzYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0YXRlLmgKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yU3RhdGUuaApAQCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIGluc3BlY3RvckF0dGFjaGVkSGVpZ2h0LAogICAgICAgICBwYXVzZU9uRXhjZXB0aW9uc1N0
YXRlLAogICAgICAgICBjb25zb2xlTWVzc2FnZXNFbmFibGVkLAorICAgICAgICB1c2VySW5pdGlh
dGVkUHJvZmlsaW5nLAogICAgICAgICBsYXN0UHJvcGVydHlJZAogICAgIH07CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9Qcm9maWxlc1BhbmVsLmpzIGIvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMKaW5kZXggY2EwMmY5ZS4uZmNi
ZDlhYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFu
ZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Byb2ZpbGVzUGFuZWwuanMK
QEAgLTM4Niw2ICszODYsMjAgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90eXBl
ID0gewogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0sCiAKKyAgICBoYXNUZW1wb3JhcnlQ
cm9maWxlOiBmdW5jdGlvbih0eXBlSWQpCisgICAgeworICAgICAgICB2YXIgcHJvZmlsZXNDb3Vu
dCA9IHRoaXMuX3Byb2ZpbGVzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBw
cm9maWxlc0NvdW50OyArK2kpCisgICAgICAgICAgICBpZiAodGhpcy5fcHJvZmlsZXNbaV0udHlw
ZUlkID09PSB0eXBlSWQgJiYgdGhpcy5fcHJvZmlsZXNbaV0uaXNUZW1wb3JhcnkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisg
ICAgaGFzUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiAh
IXRoaXMuX3Byb2ZpbGVzSWRNYXBbdGhpcy5fbWFrZUtleShwcm9maWxlLnVpZCwgcHJvZmlsZS50
eXBlSWQpXTsKKyAgICB9LAorCiAgICAgdXBkYXRlUHJvZmlsZTogZnVuY3Rpb24ocHJvZmlsZSkK
ICAgICB7CiAgICAgICAgIHZhciBwcm9maWxlc0NvdW50ID0gdGhpcy5fcHJvZmlsZXMubGVuZ3Ro
OwpAQCAtNTM4LDEwICs1NTIsMTEgQEAgV2ViSW5zcGVjdG9yLlByb2ZpbGVzUGFuZWwucHJvdG90
eXBlID0gewogICAgICAgICAgICAgcHJvZmlsZUhlYWRlcnMuc29ydChmdW5jdGlvbihhLCBiKSB7
IHJldHVybiBhLnVpZCAtIGIudWlkOyB9KTsKICAgICAgICAgICAgIHZhciBwcm9maWxlSGVhZGVy
c0xlbmd0aCA9IHByb2ZpbGVIZWFkZXJzLmxlbmd0aDsKICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgcHJvZmlsZUhlYWRlcnNMZW5ndGg7ICsraSkKLSAgICAgICAgICAgICAgICBXZWJJ
bnNwZWN0b3IuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlSGVhZGVyc1tpXSk7CisgICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLmhhc1Byb2ZpbGUocHJvZmlsZUhlYWRlcnNbaV0pKQorICAgICAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IuYWRkUHJvZmlsZUhlYWRlcihwcm9maWxlSGVhZGVyc1tp
XSk7CiAgICAgICAgIH0KIAotICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb2ZpbGVIZWFk
ZXJzKHBvcHVsYXRlQ2FsbGJhY2spOworICAgICAgICBJbnNwZWN0b3JCYWNrZW5kLmdldFByb2Zp
bGVIZWFkZXJzKHBvcHVsYXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7CiAKICAgICAgICAgdGhpcy5f
cHJvZmlsZXNXZXJlUmVxdWVzdGVkID0gdHJ1ZTsKICAgICB9LApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXggYmY3ZWMzOS4uZWQyNzRjYiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xNTI3LDcgKzE1MjcsNyBAQCBXZWJJ
bnNwZWN0b3IuYWRkUHJvZmlsZUhlYWRlciA9IGZ1bmN0aW9uKHByb2ZpbGUpCiBXZWJJbnNwZWN0
b3Iuc2V0UmVjb3JkaW5nUHJvZmlsZSA9IGZ1bmN0aW9uKGlzUHJvZmlsaW5nKQogewogICAgIHRo
aXMucGFuZWxzLnByb2ZpbGVzLmdldFByb2ZpbGVUeXBlKFdlYkluc3BlY3Rvci5DUFVQcm9maWxl
VHlwZS5UeXBlSWQpLnNldFJlY29yZGluZ1Byb2ZpbGUoaXNQcm9maWxpbmcpOwotICAgIGlmICh0
aGlzLl9wcmV2aW91c0lzUHJvZmlsaW5nICE9PSBpc1Byb2ZpbGluZykgeworICAgIGlmICh0aGlz
LnBhbmVscy5wcm9maWxlcy5oYXNUZW1wb3JhcnlQcm9maWxlKFdlYkluc3BlY3Rvci5DUFVQcm9m
aWxlVHlwZS5UeXBlSWQpICE9PSBpc1Byb2ZpbGluZykgewogICAgICAgICBpZiAoIXRoaXMuX3Rl
bXBvcmFyeVJlY29yZGluZ1Byb2ZpbGUpIHsKICAgICAgICAgICAgIHRoaXMuX3RlbXBvcmFyeVJl
Y29yZGluZ1Byb2ZpbGUgPSB7CiAgICAgICAgICAgICAgICAgdHlwZUlkOiBXZWJJbnNwZWN0b3Iu
Q1BVUHJvZmlsZVR5cGUuVHlwZUlkLApAQCAtMTUzNiw3ICsxNTM2LDYgQEAgV2ViSW5zcGVjdG9y
LnNldFJlY29yZGluZ1Byb2ZpbGUgPSBmdW5jdGlvbihpc1Byb2ZpbGluZykKICAgICAgICAgICAg
ICAgICBpc1RlbXBvcmFyeTogdHJ1ZQogICAgICAgICAgICAgfTsKICAgICAgICAgfQotICAgICAg
ICB0aGlzLl9wcmV2aW91c0lzUHJvZmlsaW5nID0gaXNQcm9maWxpbmc7CiAgICAgICAgIGlmIChp
c1Byb2ZpbGluZykKICAgICAgICAgICAgIHRoaXMucGFuZWxzLnByb2ZpbGVzLmFkZFByb2ZpbGVI
ZWFkZXIodGhpcy5fdGVtcG9yYXJ5UmVjb3JkaW5nUHJvZmlsZSk7CiAgICAgICAgIGVsc2UK
</data>
<flag name="review"
          id="63153"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="63154"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>