<?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>28873</bug_id>
          
          <creation_ts>2009-09-01 07:08:04 -0700</creation_ts>
          <short_desc>WebInspector: Migrate Databases tab to InjectedScript / serialized interaction.</short_desc>
          <delta_ts>2009-09-21 00:56:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Yury Semikhatsky">yurys</assigned_to>
          <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>143879</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-01 07:08:04 -0700</bug_when>
    <thetext>This will consist of several steps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143933</commentid>
    <comment_count>1</comment_count>
      <attachid>38869</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-01 10:32:49 -0700</bug_when>
    <thetext>Created attachment 38869
patch

This is a first step in serializing db access. It also contains couple of drive-by fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>143943</commentid>
    <comment_count>2</comment_count>
      <attachid>38869</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2009-09-01 10:56:27 -0700</bug_when>
    <thetext>Comment on attachment 38869
patch

&gt; +    isDB: function(db)

I assume this will do somthing more interesting later? If not, I prefer the callers just doing === or ==.

If this will be needed later, I think isDatabase is better.
&gt; +    runWithTableNames: function(callback)

This name confused me when I saw it. I think getTableNames with a callback is better wording and more consistent with the other callback functions.

&gt; +        function withTablesCallback(tableNames)

Starting a function with &quot;with&quot; is odd naming. Just tableNameCallback would work, or somthing more descriptive on what the function does like accumulateCompletions.

&gt; -    _queryFinished: function(query, tx, result)
&gt; +    _queryFinished: function(query, result)

Is this correct? I thought tx was required here…

&gt; +        function withTableNames(tableNames)

Again about &quot;with&quot;.

&gt; +        function withTableNames(tableNames)

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144004</commentid>
    <comment_count>3</comment_count>
      <attachid>38887</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-01 14:55:43 -0700</bug_when>
    <thetext>Created attachment 38887
patch

(In reply to comment #2)
&gt; (From update of attachment 38869 [details])
&gt; &gt; +    isDB: function(db)
&gt; 
&gt; I assume this will do somthing more interesting later? If not, I prefer the
&gt; callers just doing === or ==.
&gt; 

The idea is to encapsulate Database::database. This quarantined object will be replaced with the proxy in the next step. I actually can already mark this member as private (updated the change).

&gt; If this will be needed later, I think isDatabase is better.

Done. 

&gt; &gt; +    runWithTableNames: function(callback)
&gt; 
&gt; This name confused me when I saw it. I think getTableNames with a callback is
&gt; better wording and more consistent with the other callback functions.
&gt; 

Done.

&gt; &gt; +        function withTablesCallback(tableNames)
&gt; 
&gt; Starting a function with &quot;with&quot; is odd naming. Just tableNameCallback would
&gt; work, or somthing more descriptive on what the function does like
&gt; accumulateCompletions.
&gt; 

Done.

&gt; &gt; -    _queryFinished: function(query, tx, result)
&gt; &gt; +    _queryFinished: function(query, result)
&gt; 
&gt; Is this correct? I thought tx was required here…
&gt;

Yes, Database.prototype.executeSql encapsulates callback wrapping and drops this parameters since it is not used in the actual callbacks.
 
&gt; &gt; +        function withTableNames(tableNames)
&gt; 
&gt; Again about &quot;with&quot;.
&gt; 
&gt; &gt; +        function withTableNames(tableNames)
&gt; 
&gt; Ditto.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144173</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2009-09-02 03:00:21 -0700</bug_when>
    <thetext>Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/inspector/InspectorDOMAgent.cpp
	M	WebCore/inspector/front-end/Database.js
	M	WebCore/inspector/front-end/DatabaseQueryView.js
	M	WebCore/inspector/front-end/DatabaseTableView.js
	M	WebCore/inspector/front-end/StoragePanel.js
Committed r47960</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147789</commentid>
    <comment_count>5</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-09-17 06:41:07 -0700</bug_when>
    <thetext>DOM storage access is not serialized yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147790</commentid>
    <comment_count>6</comment_count>
      <attachid>39692</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-09-17 06:42:16 -0700</bug_when>
    <thetext>Created attachment 39692
patch: serialize dom storage access</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148036</commentid>
    <comment_count>7</comment_count>
      <attachid>39754</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-09-18 02:41:07 -0700</bug_when>
    <thetext>Created attachment 39754
patch: serialize dom storage access

Fixed some issues in the previous patch:
* Implemented InspectorDOMStorageResource::operator== which is declared as pure virtual in EventListener. Also added new EventListener type.
* Removed trailing whitespaces in several places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148300</commentid>
    <comment_count>8</comment_count>
      <attachid>38887</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-18 12:15:59 -0700</bug_when>
    <thetext>Comment on attachment 38887
patch

Obsoleting this patch which has been landed.  It&apos;s better to use a new bug for a new change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148612</commentid>
    <comment_count>9</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-09-21 00:55:15 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 38887 [details])
&gt; Obsoleting this patch which has been landed.  It&apos;s better to use a new bug for
&gt; a new change.
Filed a new bug:
https://bugs.webkit.org/show_bug.cgi?id=29536</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148613</commentid>
    <comment_count>10</comment_count>
      <attachid>39754</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2009-09-21 00:56:41 -0700</bug_when>
    <thetext>Comment on attachment 39754
patch: serialize dom storage access

Send this patch to its own bug: 29536</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38869</attachid>
            <date>2009-09-01 10:32:49 -0700</date>
            <delta_ts>2009-09-01 14:55:43 -0700</delta_ts>
            <desc>patch</desc>
            <filename>db1</filename>
            <type>text/plain</type>
            <size>11089</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTllNzE4YS4uNjdhMGM4MCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wOS0wMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IE1pZ3JhdGUgRGF0YWJhc2VzIHRhYiB0
byBJbmplY3RlZFNjcmlwdCAvCisgICAgICAgIHNlcmlhbGl6ZWQgaW50ZXJhY3Rpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODczCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnBy
b3RvdHlwZS5pc0RCKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUu
cnVuV2l0aFRhYmxlTmFtZXMuc29ydGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5wcm90b3R5cGUucnVuV2l0aFRhYmxlTmFtZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZS5leGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZS5wcm90b3R5cGUuZXhlY3V0ZVNxbC5lcnJvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUuZXhlY3V0ZVNxbC5xdWVyeVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZS5f
ZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5Vmll
dy5wcm90b3R5cGUuX3F1ZXJ5RmluaXNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VUYWJsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2VsZWN0RGF0
YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBk
YXRlRGF0YWJhc2VUYWJsZXMud2l0aFRhYmxlTmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBkYXRlRGF0YWJhc2VUYWJsZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFiYXNlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVs
YXRlLndpdGhUYWJsZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVNpZGVi
YXJUcmVlRWxlbWVudC5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisKIDIwMDktMDktMDEgIEphbiBN
aWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTWFyayBSb3dlLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4
IGU5MjRmYjkuLmZhMjVlNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5j
cHAKQEAgLTE1MSw4ICsxNTEsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVFdmVu
dChFdmVudCogZXZlbnQsIGJvb2wpCiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5vZGVD
b3VudFVwZGF0ZWQocGFyZW50SWQsIGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVzdGVk
IC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4KLSAgICAgICAgICAgIGxvbmcgcHJldklk
ID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChpbm5lclByZXZpb3VzU2libGluZyhub2RlKSk7
Ci0KKyAgICAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxpbmco
bm9kZSk7CisgICAgICAgICAgICBsb25nIHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1bWVu
dE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwogICAgICAgICAgICAgU2NyaXB0T2Jq
ZWN0IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9kZVRv
SWRNYXApOwogICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFyZW50
SWQsIHByZXZJZCwgdmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RGF0YWJhc2UuanMKaW5kZXggZWY0MmUxNS4uNjQ2NmRhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EYXRhYmFzZS5qcwpAQCAtMzUsMTYgKzM1LDkgQEAgV2ViSW5zcGVjdG9yLkRhdGFi
YXNlID0gZnVuY3Rpb24oZGF0YWJhc2UsIGRvbWFpbiwgbmFtZSwgdmVyc2lvbikKIH0KIAogV2Vi
SW5zcGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZSA9IHsKLSAgICBnZXQgZGF0YWJhc2UoKQorICAg
IGlzREI6IGZ1bmN0aW9uKGRiKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGFiYXNl
OwotICAgIH0sCi0KLSAgICBzZXQgZGF0YWJhc2UoeCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9kYXRhYmFzZSA9PT0geCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fZGF0
YWJhc2UgPSB4OworICAgICAgICByZXR1cm4gdGhpcy5kYXRhYmFzZSA9PT0gZGI7CiAgICAgfSwK
IAogICAgIGdldCBuYW1lKCkKQEAgLTg4LDggKzgxLDMzIEBAIFdlYkluc3BlY3Rvci5EYXRhYmFz
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJv
dG90eXBlLl9fbG9va3VwR2V0dGVyX18oImRpc3BsYXlEb21haW4iKS5jYWxsKHRoaXMpOwogICAg
IH0sCiAKLSAgICBnZXQgdGFibGVOYW1lcygpCisgICAgcnVuV2l0aFRhYmxlTmFtZXM6IGZ1bmN0
aW9uKGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgcmV0dXJuIEluc3BlY3RvckNvbnRyb2xsZXIu
ZGF0YWJhc2VUYWJsZU5hbWVzKHRoaXMuZGF0YWJhc2UpLnNvcnQoKTsKKyAgICAgICAgdmFyIG5h
bWVzID0gSW5zcGVjdG9yQ29udHJvbGxlci5kYXRhYmFzZVRhYmxlTmFtZXModGhpcy5kYXRhYmFz
ZSk7CisgICAgICAgIGZ1bmN0aW9uIHNvcnRpbmdDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGNhbGxiYWNrKG5hbWVzLnNvcnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgc2V0VGlt
ZW91dChzb3J0aW5nQ2FsbGJhY2ssIDApOworICAgIH0sCisgICAgCisgICAgZXhlY3V0ZVNxbDog
ZnVuY3Rpb24ocXVlcnksIG9uU3VjY2Vzcywgb25FcnJvcikKKyAgICB7CisgICAgICAgIGZ1bmN0
aW9uIHN1Y2Nlc3NDYWxsYmFjayh0eCwgcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBv
blN1Y2Nlc3MocmVzdWx0KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVycm9yQ2Fs
bGJhY2sodHgsIGVycm9yKQorICAgICAgICB7CisgICAgICAgICAgICBvbkVycm9yKGVycm9yKTsK
KyAgICAgICAgfQorCisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgZnVuY3Rpb24g
cXVlcnlUcmFuc2FjdGlvbih0eCkKKyAgICAgICAgeworICAgICAgICAgICAgdHguZXhlY3V0ZVNx
bChxdWVyeSwgbnVsbCwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2soc3VjY2Vzc0Nh
bGxiYWNrLmJpbmQoc2VsZikpLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhlcnJv
ckNhbGxiYWNrLmJpbmQoc2VsZikpKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmRhdGFiYXNl
LnRyYW5zYWN0aW9uKEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHF1ZXJ5VHJhbnNh
Y3Rpb24uYmluZCh0aGlzKSksIEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKGVycm9y
Q2FsbGJhY2suYmluZCh0aGlzKSkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcwppbmRleCBkOGE1NGZhLi5mMDU2ODQyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VRdWVyeVZpZXcu
anMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3Lmpz
CkBAIC04MSwxMSArODEsMTUgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3Rv
dHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAg
ICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiB3aXRoVGFibGVzQ2FsbGJhY2sodGFi
bGVOYW1lcykKKyAgICAgICAgeworICAgICAgICAgICAgYWNjdW11bGF0ZU1hdGNoZXModGFibGVO
YW1lcy5tYXAoZnVuY3Rpb24obmFtZSkgeyByZXR1cm4gbmFtZSArICIgIiB9KSk7CisgICAgICAg
ICAgICBhY2N1bXVsYXRlTWF0Y2hlcyhbIlNFTEVDVCAiLCAiRlJPTSAiLCAiV0hFUkUgIiwgIkxJ
TUlUICIsICJERUxFVEUgRlJPTSAiLCAiQ1JFQVRFICIsICJEUk9QICIsICJUQUJMRSAiLCAiSU5E
RVggIiwgIlVQREFURSAiLCAiSU5TRVJUIElOVE8gIiwgIlZBTFVFUyAoIl0pOwogCi0gICAgICAg
IGFjY3VtdWxhdGVNYXRjaGVzKHRoaXMuZGF0YWJhc2UudGFibGVOYW1lcy5tYXAoZnVuY3Rpb24o
bmFtZSkgeyByZXR1cm4gbmFtZSArICIgIiB9KSk7Ci0gICAgICAgIGFjY3VtdWxhdGVNYXRjaGVz
KFsiU0VMRUNUICIsICJGUk9NICIsICJXSEVSRSAiLCAiTElNSVQgIiwgIkRFTEVURSBGUk9NICIs
ICJDUkVBVEUgIiwgIkRST1AgIiwgIlRBQkxFICIsICJJTkRFWCAiLCAiVVBEQVRFICIsICJJTlNF
UlQgSU5UTyAiLCAiVkFMVUVTICgiXSk7Ci0KLSAgICAgICAgY29tcGxldGlvbnNSZWFkeUNhbGxi
YWNrKHJlc3VsdHMpOworICAgICAgICAgICAgY29tcGxldGlvbnNSZWFkeUNhbGxiYWNrKHJlc3Vs
dHMpOworICAgICAgICB9CisgICAgICAgIHRoaXMuZGF0YWJhc2UucnVuV2l0aFRhYmxlTmFtZXMo
d2l0aFRhYmxlc0NhbGxiYWNrKTsKICAgICB9LAogCiAgICAgX3Byb21wdEtleURvd246IGZ1bmN0
aW9uKGV2ZW50KQpAQCAtMTMyLDE3ICsxMzYsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVl
cnlWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5wcm9tcHQuaGlzdG9yeU9mZnNldCA9
IDA7CiAgICAgICAgIHRoaXMucHJvbXB0LnRleHQgPSAiIjsKIAotICAgICAgICBmdW5jdGlvbiBx
dWVyeVRyYW5zYWN0aW9uKHR4KQotICAgICAgICB7Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3Fs
KHF1ZXJ5LCBudWxsLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9xdWVy
eUZpbmlzaGVkLmJpbmQodGhpcywgcXVlcnkpKSwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2Fs
bGJhY2sodGhpcy5fZXhlY3V0ZVNxbEVycm9yLmJpbmQodGhpcywgcXVlcnkpKSk7Ci0gICAgICAg
IH0KLQotICAgICAgICB0aGlzLmRhdGFiYXNlLmRhdGFiYXNlLnRyYW5zYWN0aW9uKEluc3BlY3Rv
ckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHF1ZXJ5VHJhbnNhY3Rpb24uYmluZCh0aGlzKSksIElu
c3BlY3RvckNvbnRyb2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlz
LCBxdWVyeSkpKTsKKyAgICAgICAgdGhpcy5kYXRhYmFzZS5leGVjdXRlU3FsKHF1ZXJ5LCB0aGlz
Ll9xdWVyeUZpbmlzaGVkLmJpbmQodGhpcywgcXVlcnkpLCB0aGlzLl9xdWVyeUVycm9yLmJpbmQo
dGhpcywgcXVlcnkpKTsKICAgICB9LAogCi0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKHF1
ZXJ5LCB0eCwgcmVzdWx0KQorICAgIF9xdWVyeUZpbmlzaGVkOiBmdW5jdGlvbihxdWVyeSwgcmVz
dWx0KQogICAgIHsKICAgICAgICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVjdG9yLnBhbmVscy5z
dG9yYWdlLmRhdGFHcmlkRm9yUmVzdWx0KHJlc3VsdCk7CisgICAgICAgIGlmICghZGF0YUdyaWQp
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGRhdGFHcmlkLmVsZW1lbnQuYWRkU3R5bGVD
bGFzcygiaW5saW5lIik7CiAgICAgICAgIHRoaXMuX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5LCBk
YXRhR3JpZC5lbGVtZW50KTsKIApAQCAtMTYyLDExICsxNjMsNiBAQCBXZWJJbnNwZWN0b3IuRGF0
YWJhc2VRdWVyeVZpZXcucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9hcHBlbmRRdWVyeVJl
c3VsdChxdWVyeSwgbWVzc2FnZSwgImVycm9yIik7CiAgICAgfSwKIAotICAgIF9leGVjdXRlU3Fs
RXJyb3I6IGZ1bmN0aW9uKHF1ZXJ5LCB0eCwgZXJyb3IpCi0gICAgewotICAgICAgICB0aGlzLl9x
dWVyeUVycm9yKHF1ZXJ5LCBlcnJvcik7Ci0gICAgfSwKLQogICAgIF9hcHBlbmRRdWVyeVJlc3Vs
dDogZnVuY3Rpb24ocXVlcnksIHJlc3VsdCwgcmVzdWx0Q2xhc3NOYW1lKQogICAgIHsKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcyBiL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcwppbmRleCAyOTIz
NWNmLi43ZjUyYjM3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0
YWJhc2VUYWJsZVZpZXcuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFi
YXNlVGFibGVWaWV3LmpzCkBAIC0zMyw5ICszMyw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRh
YmxlVmlldyA9IGZ1bmN0aW9uKGRhdGFiYXNlLCB0YWJsZU5hbWUpCiAgICAgdGhpcy5lbGVtZW50
LmFkZFN0eWxlQ2xhc3MoInN0b3JhZ2UtdmlldyIpOwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHls
ZUNsYXNzKCJ0YWJsZSIpOwogCi0gICAgdGhpcy5yZWZyZXNoQnV0dG9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uLnRpdGxlID0gV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIik7Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uLmNs
YXNzTmFtZSA9ICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRl
bSI7CisgICAgdGhpcy5yZWZyZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJC
dXR0b24oV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Ut
c3RhdHVzLWJhci1pdGVtIik7CiAgICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2Up
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBh
bmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qcwppbmRl
eCBlMGViNmZmLi5jZWM0YTBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU3RvcmFnZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9y
YWdlUGFuZWwuanMKQEAgLTE3Niw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGRhdGFiYXNlOwogICAgICAgICBmb3IgKHZhciBp
ID0gMCwgbGVuID0gdGhpcy5fZGF0YWJhc2VzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CiAgICAg
ICAgICAgICBkYXRhYmFzZSA9IHRoaXMuX2RhdGFiYXNlc1tpXTsKLSAgICAgICAgICAgIGlmICgg
ZGIgPT09IGRhdGFiYXNlLmRhdGFiYXNlICkgeworICAgICAgICAgICAgaWYgKGRhdGFiYXNlLmlz
REIoZGIpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0YWJhc2UoZGF0YWJhc2UpOwog
ICAgICAgICAgICAgICAgIGRhdGFiYXNlLl9kYXRhYmFzZXNUcmVlRWxlbWVudC5zZWxlY3QoKTsK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjksNyArMjI5LDcgQEAgV2ViSW5zcGVjdG9y
LlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0
dXNCYXJJdGVtc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB2YXIgc3RhdHVz
QmFySXRlbXMgPSB2aWV3LnN0YXR1c0Jhckl0ZW1zIHx8IFtdOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHN0YXR1c0Jhckl0ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5z
dG9yYWdlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0YXR1c0Jhckl0
ZW1zW2ldKTsKKyAgICAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRh
aW5lci5hcHBlbmRDaGlsZChzdGF0dXNCYXJJdGVtc1tpXS5lbGVtZW50KTsKICAgICB9LAogCiAg
ICAgc2hvd0RPTVN0b3JhZ2U6IGZ1bmN0aW9uKGRvbVN0b3JhZ2UpCkBAIC0yOTYsMTggKzI5Niwy
MiBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICB2YXIgdGFibGVOYW1lc0hhc2ggPSB7fTsKLSAgICAgICAgdmFy
IHRhYmxlTmFtZXMgPSBkYXRhYmFzZS50YWJsZU5hbWVzOwotICAgICAgICB2YXIgdGFibGVOYW1l
c0xlbmd0aCA9IHRhYmxlTmFtZXMubGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHRhYmxlTmFtZXNMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRhYmxlTmFtZXNIYXNoW3RhYmxl
TmFtZXNbaV1dID0gdHJ1ZTsKLQotICAgICAgICBmb3IgKHZhciB0YWJsZU5hbWUgaW4gZGF0YWJh
c2UuX3RhYmxlVmlld3MpIHsKLSAgICAgICAgICAgIGlmICghKHRhYmxlTmFtZSBpbiB0YWJsZU5h
bWVzSGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyA9PT0gZGF0
YWJhc2UuX3RhYmxlVmlld3NbdGFibGVOYW1lXSkKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5j
bG9zZVZpc2libGVWaWV3KCk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFiYXNlLl90YWJs
ZVZpZXdzW3RhYmxlTmFtZV07CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgZnVu
Y3Rpb24gd2l0aFRhYmxlTmFtZXModGFibGVOYW1lcykKKyAgICAgICAgeworICAgICAgICAgICAg
dmFyIHRhYmxlTmFtZXNMZW5ndGggPSB0YWJsZU5hbWVzLmxlbmd0aDsKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgdGFibGVOYW1lc0xlbmd0aDsgKytpKQorICAgICAgICAgICAgICAg
IHRhYmxlTmFtZXNIYXNoW3RhYmxlTmFtZXNbaV1dID0gdHJ1ZTsKKworICAgICAgICAgICAgZm9y
ICh2YXIgdGFibGVOYW1lIGluIGRhdGFiYXNlLl90YWJsZVZpZXdzKSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEodGFibGVOYW1lIGluIHRhYmxlTmFtZXNIYXNoKSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoc2VsZi52aXNpYmxlVmlldyA9PT0gZGF0YWJhc2UuX3RhYmxlVmlld3NbdGFibGVO
YW1lXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2VWaXNpYmxlVmlldygpOwor
ICAgICAgICAgICAgICAgICAgICBkZWxldGUgZGF0YWJhc2UuX3RhYmxlVmlld3NbdGFibGVOYW1l
XTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAg
ZGF0YWJhc2UucnVuV2l0aFRhYmxlTmFtZXMod2l0aFRhYmxlTmFtZXMpOwogICAgIH0sCiAKICAg
ICBkYXRhR3JpZEZvclJlc3VsdDogZnVuY3Rpb24ocmVzdWx0KQpAQCAtNTY1LDEwICs1NjksMTQg
QEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsK
ICAgICB7CiAgICAgICAgIHRoaXMucmVtb3ZlQ2hpbGRyZW4oKTsKIAotICAgICAgICB2YXIgdGFi
bGVOYW1lcyA9IHRoaXMuZGF0YWJhc2UudGFibGVOYW1lczsKLSAgICAgICAgdmFyIHRhYmxlTmFt
ZXNMZW5ndGggPSB0YWJsZU5hbWVzLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCB0YWJsZU5hbWVzTGVuZ3RoOyArK2kpCi0gICAgICAgICAgICB0aGlzLmFwcGVuZENoaWxkKG5l
dyBXZWJJbnNwZWN0b3IuU2lkZWJhckRhdGFiYXNlVGFibGVUcmVlRWxlbWVudCh0aGlzLmRhdGFi
YXNlLCB0YWJsZU5hbWVzW2ldKSk7CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAg
ZnVuY3Rpb24gd2l0aFRhYmxlTmFtZXModGFibGVOYW1lcykKKyAgICAgICAgeworICAgICAgICAg
ICAgdmFyIHRhYmxlTmFtZXNMZW5ndGggPSB0YWJsZU5hbWVzLmxlbmd0aDsKKyAgICAgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgdGFibGVOYW1lc0xlbmd0aDsgKytpKQorICAgICAgICAgICAg
ICAgIHNlbGYuYXBwZW5kQ2hpbGQobmV3IFdlYkluc3BlY3Rvci5TaWRlYmFyRGF0YWJhc2VUYWJs
ZVRyZWVFbGVtZW50KHNlbGYuZGF0YWJhc2UsIHRhYmxlTmFtZXNbaV0pKTsKKyAgICAgICAgfQor
ICAgICAgICB0aGlzLmRhdGFiYXNlLnJ1bldpdGhUYWJsZU5hbWVzKHdpdGhUYWJsZU5hbWVzKTsK
ICAgICB9LAogCiAgICAgZ2V0IG1haW5UaXRsZSgpCg==
</data>
<flag name="review"
          id="19860"
          type_id="1"
          status="-"
          setter="timothy"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38887</attachid>
            <date>2009-09-01 14:55:43 -0700</date>
            <delta_ts>2009-09-18 12:15:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>db2</filename>
            <type>text/plain</type>
            <size>12303</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDQ2Nzk5YS4uYmI3OGQ0YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wOS0wMSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBXZWJJbnNwZWN0b3I6IE1pZ3JhdGUgRGF0YWJhc2VzIHRhYiB0
byBJbmplY3RlZFNjcmlwdCAvCisgICAgICAgIHNlcmlhbGl6ZWQgaW50ZXJhY3Rpb24uCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4ODczCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RhdGFiYXNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlLnBy
b3RvdHlwZS5pc0RCKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUu
cnVuV2l0aFRhYmxlTmFtZXMuc29ydGluZ0NhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5EYXRhYmFzZS5wcm90b3R5cGUucnVuV2l0aFRhYmxlTmFtZXMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkRhdGFiYXNlLnByb3RvdHlwZS5leGVjdXRlU3FsKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5EYXRhYmFzZS5wcm90b3R5cGUuZXhlY3V0ZVNxbC5lcnJvckNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUuZXhlY3V0ZVNxbC5xdWVyeVRyYW5z
YWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZS5f
ZW50ZXJLZXlQcmVzc2VkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5Vmll
dy5wcm90b3R5cGUuX3F1ZXJ5RmluaXNoZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VUYWJsZVZpZXcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGF0YWJhc2VU
YWJsZVZpZXcpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2VsZWN0RGF0
YWJhc2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBk
YXRlRGF0YWJhc2VUYWJsZXMud2l0aFRhYmxlTmFtZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUudXBkYXRlRGF0YWJhc2VUYWJsZXMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRhdGFiYXNlU2lkZWJhclRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnBvcHVs
YXRlLndpdGhUYWJsZU5hbWVzKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EYXRhYmFzZVNpZGVi
YXJUcmVlRWxlbWVudC5wcm90b3R5cGUub25wb3B1bGF0ZSk6CisKIDIwMDktMDktMDEgIFl1cnkg
U2VtaWtoYXRza3kgIDx5dXJ5c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
VGltb3RoeSBIYXRjaGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmlu
ZGV4IGU5MjRmYjkuLmZhMjVlNGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50LmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTE1MSw4ICsxNTEsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoYW5kbGVF
dmVudChFdmVudCogZXZlbnQsIGJvb2wpCiAgICAgICAgICAgICBtX2Zyb250ZW5kLT5jaGlsZE5v
ZGVDb3VudFVwZGF0ZWQocGFyZW50SWQsIGlubmVyQ2hpbGROb2RlQ291bnQocGFyZW50KSk7CiAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBDaGlsZHJlbiBoYXZlIGJlZW4gcmVxdWVz
dGVkIC0+IHJldHVybiB2YWx1ZSBvZiBhIG5ldyBjaGlsZC4KLSAgICAgICAgICAgIGxvbmcgcHJl
dklkID0gbV9kb2N1bWVudE5vZGVUb0lkTWFwLmdldChpbm5lclByZXZpb3VzU2libGluZyhub2Rl
KSk7Ci0KKyAgICAgICAgICAgIE5vZGUqIHByZXZTaWJsaW5nID0gaW5uZXJQcmV2aW91c1NpYmxp
bmcobm9kZSk7CisgICAgICAgICAgICBsb25nIHByZXZJZCA9IHByZXZTaWJsaW5nID8gbV9kb2N1
bWVudE5vZGVUb0lkTWFwLmdldChwcmV2U2libGluZykgOiAwOwogICAgICAgICAgICAgU2NyaXB0
T2JqZWN0IHZhbHVlID0gYnVpbGRPYmplY3RGb3JOb2RlKG5vZGUsIDAsICZtX2RvY3VtZW50Tm9k
ZVRvSWRNYXApOwogICAgICAgICAgICAgbV9mcm9udGVuZC0+Y2hpbGROb2RlSW5zZXJ0ZWQocGFy
ZW50SWQsIHByZXZJZCwgdmFsdWUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2UuanMKaW5kZXggZWY0MmUxNS4uZGNhYjJhYiAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9EYXRhYmFzZS5qcwpAQCAtMjgsMjMgKzI4LDE2IEBACiAKIFdlYkluc3BlY3Rv
ci5EYXRhYmFzZSA9IGZ1bmN0aW9uKGRhdGFiYXNlLCBkb21haW4sIG5hbWUsIHZlcnNpb24pCiB7
Ci0gICAgdGhpcy5kYXRhYmFzZSA9IGRhdGFiYXNlOworICAgIHRoaXMuX2RhdGFiYXNlID0gZGF0
YWJhc2U7CiAgICAgdGhpcy5kb21haW4gPSBkb21haW47CiAgICAgdGhpcy5uYW1lID0gbmFtZTsK
ICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uOwogfQogCiBXZWJJbnNwZWN0b3IuRGF0YWJhc2Uu
cHJvdG90eXBlID0gewotICAgIGdldCBkYXRhYmFzZSgpCisgICAgaXNEYXRhYmFzZTogZnVuY3Rp
b24oZGIpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGF0YWJhc2U7Ci0gICAgfSwKLQot
ICAgIHNldCBkYXRhYmFzZSh4KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2RhdGFiYXNlID09
PSB4KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9kYXRhYmFzZSA9IHg7Cisg
ICAgICAgIHJldHVybiB0aGlzLl9kYXRhYmFzZSA9PT0gZGI7CiAgICAgfSwKIAogICAgIGdldCBu
YW1lKCkKQEAgLTg4LDggKzgxLDMzIEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZS5wcm90b3R5cGUg
PSB7CiAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuUmVzb3VyY2UucHJvdG90eXBlLl9fbG9v
a3VwR2V0dGVyX18oImRpc3BsYXlEb21haW4iKS5jYWxsKHRoaXMpOwogICAgIH0sCiAKLSAgICBn
ZXQgdGFibGVOYW1lcygpCisgICAgZ2V0VGFibGVOYW1lczogZnVuY3Rpb24oY2FsbGJhY2spCiAg
ICAgewotICAgICAgICByZXR1cm4gSW5zcGVjdG9yQ29udHJvbGxlci5kYXRhYmFzZVRhYmxlTmFt
ZXModGhpcy5kYXRhYmFzZSkuc29ydCgpOworICAgICAgICB2YXIgbmFtZXMgPSBJbnNwZWN0b3JD
b250cm9sbGVyLmRhdGFiYXNlVGFibGVOYW1lcyh0aGlzLl9kYXRhYmFzZSk7CisgICAgICAgIGZ1
bmN0aW9uIHNvcnRpbmdDYWxsYmFjaygpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGxiYWNr
KG5hbWVzLnNvcnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgc2V0VGltZW91dChzb3J0aW5nQ2Fs
bGJhY2ssIDApOworICAgIH0sCisgICAgCisgICAgZXhlY3V0ZVNxbDogZnVuY3Rpb24ocXVlcnks
IG9uU3VjY2Vzcywgb25FcnJvcikKKyAgICB7CisgICAgICAgIGZ1bmN0aW9uIHN1Y2Nlc3NDYWxs
YmFjayh0eCwgcmVzdWx0KQorICAgICAgICB7CisgICAgICAgICAgICBvblN1Y2Nlc3MocmVzdWx0
KTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGVycm9yQ2FsbGJhY2sodHgsIGVycm9y
KQorICAgICAgICB7CisgICAgICAgICAgICBvbkVycm9yKGVycm9yKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAgICAgICAgZnVuY3Rpb24gcXVlcnlUcmFuc2FjdGlv
bih0eCkKKyAgICAgICAgeworICAgICAgICAgICAgdHguZXhlY3V0ZVNxbChxdWVyeSwgbnVsbCwg
SW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2soc3VjY2Vzc0NhbGxiYWNrLmJpbmQoc2Vs
ZikpLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhlcnJvckNhbGxiYWNrLmJpbmQo
c2VsZikpKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl9kYXRhYmFzZS50cmFuc2FjdGlvbihJ
bnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhxdWVyeVRyYW5zYWN0aW9uLmJpbmQodGhp
cykpLCBJbnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhlcnJvckNhbGxiYWNrLmJpbmQo
dGhpcykpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRGF0YWJhc2VRdWVyeVZpZXcuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0
YWJhc2VRdWVyeVZpZXcuanMKaW5kZXggZDhhNTRmYS4uNmM1ZmEwMiAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlUXVlcnlWaWV3LmpzCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EYXRhYmFzZVF1ZXJ5Vmlldy5qcwpAQCAtODEsMTEgKzgx
LDE1IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVF1ZXJ5Vmlldy5wcm90b3R5cGUgPSB7CiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgZnVuY3Rpb24gdGFibGVOYW1lc0NhbGxiYWNrKHRhYmxlTmFtZXMpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGFjY3VtdWxhdGVNYXRjaGVzKHRhYmxlTmFtZXMubWFwKGZ1bmN0
aW9uKG5hbWUpIHsgcmV0dXJuIG5hbWUgKyAiICIgfSkpOworICAgICAgICAgICAgYWNjdW11bGF0
ZU1hdGNoZXMoWyJTRUxFQ1QgIiwgIkZST00gIiwgIldIRVJFICIsICJMSU1JVCAiLCAiREVMRVRF
IEZST00gIiwgIkNSRUFURSAiLCAiRFJPUCAiLCAiVEFCTEUgIiwgIklOREVYICIsICJVUERBVEUg
IiwgIklOU0VSVCBJTlRPICIsICJWQUxVRVMgKCJdKTsKIAotICAgICAgICBhY2N1bXVsYXRlTWF0
Y2hlcyh0aGlzLmRhdGFiYXNlLnRhYmxlTmFtZXMubWFwKGZ1bmN0aW9uKG5hbWUpIHsgcmV0dXJu
IG5hbWUgKyAiICIgfSkpOwotICAgICAgICBhY2N1bXVsYXRlTWF0Y2hlcyhbIlNFTEVDVCAiLCAi
RlJPTSAiLCAiV0hFUkUgIiwgIkxJTUlUICIsICJERUxFVEUgRlJPTSAiLCAiQ1JFQVRFICIsICJE
Uk9QICIsICJUQUJMRSAiLCAiSU5ERVggIiwgIlVQREFURSAiLCAiSU5TRVJUIElOVE8gIiwgIlZB
TFVFUyAoIl0pOwotCi0gICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhyZXN1bHRzKTsK
KyAgICAgICAgICAgIGNvbXBsZXRpb25zUmVhZHlDYWxsYmFjayhyZXN1bHRzKTsKKyAgICAgICAg
fQorICAgICAgICB0aGlzLmRhdGFiYXNlLmdldFRhYmxlTmFtZXModGFibGVOYW1lc0NhbGxiYWNr
KTsKICAgICB9LAogCiAgICAgX3Byb21wdEtleURvd246IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMTMy
LDE3ICsxMzYsMTQgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlUXVlcnlWaWV3LnByb3RvdHlwZSA9
IHsKICAgICAgICAgdGhpcy5wcm9tcHQuaGlzdG9yeU9mZnNldCA9IDA7CiAgICAgICAgIHRoaXMu
cHJvbXB0LnRleHQgPSAiIjsKIAotICAgICAgICBmdW5jdGlvbiBxdWVyeVRyYW5zYWN0aW9uKHR4
KQotICAgICAgICB7Ci0gICAgICAgICAgICB0eC5leGVjdXRlU3FsKHF1ZXJ5LCBudWxsLCBJbnNw
ZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9xdWVyeUZpbmlzaGVkLmJpbmQodGhp
cywgcXVlcnkpKSwgSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fZXhlY3V0
ZVNxbEVycm9yLmJpbmQodGhpcywgcXVlcnkpKSk7Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlz
LmRhdGFiYXNlLmRhdGFiYXNlLnRyYW5zYWN0aW9uKEluc3BlY3RvckNvbnRyb2xsZXIud3JhcENh
bGxiYWNrKHF1ZXJ5VHJhbnNhY3Rpb24uYmluZCh0aGlzKSksIEluc3BlY3RvckNvbnRyb2xsZXIu
d3JhcENhbGxiYWNrKHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzLCBxdWVyeSkpKTsKKyAgICAg
ICAgdGhpcy5kYXRhYmFzZS5leGVjdXRlU3FsKHF1ZXJ5LCB0aGlzLl9xdWVyeUZpbmlzaGVkLmJp
bmQodGhpcywgcXVlcnkpLCB0aGlzLl9xdWVyeUVycm9yLmJpbmQodGhpcywgcXVlcnkpKTsKICAg
ICB9LAogCi0gICAgX3F1ZXJ5RmluaXNoZWQ6IGZ1bmN0aW9uKHF1ZXJ5LCB0eCwgcmVzdWx0KQor
ICAgIF9xdWVyeUZpbmlzaGVkOiBmdW5jdGlvbihxdWVyeSwgcmVzdWx0KQogICAgIHsKICAgICAg
ICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmRhdGFHcmlkRm9y
UmVzdWx0KHJlc3VsdCk7CisgICAgICAgIGlmICghZGF0YUdyaWQpCisgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIGRhdGFHcmlkLmVsZW1lbnQuYWRkU3R5bGVDbGFzcygiaW5saW5lIik7CiAg
ICAgICAgIHRoaXMuX2FwcGVuZFF1ZXJ5UmVzdWx0KHF1ZXJ5LCBkYXRhR3JpZC5lbGVtZW50KTsK
IApAQCAtMTYyLDExICsxNjMsNiBAQCBXZWJJbnNwZWN0b3IuRGF0YWJhc2VRdWVyeVZpZXcucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9hcHBlbmRRdWVyeVJlc3VsdChxdWVyeSwgbWVzc2Fn
ZSwgImVycm9yIik7CiAgICAgfSwKIAotICAgIF9leGVjdXRlU3FsRXJyb3I6IGZ1bmN0aW9uKHF1
ZXJ5LCB0eCwgZXJyb3IpCi0gICAgewotICAgICAgICB0aGlzLl9xdWVyeUVycm9yKHF1ZXJ5LCBl
cnJvcik7Ci0gICAgfSwKLQogICAgIF9hcHBlbmRRdWVyeVJlc3VsdDogZnVuY3Rpb24ocXVlcnks
IHJlc3VsdCwgcmVzdWx0Q2xhc3NOYW1lKQogICAgIHsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EYXRhYmFzZVRhYmxlVmlldy5qcwppbmRleCAyOTIzNWNmLi5hYTc2Nzk0IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGF0YWJhc2VUYWJsZVZpZXcuanMK
KysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RhdGFiYXNlVGFibGVWaWV3LmpzCkBA
IC0zMyw5ICszMyw3IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVRhYmxlVmlldyA9IGZ1bmN0aW9u
KGRhdGFiYXNlLCB0YWJsZU5hbWUpCiAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInN0
b3JhZ2UtdmlldyIpOwogICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJ0YWJsZSIpOwog
Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9u
Iik7Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJSZWZyZXNoIik7Ci0gICAgdGhpcy5yZWZyZXNoQnV0dG9uLmNsYXNzTmFtZSA9ICJyZWZyZXNo
LXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIHN0YXR1cy1iYXItaXRlbSI7CisgICAgdGhpcy5yZWZy
ZXNoQnV0dG9uID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0dXNCYXJCdXR0b24oV2ViSW5zcGVjdG9y
LlVJU3RyaW5nKCJSZWZyZXNoIiksICJyZWZyZXNoLXN0b3JhZ2Utc3RhdHVzLWJhci1pdGVtIik7
CiAgICAgdGhpcy5yZWZyZXNoQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5f
cmVmcmVzaEJ1dHRvbkNsaWNrZWQuYmluZCh0aGlzKSwgZmFsc2UpOwogfQogCkBAIC01MywxNSAr
NTEsMTAgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVWaWV3LnByb3RvdHlwZSA9IHsKIAog
ICAgIHVwZGF0ZTogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gcXVlcnlUcmFu
c2FjdGlvbih0eCkKLSAgICAgICAgewotICAgICAgICAgICAgdHguZXhlY3V0ZVNxbCgiU0VMRUNU
ICogRlJPTSAiICsgdGhpcy50YWJsZU5hbWUsIG51bGwsIEluc3BlY3RvckNvbnRyb2xsZXIud3Jh
cENhbGxiYWNrKHRoaXMuX3F1ZXJ5RmluaXNoZWQuYmluZCh0aGlzKSksIEluc3BlY3RvckNvbnRy
b2xsZXIud3JhcENhbGxiYWNrKHRoaXMuX3F1ZXJ5RXJyb3IuYmluZCh0aGlzKSkpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdGhpcy5kYXRhYmFzZS5kYXRhYmFzZS50cmFuc2FjdGlvbihJbnNwZWN0
b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayhxdWVyeVRyYW5zYWN0aW9uLmJpbmQodGhpcykpLCBJ
bnNwZWN0b3JDb250cm9sbGVyLndyYXBDYWxsYmFjayh0aGlzLl9xdWVyeUVycm9yLmJpbmQodGhp
cykpKTsKKyAgICAgICAgdGhpcy5kYXRhYmFzZS5leGVjdXRlU3FsKCJTRUxFQ1QgKiBGUk9NICIg
KyB0aGlzLnRhYmxlTmFtZSwgdGhpcy5fcXVlcnlGaW5pc2hlZC5iaW5kKHRoaXMpLCB0aGlzLl9x
dWVyeUVycm9yLmJpbmQodGhpcykpOwogICAgIH0sCiAKLSAgICBfcXVlcnlGaW5pc2hlZDogZnVu
Y3Rpb24odHgsIHJlc3VsdCkKKyAgICBfcXVlcnlGaW5pc2hlZDogZnVuY3Rpb24ocmVzdWx0KQog
ICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CiAKQEAgLTc3LDcg
KzcwLDcgQEAgV2ViSW5zcGVjdG9yLkRhdGFiYXNlVGFibGVWaWV3LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKGRhdGFHcmlkLmVsZW1lbnQpOwogICAgIH0s
CiAKLSAgICBfcXVlcnlFcnJvcjogZnVuY3Rpb24odHgsIGVycm9yKQorICAgIF9xdWVyeUVycm9y
OiBmdW5jdGlvbihlcnJvcikKICAgICB7CiAgICAgICAgIHRoaXMuZWxlbWVudC5yZW1vdmVDaGls
ZHJlbigpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFn
ZVBhbmVsLmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qcwpp
bmRleCBlMGViNmZmLi5hZTQ0NjQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU3RvcmFnZVBhbmVsLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dG9yYWdlUGFuZWwuanMKQEAgLTE3Niw3ICsxNzYsNyBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIGRhdGFiYXNlOwogICAgICAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gdGhpcy5fZGF0YWJhc2VzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7CiAg
ICAgICAgICAgICBkYXRhYmFzZSA9IHRoaXMuX2RhdGFiYXNlc1tpXTsKLSAgICAgICAgICAgIGlm
ICggZGIgPT09IGRhdGFiYXNlLmRhdGFiYXNlICkgeworICAgICAgICAgICAgaWYgKGRhdGFiYXNl
LmlzRGF0YWJhc2UoZGIpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0YWJhc2UoZGF0
YWJhc2UpOwogICAgICAgICAgICAgICAgIGRhdGFiYXNlLl9kYXRhYmFzZXNUcmVlRWxlbWVudC5z
ZWxlY3QoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjksNyArMjI5LDcgQEAgV2Vi
SW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMuc3RvcmFn
ZVZpZXdTdGF0dXNCYXJJdGVtc0NvbnRhaW5lci5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB2
YXIgc3RhdHVzQmFySXRlbXMgPSB2aWV3LnN0YXR1c0Jhckl0ZW1zIHx8IFtdOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHN0YXR1c0Jhckl0ZW1zLmxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgdGhpcy5zdG9yYWdlVmlld1N0YXR1c0Jhckl0ZW1zQ29udGFpbmVyLmFwcGVuZENoaWxkKHN0
YXR1c0Jhckl0ZW1zW2ldKTsKKyAgICAgICAgICAgIHRoaXMuc3RvcmFnZVZpZXdTdGF0dXNCYXJJ
dGVtc0NvbnRhaW5lci5hcHBlbmRDaGlsZChzdGF0dXNCYXJJdGVtc1tpXS5lbGVtZW50KTsKICAg
ICB9LAogCiAgICAgc2hvd0RPTVN0b3JhZ2U6IGZ1bmN0aW9uKGRvbVN0b3JhZ2UpCkBAIC0yOTYs
MTggKzI5NiwyMiBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB2YXIgdGFibGVOYW1lc0hhc2ggPSB7fTsKLSAg
ICAgICAgdmFyIHRhYmxlTmFtZXMgPSBkYXRhYmFzZS50YWJsZU5hbWVzOwotICAgICAgICB2YXIg
dGFibGVOYW1lc0xlbmd0aCA9IHRhYmxlTmFtZXMubGVuZ3RoOwotICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRhYmxlTmFtZXNMZW5ndGg7ICsraSkKLSAgICAgICAgICAgIHRhYmxlTmFtZXNI
YXNoW3RhYmxlTmFtZXNbaV1dID0gdHJ1ZTsKLQotICAgICAgICBmb3IgKHZhciB0YWJsZU5hbWUg
aW4gZGF0YWJhc2UuX3RhYmxlVmlld3MpIHsKLSAgICAgICAgICAgIGlmICghKHRhYmxlTmFtZSBp
biB0YWJsZU5hbWVzSGFzaCkpIHsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlVmll
dyA9PT0gZGF0YWJhc2UuX3RhYmxlVmlld3NbdGFibGVOYW1lXSkKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5jbG9zZVZpc2libGVWaWV3KCk7Ci0gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFi
YXNlLl90YWJsZVZpZXdzW3RhYmxlTmFtZV07CisgICAgICAgIHZhciBzZWxmID0gdGhpczsKKyAg
ICAgICAgZnVuY3Rpb24gdGFibGVOYW1lc0NhbGxiYWNrKHRhYmxlTmFtZXMpCisgICAgICAgIHsK
KyAgICAgICAgICAgIHZhciB0YWJsZU5hbWVzTGVuZ3RoID0gdGFibGVOYW1lcy5sZW5ndGg7Cisg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRhYmxlTmFtZXNMZW5ndGg7ICsraSkKKyAg
ICAgICAgICAgICAgICB0YWJsZU5hbWVzSGFzaFt0YWJsZU5hbWVzW2ldXSA9IHRydWU7CisKKyAg
ICAgICAgICAgIGZvciAodmFyIHRhYmxlTmFtZSBpbiBkYXRhYmFzZS5fdGFibGVWaWV3cykgewor
ICAgICAgICAgICAgICAgIGlmICghKHRhYmxlTmFtZSBpbiB0YWJsZU5hbWVzSGFzaCkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHNlbGYudmlzaWJsZVZpZXcgPT09IGRhdGFiYXNlLl90YWJs
ZVZpZXdzW3RhYmxlTmFtZV0pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlVmlz
aWJsZVZpZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFiYXNlLl90YWJsZVZp
ZXdzW3RhYmxlTmFtZV07CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAg
ICB9CisgICAgICAgIGRhdGFiYXNlLmdldFRhYmxlTmFtZXModGFibGVOYW1lc0NhbGxiYWNrKTsK
ICAgICB9LAogCiAgICAgZGF0YUdyaWRGb3JSZXN1bHQ6IGZ1bmN0aW9uKHJlc3VsdCkKQEAgLTU2
NSwxMCArNTY5LDE0IEBAIFdlYkluc3BlY3Rvci5EYXRhYmFzZVNpZGViYXJUcmVlRWxlbWVudC5w
cm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB0aGlzLnJlbW92ZUNoaWxkcmVuKCk7CiAKLSAg
ICAgICAgdmFyIHRhYmxlTmFtZXMgPSB0aGlzLmRhdGFiYXNlLnRhYmxlTmFtZXM7Ci0gICAgICAg
IHZhciB0YWJsZU5hbWVzTGVuZ3RoID0gdGFibGVOYW1lcy5sZW5ndGg7Ci0gICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgdGFibGVOYW1lc0xlbmd0aDsgKytpKQotICAgICAgICAgICAgdGhpcy5h
cHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlNpZGViYXJEYXRhYmFzZVRhYmxlVHJlZUVsZW1l
bnQodGhpcy5kYXRhYmFzZSwgdGFibGVOYW1lc1tpXSkpOworICAgICAgICB2YXIgc2VsZiA9IHRo
aXM7CisgICAgICAgIGZ1bmN0aW9uIHRhYmxlTmFtZXNDYWxsYmFjayh0YWJsZU5hbWVzKQorICAg
ICAgICB7CisgICAgICAgICAgICB2YXIgdGFibGVOYW1lc0xlbmd0aCA9IHRhYmxlTmFtZXMubGVu
Z3RoOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWJsZU5hbWVzTGVuZ3RoOyAr
K2kpCisgICAgICAgICAgICAgICAgc2VsZi5hcHBlbmRDaGlsZChuZXcgV2ViSW5zcGVjdG9yLlNp
ZGViYXJEYXRhYmFzZVRhYmxlVHJlZUVsZW1lbnQoc2VsZi5kYXRhYmFzZSwgdGFibGVOYW1lc1tp
XSkpOworICAgICAgICB9CisgICAgICAgIHRoaXMuZGF0YWJhc2UuZ2V0VGFibGVOYW1lcyh0YWJs
ZU5hbWVzQ2FsbGJhY2spOwogICAgIH0sCiAKICAgICBnZXQgbWFpblRpdGxlKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39692</attachid>
            <date>2009-09-17 06:42:16 -0700</date>
            <delta_ts>2009-09-18 02:41:07 -0700</delta_ts>
            <desc>patch: serialize dom storage access</desc>
            <filename>serialize-domstorage-access.patch</filename>
            <type>text/plain</type>
            <size>36183</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWIyYWQ2Mi4uYTI3NWVhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3NSBAQAorMjAwOS0wOS0xNyAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBNaWdyYXRlIERhdGFiYXNlcyB0YWIg
dG8gSW5qZWN0ZWRTY3JpcHQgLworICAgICAgICBzZXJpYWxpemVkIGludGVyYWN0aW9uLgorCisg
ICAgICAgIERPTVN0b3JhZ2UgaW50ZXJhY3Rpb24gaXMgbm93IHNlcmlhbGl6ZWQgaW50byBKU09O
IG1lc3NhZ2VzCisgICAgICAgIGFuZCBkb2Vzbid0IHJlcXVpcmUgcXVhcmFudGluZWQgb2JqZWN0
cy4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODg3MworCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6c2VsZWN0RE9NU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRET01TdG9yYWdlRW50cmllcyk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpzZXRET01TdG9yYWdlSXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01TdG9yYWdlSXRl
bSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
cjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVy
OjpzZWxlY3RET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xs
ZXI6OmdldERPTVN0b3JhZ2VFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6OnNldERPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNvbnRyb2xsZXI6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NU3RvcmFnZVJlc291cmNlOjpJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6dW5iaW5kKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6c3RhcnRSZXBvcnRpbmdD
aGFuZ2VzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2U6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdl
UmVzb3VyY2U6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZTo6ZG9tU3RvcmFnZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpzZWxlY3RET01TdG9y
YWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kOjpkaWRHZXRET01TdG9y
YWdlRW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZDo6ZGlkU2V0
RE9NU3RvcmFnZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6OmRp
ZFJlbW92ZURPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZyb250
ZW5kOjp1cGRhdGVET01TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJv
bnRlbmQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanM6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZS5wcm90b3R5cGUuZ2V0IGlkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlLnByb3RvdHlwZS5nZXQgZG9tU3RvcmFnZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZS5wcm90b3R5cGUuZ2V0IGlzTG9jYWxTdG9yYWdlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZS5nZXRFbnRyaWVzQXN5bmMpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLnNldEl0ZW1Bc3luYyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUucmVtb3ZlSXRlbUFzeW5jKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VEYXRhR3JpZC5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VEYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZ0NvbHVtbk9mRGF0
YUdyaWROb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQucHJv
dG90eXBlLl9zdGFydEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VE
YXRhR3JpZC5wcm90b3R5cGUuX2VkaXRpbmdDb21taXR0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRPTVN0b3JhZ2VEYXRhR3JpZC5wcm90b3R5cGUuX2VkaXRpbmdDYW5jZWxsZWQpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZC5wcm90b3R5cGUuZGVsZXRlU2Vs
ZWN0ZWRSb3cpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0ZW1z
Vmlldy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlSXRlbXNWaWV3LnByb3Rv
dHlwZS51cGRhdGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcu
cHJvdG90eXBlLl9zaG93RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlLl9kYXRhR3JpZEZvckRPTVN0b3JhZ2VFbnRy
aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qczoKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlLnNob3cpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUucmVzZXQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUuc2VsZWN0RE9NU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS51cGRhdGVET01TdG9y
YWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlLl9kb21T
dG9yYWdlRm9ySWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmFkZERPTVN0b3JhZ2UpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLnVwZGF0ZURPTVN0b3JhZ2UpOgorCiAyMDA5LTA5LTE0ICBTaW1vbiBGcmFzZXIgIDxz
aW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCB0aGUgY2hhbmdlIGluIHI0ODM3
NiB0byBkbyBhIG51bGwtY2hlY2sgdG8gZml4IGEgY3Jhc2hpbmcgdGVzdC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggNmQ4MjEwOS4uODIzNDk2OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKKysrIGIvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTUwMCw4ICs1MDAsMjYgQEAgdm9pZCBJ
bnNwZWN0b3JCYWNrZW5kOjpzZWxlY3REYXRhYmFzZShEYXRhYmFzZSogZGF0YWJhc2UpCiAjaWYg
RU5BQkxFKERPTV9TVE9SQUdFKQogdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzZWxlY3RET01TdG9y
YWdlKFN0b3JhZ2UqIHN0b3JhZ2UpCiB7Ci0gICAgaWYgKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCA9IGluc3BlY3RvckZyb250ZW5kKCkpCi0gICAgICAgIGZyb250ZW5kLT5zZWxlY3RET01T
dG9yYWdlKHN0b3JhZ2UpOworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAg
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRET01TdG9yYWdlRW50cmllcyhsb25nIGNhbGxJZCwg
bG9uZyBzdG9yYWdlSWQpCit7CisgICAgaWYgKG1faW5zcGVjdG9yQ29udHJvbGxlcikKKyAgICAg
ICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRET01TdG9yYWdlRW50cmllcyhjYWxsSWQsIHN0
b3JhZ2VJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2VuZDo6c2V0RE9NU3RvcmFnZUl0ZW0o
bG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JDb250cm9sbGVyKQorICAgICAgICBt
X2luc3BlY3RvckNvbnRyb2xsZXItPnNldERPTVN0b3JhZ2VJdGVtKGNhbGxJZCwgc3RvcmFnZUlk
LCBrZXksIHZhbHVlKTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVET01TdG9y
YWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KQor
eworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29u
dHJvbGxlci0+cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oY2FsbElkLCBzdG9yYWdlSWQsIGtleSk7CiB9
CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oCmluZGV4IDIyYjQ2YmYu
LjVkYjc1NTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
aAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmgKQEAgLTE1MSw2ICsx
NTEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgdm9p
ZCBzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3JhZ2UpOworICAgIHZvaWQgZ2V0RE9NU3Rv
cmFnZUVudHJpZXMobG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkKTsKKyAgICB2b2lkIHNldERP
TVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBr
ZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0o
bG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSk7ICAKICNlbmRp
ZgogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5pZGwgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbAppbmRleCA0
NTQwMDAxLi4zOTVlN2ZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmlkbAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JCYWNrZW5kLmlkbApA
QCAtMTIxLDYgKzEyMSw5IEBAIG1vZHVsZSBjb3JlIHsKICNlbmRpZgogI2lmIGRlZmluZWQoRU5B
QkxFX0RPTV9TVE9SQUdFKSAmJiBFTkFCTEVfRE9NX1NUT1JBR0UKICAgICAgICAgW0N1c3RvbV0g
dm9pZCBzZWxlY3RET01TdG9yYWdlKGluIERPTU9iamVjdCBzdG9yYWdlKTsKKyAgICAgICAgdm9p
ZCBnZXRET01TdG9yYWdlRW50cmllcyhpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQp
OworICAgICAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGluIGxvbmcgY2FsbElkLCBpbiBsb25n
IHN0b3JhZ2VJZCwgaW4gRE9NU3RyaW5nIGtleSwgaW4gRE9NU3RyaW5nIHZhbHVlKTsKKyAgICAg
ICAgdm9pZCByZW1vdmVET01TdG9yYWdlSXRlbShpbiBsb25nIGNhbGxJZCwgaW4gbG9uZyBzdG9y
YWdlSWQsIGluIERPTVN0cmluZyBrZXkpOwogI2VuZGlmCiAgICAgfTsKIH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggYTVlODE4NC4uOTgwNTE2NiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTcyOSw2ICs3Mjks
OSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZENvbW1pdExvYWQoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKICAgICAgICAgbV9jdXJyZW50VXNlckluaXRpYXRlZFByb2ZpbGVOdW1iZXIg
PSAxOwogICAgICAgICBtX25leHRVc2VySW5pdGlhdGVkUHJvZmlsZU51bWJlciA9IDE7CiAjZW5k
aWYKKyAgICAgICAgLy8gcmVzZXRTY3JpcHRPYmplY3RzIHNob3VsZCBiZSBjYWxsZWQgYmVmb3Jl
IGRhdGFiYXNlIGFuZCBET00gc3RvcmFnZQorICAgICAgICAvLyByZXNvdXJjZXMgYXJlIGNsZWFy
ZWQgc28gdGhhdCBpdCBoYXMgYSBjaGFuY2UgdG8gdW5iaW5kIHRoZW0uCisgICAgICAgIHJlc2V0
U2NyaXB0T2JqZWN0cygpOwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICAgICAgbV9kYXRhYmFz
ZVJlc291cmNlcy5jbGVhcigpOwogI2VuZGlmCkBAIC03MzcsOCArNzQwLDYgQEAgdm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpkaWRDb21taXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAj
ZW5kaWYKIAogICAgICAgICBpZiAobV9mcm9udGVuZCkgewotICAgICAgICAgICAgcmVzZXRTY3Jp
cHRPYmplY3RzKCk7Ci0KICAgICAgICAgICAgIGlmICghbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5p
c0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG1fbWFp
blJlc291cmNlICYmIG1fbWFpblJlc291cmNlLT5pc1NhbWVMb2FkZXIobG9hZGVyKSk7CiAgICAg
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYWRkIHRoZSBtYWluIHJlc291cmNlIHVudGlsIGl0cyBs
b2FkIGlzIGNvbW1pdHRlZC4gVGhpcyBpcwpAQCAtMTEwNiw2ICsxMTA3LDg5IEBAIHZvaWQgSW5z
cGVjdG9yQ29udHJvbGxlcjo6ZGlkVXNlRE9NU3RvcmFnZShTdG9yYWdlQXJlYSogc3RvcmFnZUFy
ZWEsIGJvb2wgaXNMb2NhCiAgICAgaWYgKG1fZnJvbnRlbmQpCiAgICAgICAgIHJlc291cmNlLT5i
aW5kKG1fZnJvbnRlbmQuZ2V0KCkpOwogfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OnNl
bGVjdERPTVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFnZSkKK3sKKyAgICBBU1NFUlQoc3RvcmFnZSk7
CisgICAgaWYgKCFtX2Zyb250ZW5kKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgRnJhbWUq
IGZyYW1lID0gc3RvcmFnZS0+ZnJhbWUoKTsKKyAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gKGZy
YW1lLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKCkgPT0gc3RvcmFnZSk7CisgICAgaW50IHN0
b3JhZ2VSZXNvdXJjZUlkID0gMDsKKyAgICBET01TdG9yYWdlUmVzb3VyY2VzU2V0OjppdGVyYXRv
ciBkb21TdG9yYWdlRW5kID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmVuZCgpOworICAgIGZvciAo
RE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3IgaXQgPSBtX2RvbVN0b3JhZ2VSZXNvdXJj
ZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytpdCkgeworICAgICAgICBpZiAoKCpp
dCktPmlzU2FtZUhvc3RBbmRUeXBlKGZyYW1lLCBpc0xvY2FsU3RvcmFnZSkpIHsKKyAgICAgICAg
ICAgIHN0b3JhZ2VSZXNvdXJjZUlkID0gKCppdCktPmlkKCk7CisgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RvcmFnZVJlc291cmNlSWQpIHsKKyAgICAgICAg
bV9mcm9udGVuZC0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlUmVzb3VyY2VJZCk7CisgICAgfQor
fQorICAgIAordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRET01TdG9yYWdlRW50cmllcyhp
bnQgY2FsbElkLCBpbnQgc3RvcmFnZUlkKQoreworICAgIGlmICghbV9mcm9udGVuZCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgU2NyaXB0QXJyYXkganNvbkFycmF5ID0gbV9mcm9udGVuZC0+bmV3
U2NyaXB0QXJyYXkoKTsKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UqIHN0b3JhZ2VS
ZXNvdXJjZSA9IGdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklkKHN0b3JhZ2VJZCk7CisgICAgaWYg
KHN0b3JhZ2VSZXNvdXJjZSkgeworICAgICAgICBzdG9yYWdlUmVzb3VyY2UtPnN0YXJ0UmVwb3J0
aW5nQ2hhbmdlc1RvRnJvbnRlbmQoKTsKKyAgICAgICAgU3RvcmFnZSogZG9tU3RvcmFnZSA9IHN0
b3JhZ2VSZXNvdXJjZS0+ZG9tU3RvcmFnZSgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAw
OyBpIDwgZG9tU3RvcmFnZS0+bGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIG5h
bWUoZG9tU3RvcmFnZS0+a2V5KGkpKTsKKyAgICAgICAgICAgIFN0cmluZyB2YWx1ZShkb21TdG9y
YWdlLT5nZXRJdGVtKG5hbWUpKTsKKyAgICAgICAgICAgIFNjcmlwdEFycmF5IGVudHJ5ID0gbV9m
cm9udGVuZC0+bmV3U2NyaXB0QXJyYXkoKTsKKyAgICAgICAgICAgIGVudHJ5LnNldCgwLCBuYW1l
KTsKKyAgICAgICAgICAgIGVudHJ5LnNldCgxLCB2YWx1ZSk7CisgICAgICAgICAgICBqc29uQXJy
YXkuc2V0KGksIGVudHJ5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICBtX2Zyb250ZW5kLT5kaWRH
ZXRET01TdG9yYWdlRW50cmllcyhjYWxsSWQsIGpzb25BcnJheSk7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yQ29udHJvbGxlcjo6c2V0RE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFn
ZUlkLCBjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAo
IW1fZnJvbnRlbmQpCisgICAgICAgIHJldHVybjsKKworICAgIGJvb2wgc3VjY2VzcyA9IGZhbHNl
OworICAgIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSogc3RvcmFnZVJlc291cmNlID0gZ2V0
RE9NU3RvcmFnZVJlc291cmNlRm9ySWQoc3RvcmFnZUlkKTsKKyAgICBpZiAoc3RvcmFnZVJlc291
cmNlKSB7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgc3Rv
cmFnZVJlc291cmNlLT5kb21TdG9yYWdlKCktPnNldEl0ZW0oa2V5LCB2YWx1ZSwgZXhjZXB0aW9u
KTsKKyAgICAgICAgc3VjY2VzcyA9IChleGNlcHRpb24gPT0gMCk7CisgICAgfQorICAgIG1fZnJv
bnRlbmQtPmRpZFNldERPTVN0b3JhZ2VJdGVtKGNhbGxJZCwgc3VjY2Vzcyk7Cit9CisKK3ZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxv
bmcgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkKK3sKKyAgICBpZiAoIW1fZnJvbnRlbmQp
CisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBJ
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UqIHN0b3JhZ2VSZXNvdXJjZSA9IGdldERPTVN0b3Jh
Z2VSZXNvdXJjZUZvcklkKHN0b3JhZ2VJZCk7CisgICAgaWYgKHN0b3JhZ2VSZXNvdXJjZSkgewor
ICAgICAgICBzdG9yYWdlUmVzb3VyY2UtPmRvbVN0b3JhZ2UoKS0+cmVtb3ZlSXRlbShrZXkpOwor
ICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9CisgICAgbV9mcm9udGVuZC0+ZGlkUmVtb3Zl
RE9NU3RvcmFnZUl0ZW0oY2FsbElkLCBzdWNjZXNzKTsKK30KKworSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlKiBJbnNwZWN0b3JDb250cm9sbGVyOjpnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJ
ZChpbnQgc3RvcmFnZUlkKQoreworICAgIERPTVN0b3JhZ2VSZXNvdXJjZXNTZXQ6Oml0ZXJhdG9y
IGRvbVN0b3JhZ2VFbmQgPSBtX2RvbVN0b3JhZ2VSZXNvdXJjZXMuZW5kKCk7CisgICAgZm9yIChE
T01TdG9yYWdlUmVzb3VyY2VzU2V0OjppdGVyYXRvciBpdCA9IG1fZG9tU3RvcmFnZVJlc291cmNl
cy5iZWdpbigpOyBpdCAhPSBkb21TdG9yYWdlRW5kOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0
KS0+aWQoKSA9PSBzdG9yYWdlSWQpIHsKKyAgICAgICAgICAgIHJldHVybiBpdC0+Z2V0KCk7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CiAjZW5kaWYKIAogdm9pZCBJbnNwZWN0
b3JDb250cm9sbGVyOjptb3ZlV2luZG93QnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3QKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAppbmRleCBmM2UyMzBlLi43YmEwNTU4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC03NCw2ICs3NCw3IEBA
IGNsYXNzIFJlc291cmNlRXJyb3I7CiBjbGFzcyBTY3JpcHRDYWxsU3RhY2s7CiBjbGFzcyBTY3Jp
cHRTdHJpbmc7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CitjbGFzcyBTdG9yYWdlOwogY2xhc3MgU3Rv
cmFnZUFyZWE7CiAKIGNsYXNzIENvbnNvbGVNZXNzYWdlOwpAQCAtMjMyLDYgKzIzMywxMCBAQCBw
dWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgdm9pZCBkaWRVc2VE
T01TdG9yYWdlKFN0b3JhZ2VBcmVhKiBzdG9yYWdlQXJlYSwgYm9vbCBpc0xvY2FsU3RvcmFnZSwg
RnJhbWUqIGZyYW1lKTsKKyAgICB2b2lkIHNlbGVjdERPTVN0b3JhZ2UoU3RvcmFnZSogc3RvcmFn
ZSk7CisgICAgdm9pZCBnZXRET01TdG9yYWdlRW50cmllcyhpbnQgY2FsbElkLCBpbnQgc3RvcmFn
ZUlkKTsKKyAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQg
cmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSk7CiAjZW5kaWYKIAogICAgIGNvbnN0IFJlc291cmNlc01hcCYgcmVzb3VyY2Vz
KCkgY29uc3QgeyByZXR1cm4gbV9yZXNvdXJjZXM7IH0KQEAgLTMwMSw3ICszMDYsMTAgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICAgICB2b2lkIGVuYWJs
ZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKTsKICNlbmRpZgotCisjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQorICAgIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSogZ2V0RE9NU3Rv
cmFnZVJlc291cmNlRm9ySWQoaW50IHN0b3JhZ2VJZCk7CisjZW5kaWYKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgdm9pZCBmb2N1
c05vZGUoKTsKIAogICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoU2NyaXB0U3RhdGUqLCBDb25z
b2xlTWVzc2FnZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
U3RvcmFnZVJlc291cmNlLmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3Jh
Z2VSZXNvdXJjZS5jcHAKaW5kZXggMWU1Njc0Mi4uYzUxZWFhZCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlLmNwcAorKysgYi9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCkBAIC0zNCwyMSArMzQs
MjYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaCIKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkZyYW1l
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmQuaCIKICNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKLSNpbmNsdWRlICJTY3JpcHRPYmplY3RRdWFyYW50aW5lLmgiCiAjaW5jbHVkZSAiU3Rv
cmFnZS5oIgorI2luY2x1ZGUgIlN0b3JhZ2VFdmVudC5oIgogCiB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitpbnQgSW5zcGVjdG9yRE9NU3RvcmFnZVJl
c291cmNlOjpzX25leHRVbnVzZWRJZCA9IDE7ICAgIAogCiBJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2U6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZShTdG9yYWdlKiBkb21TdG9yYWdlLCBi
b29sIGlzTG9jYWxTdG9yYWdlLCBGcmFtZSogZnJhbWUpCiAgICAgOiBtX2RvbVN0b3JhZ2UoZG9t
U3RvcmFnZSkKICAgICAsIG1faXNMb2NhbFN0b3JhZ2UoaXNMb2NhbFN0b3JhZ2UpCiAgICAgLCBt
X2ZyYW1lKGZyYW1lKQotICAgICwgbV9zY3JpcHRPYmplY3RDcmVhdGVkKGZhbHNlKQorICAgICwg
bV9mcm9udGVuZCgwKQorICAgICwgbV9pZChzX25leHRVbnVzZWRJZCsrKQorICAgICwgbV9yZXBv
cnRpbmdDaGFuZ2VzVG9Gcm9udGVuZChmYWxzZSkKIHsKIH0KIApAQCAtNTksMjMgKzY0LDQ1IEBA
IGJvb2wgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjppc1NhbWVIb3N0QW5kVHlwZShGcmFt
ZSogZnJhbWUsIGJvb2wgaXNMb2NhbFN0CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291
cmNlOjpiaW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCkKIHsKLSAgICBpZiAobV9zY3Jp
cHRPYmplY3RDcmVhdGVkKQotICAgICAgICByZXR1cm47CisgICAgQVNTRVJUKCFtX2Zyb250ZW5k
KTsKKyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CiAKICAgICBTY3JpcHRPYmplY3QganNvbk9i
amVjdCA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3QoKTsKLSAgICBTY3JpcHRPYmplY3QgZG9t
U3RvcmFnZTsKLSAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2JqZWN0KG1fZG9tU3RvcmFn
ZS5nZXQoKSwgZG9tU3RvcmFnZSkpCi0gICAgICAgIHJldHVybjsKLSAgICBqc29uT2JqZWN0LnNl
dCgiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOwogICAgIGpzb25PYmplY3Quc2V0KCJob3N0Iiwg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+aG9zdCgpKTsKICAgICBqc29u
T2JqZWN0LnNldCgiaXNMb2NhbFN0b3JhZ2UiLCBtX2lzTG9jYWxTdG9yYWdlKTsKLSAgICBpZiAo
ZnJvbnRlbmQtPmFkZERPTVN0b3JhZ2UoanNvbk9iamVjdCkpCi0gICAgICAgIG1fc2NyaXB0T2Jq
ZWN0Q3JlYXRlZCA9IHRydWU7CisgICAganNvbk9iamVjdC5zZXQoImlkIiwgbV9pZCk7CisgICAg
ZnJvbnRlbmQtPmFkZERPTVN0b3JhZ2UoanNvbk9iamVjdCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjp1bmJpbmQoKQogewotICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRl
ZCA9IGZhbHNlOworICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICBpZiAobV9yZXBvcnRpbmdD
aGFuZ2VzVG9Gcm9udGVuZCkgeworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+cmVtb3Zl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCB0aGlzLCB0cnVlKTsKKyAg
ICAgICAgbV9yZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZCA9IGZhbHNlOworICAgIH0KKyAgICBt
X2Zyb250ZW5kID0gMDsKK30KKyAgICAKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
OjpzdGFydFJlcG9ydGluZ0NoYW5nZXNUb0Zyb250ZW5kKCkKK3sKKyAgICBBU1NFUlQobV9mcm9u
dGVuZCk7CisgICAgaWYgKCFtX3JlcG9ydGluZ0NoYW5nZXNUb0Zyb250ZW5kKSB7CisgICAgICAg
IG1fZnJhbWUtPmRvbVdpbmRvdygpLT5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdG9y
YWdlRXZlbnQsIHRoaXMsIHRydWUpOworICAgICAgICBtX3JlcG9ydGluZ0NoYW5nZXNUb0Zyb250
ZW5kID0gdHJ1ZTsKKyAgICB9Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
OjpoYW5kbGVFdmVudChFdmVudCogZXZlbnQsIGJvb2wpCit7CisgICAgQVNTRVJUKG1fZnJvbnRl
bmQpOworICAgIEFTU0VSVChldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50ID09IGV2ZW50LT50eXBl
KCkpOworICAgIFN0b3JhZ2VFdmVudCogc3RvcmFnZUV2ZW50ID0gc3RhdGljX2Nhc3Q8U3RvcmFn
ZUV2ZW50Kj4oZXZlbnQpOworICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSBzdG9yYWdlRXZlbnQtPnN0
b3JhZ2VBcmVhKCk7CisgICAgYm9vbCBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VFdmVudC0+c291
cmNlKCktPmxvY2FsU3RvcmFnZSgpID09IHN0b3JhZ2U7CisgICAgaWYgKGlzU2FtZUhvc3RBbmRU
eXBlKHN0b3JhZ2UtPmZyYW1lKCksIGlzTG9jYWxTdG9yYWdlKSkgeworICAgICAgICBtX2Zyb250
ZW5kLT51cGRhdGVET01TdG9yYWdlKG1faWQpOworICAgIH0KIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZVJlc291cmNlLmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3Vy
Y2UuaAppbmRleCAzZTA1ODk3Li5mYjlkZTRmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuaApAQCAtMzMsNiArMzMsNyBAQAogCiAjaWYgRU5B
QkxFKERPTV9TVE9SQUdFKQogCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUg
IlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAKQEAgLTQ2LDcgKzQ3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIElu
c3BlY3RvckZyb250ZW5kOwogCi0gICAgY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
IDogcHVibGljIFJlZkNvdW50ZWQ8SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlPiB7CisgICAg
Y2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlIDogcHVibGljIEV2ZW50TGlzdGVuZXIg
ewogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlPiBjcmVhdGUoU3RvcmFnZSogZG9tU3RvcmFnZSwgYm9vbCBpc0xvY2FsU3Rv
cmFnZSwgRnJhbWUqIGZyYW1lKQogICAgICAgICB7CkBAIC01NSw4ICs1NiwxMyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBiaW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCk7CiAgICAgICAgIHZvaWQgdW5iaW5kKCk7CisgICAgICAgIHZvaWQgc3RhcnRSZXBvcnRp
bmdDaGFuZ2VzVG9Gcm9udGVuZCgpOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVu
dChFdmVudCosIGJvb2wgaXNXaW5kb3dFdmVudCk7CiAKICAgICAgICAgYm9vbCBpc1NhbWVIb3N0
QW5kVHlwZShGcmFtZSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpIGNvbnN0OworICAgICAgICBsb25n
IGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICBTdG9yYWdlKiBkb21TdG9yYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9kb21TdG9yYWdlLmdldCgpOyB9CiAKICAgICBwcml2YXRlOgog
CkBAIC02NSw4ICs3MSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFJlZlB0cjxT
dG9yYWdlPiBtX2RvbVN0b3JhZ2U7CiAgICAgICAgIGJvb2wgbV9pc0xvY2FsU3RvcmFnZTsKICAg
ICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwotICAgICAgICBib29sIG1fc2NyaXB0T2JqZWN0
Q3JlYXRlZDsKLQorICAgICAgICBJbnNwZWN0b3JGcm9udGVuZCogbV9mcm9udGVuZDsKKyAgICAg
ICAgaW50IG1faWQ7CisgICAgICAgIGJvb2wgbV9yZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZDsK
KyAgICAgICAgCisgICAgICAgIHN0YXRpYyBpbnQgc19uZXh0VW51c2VkSWQ7CiAgICAgfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQu
Y3BwCmluZGV4IGJiMzY5YmQuLjBmZmM5OWYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kLmNwcAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZC5jcHAKQEAgLTM5NywxMyArMzk3LDQxIEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmQ6
OnNlbGVjdERhdGFiYXNlKERhdGFiYXNlKiBkYXRhYmFzZSkKICNlbmRpZgogCiAjaWYgRU5BQkxF
KERPTV9TVE9SQUdFKQotdm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6c2VsZWN0RE9NU3RvcmFnZShT
dG9yYWdlKiBzdG9yYWdlKQordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6c2VsZWN0RE9NU3RvcmFn
ZShpbnQgc3RvcmFnZUlkKQogewogICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0
aW9uKG5ld0Z1bmN0aW9uQ2FsbCgic2VsZWN0RE9NU3RvcmFnZSIpKTsKLSAgICBTY3JpcHRPYmpl
Y3QgcXVhcmFudGluZWRPYmplY3Q7Ci0gICAgaWYgKCFnZXRRdWFyYW50aW5lZFNjcmlwdE9iamVj
dChzdG9yYWdlLCBxdWFyYW50aW5lZE9iamVjdCkpCi0gICAgICAgIHJldHVybjsKLSAgICBmdW5j
dGlvbi0+YXBwZW5kQXJndW1lbnQocXVhcmFudGluZWRPYmplY3QpOworICAgIGZ1bmN0aW9uLT5h
cHBlbmRBcmd1bWVudChzdG9yYWdlSWQpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZEdldERPTVN0b3JhZ2VFbnRyaWVzKGludCBjYWxsSWQs
IGNvbnN0IFNjcmlwdEFycmF5JiBlbnRyaWVzKQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlv
bkNhbGw+IGZ1bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgiZGlkR2V0RE9NU3RvcmFnZUVudHJpZXMi
KSk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KGNhbGxJZCk7CisgICAgZnVuY3Rpb24t
PmFwcGVuZEFyZ3VtZW50KGVudHJpZXMpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKK3Zv
aWQgSW5zcGVjdG9yRnJvbnRlbmQ6OmRpZFNldERPTVN0b3JhZ2VJdGVtKGludCBjYWxsSWQsIGJv
b2wgc3VjY2VzcykKK3sKKyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihu
ZXdGdW5jdGlvbkNhbGwoImRpZFNldERPTVN0b3JhZ2VJdGVtIikpOworICAgIGZ1bmN0aW9uLT5h
cHBlbmRBcmd1bWVudChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChzdWNj
ZXNzKTsKKyAgICBmdW5jdGlvbi0+Y2FsbCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5k
OjpkaWRSZW1vdmVET01TdG9yYWdlSXRlbShpbnQgY2FsbElkLCBib29sIHN1Y2Nlc3MpCit7Cisg
ICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJk
aWRSZW1vdmVET01TdG9yYWdlSXRlbSIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQo
Y2FsbElkKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoc3VjY2Vzcyk7CisgICAgZnVu
Y3Rpb24tPmNhbGwoKTsKK30KKwordm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6dXBkYXRlRE9NU3Rv
cmFnZShpbnQgc3RvcmFnZUlkKQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1
bmN0aW9uKG5ld0Z1bmN0aW9uQ2FsbCgidXBkYXRlRE9NU3RvcmFnZSIpKTsKKyAgICBmdW5jdGlv
bi0+YXBwZW5kQXJndW1lbnQoc3RvcmFnZUlkKTsKICAgICBmdW5jdGlvbi0+Y2FsbCgpOwogfQog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
IGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaAppbmRleCA0Mjc2OGU2Li5m
OWQzYmExIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kLmgKQEAgLTk5LDcgKzk5
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgCiAjaWYgRU5BQkxFKERPTV9TVE9S
QUdFKQogICAgICAgICBib29sIGFkZERPTVN0b3JhZ2UoY29uc3QgU2NyaXB0T2JqZWN0JiBkb21T
dG9yYWdlT2JqKTsKLSAgICAgICAgdm9pZCBzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3Jh
Z2UpOworICAgICAgICB2b2lkIHNlbGVjdERPTVN0b3JhZ2UoaW50IHN0b3JhZ2VJZCk7CisgICAg
ICAgIHZvaWQgZGlkR2V0RE9NU3RvcmFnZUVudHJpZXMoaW50IGNhbGxJZCwgY29uc3QgU2NyaXB0
QXJyYXkmIGVudHJpZXMpOworICAgICAgICB2b2lkIGRpZFNldERPTVN0b3JhZ2VJdGVtKGludCBj
YWxsSWQsIGJvb2wgc3VjY2Vzcyk7CisgICAgICAgIHZvaWQgZGlkUmVtb3ZlRE9NU3RvcmFnZUl0
ZW0oaW50IGNhbGxJZCwgYm9vbCBzdWNjZXNzKTsKKyAgICAgICAgdm9pZCB1cGRhdGVET01TdG9y
YWdlKGludCBzdG9yYWdlSWQpOwogI2VuZGlmCiAKICAgICAgICAgdm9pZCBzZXREb2N1bWVudChj
b25zdCBTY3JpcHRPYmplY3QmIHJvb3QpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9N
U3RvcmFnZS5qcwppbmRleCA1MjA3YjY5Li43ZDQzODM1IDEwMDY0NAotLS0gYS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRE9NU3RvcmFnZS5qcwpAQCAtMjYsMjQgKzI2LDIyIEBACiAgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlID0gZnVuY3Rpb24oZG9tU3RvcmFnZSwgZG9t
YWluLCBpc0xvY2FsU3RvcmFnZSkKK1dlYkluc3BlY3Rvci5ET01TdG9yYWdlID0gZnVuY3Rpb24o
aWQsIGRvbWFpbiwgaXNMb2NhbFN0b3JhZ2UpCiB7Ci0gICAgdGhpcy5kb21TdG9yYWdlID0gZG9t
U3RvcmFnZTsKLSAgICB0aGlzLmRvbWFpbiA9IGRvbWFpbjsKLSAgICB0aGlzLmlzTG9jYWxTdG9y
YWdlID0gaXNMb2NhbFN0b3JhZ2U7CisgICAgdGhpcy5faWQgPSBpZDsKKyAgICB0aGlzLl9kb21h
aW4gPSBkb21haW47CisgICAgdGhpcy5faXNMb2NhbFN0b3JhZ2UgPSBpc0xvY2FsU3RvcmFnZTsK
IH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlID0gewotICAgIGdldCBkb21T
dG9yYWdlKCkKKyAgICBnZXQgaWQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVN0
b3JhZ2U7CisgICAgICAgIHJldHVybiB0aGlzLl9pZDsKICAgICB9LAogCi0gICAgc2V0IGRvbVN0
b3JhZ2UoeCkKKyAgICBnZXQgZG9tU3RvcmFnZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5f
ZG9tU3RvcmFnZSA9PT0geCkKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgdGhpcy5fZG9t
U3RvcmFnZSA9IHg7CisgICAgICAgIHJldHVybiB0aGlzLl9kb21TdG9yYWdlOwogICAgIH0sCiAK
ICAgICBnZXQgZG9tYWluKCkKQEAgLTUxLDIyICs0OSwzMCBAQCBXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21haW47CiAgICAgfSwK
IAotICAgIHNldCBkb21haW4oeCkKKyAgICBnZXQgaXNMb2NhbFN0b3JhZ2UoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxTdG9yYWdlOworICAgIH0sCisgICAgCisgICAgZ2V0
RW50cmllc0FzeW5jOiBmdW5jdGlvbihjYWxsYmFjaykKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9kb21haW4gPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHRoaXMuX2RvbWFp
biA9IHg7CisgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChj
YWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xsZXIuZ2V0RE9NU3RvcmFnZUVudHJp
ZXMoY2FsbElkLCB0aGlzLl9pZCk7CiAgICAgfSwKICAgICAKLSAgICBnZXQgaXNMb2NhbFN0b3Jh
Z2UoKQorICAgIHNldEl0ZW1Bc3luYzogZnVuY3Rpb24oa2V5LCB2YWx1ZSwgY2FsbGJhY2spCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbFN0b3JhZ2U7CisgICAgICAgIHZhciBj
YWxsSWQgPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sud3JhcChjYWxsYmFjayk7CisgICAgICAgIElu
c3BlY3RvckNvbnRyb2xsZXIuc2V0RE9NU3RvcmFnZUl0ZW0oY2FsbElkLCB0aGlzLl9pZCwga2V5
LCB2YWx1ZSk7CiAgICAgfSwKICAgICAKLSAgICBzZXQgaXNMb2NhbFN0b3JhZ2UoeCkKKyAgICBy
ZW1vdmVJdGVtQXN5bmM6IGZ1bmN0aW9uKGtleSwgY2FsbGJhY2spCiAgICAgewotICAgICAgICBp
ZiAodGhpcy5faXNMb2NhbFN0b3JhZ2UgPT09IHgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHRoaXMuX2lzTG9jYWxTdG9yYWdlID0geDsKKyAgICAgICAgdmFyIGNhbGxJZCA9IFdlYklu
c3BlY3Rvci5DYWxsYmFjay53cmFwKGNhbGxiYWNrKTsKKyAgICAgICAgSW5zcGVjdG9yQ29udHJv
bGxlci5yZW1vdmVET01TdG9yYWdlSXRlbShjYWxsSWQsIHRoaXMuX2lkLCBrZXkpOwogICAgIH0K
IH0KKworV2ViSW5zcGVjdG9yLmRpZEdldERPTVN0b3JhZ2VFbnRyaWVzID0gV2ViSW5zcGVjdG9y
LkNhbGxiYWNrLnByb2Nlc3NDYWxsYmFjazsKK1dlYkluc3BlY3Rvci5kaWRTZXRET01TdG9yYWdl
SXRlbSA9IFdlYkluc3BlY3Rvci5DYWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CitXZWJJbnNwZWN0
b3IuZGlkUmVtb3ZlRE9NU3RvcmFnZUl0ZW0gPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vz
c0NhbGxiYWNrOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0
b3JhZ2VEYXRhR3JpZC5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdl
RGF0YUdyaWQuanMKaW5kZXggZWZkZDA5MC4uMTVmMWIwOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VEYXRhR3JpZC5qcworKysgYi9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZURhdGFHcmlkLmpzCkBAIC0yMywxMCArMjMsMTIg
QEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3Jp
ZCA9IGZ1bmN0aW9uKGNvbHVtbnMpCitXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkID0g
ZnVuY3Rpb24oY29sdW1ucywgZG9tU3RvcmFnZSwga2V5cykKIHsKICAgICBXZWJJbnNwZWN0b3Iu
RGF0YUdyaWQuY2FsbCh0aGlzLCBjb2x1bW5zKTsKICAgICB0aGlzLmRhdGFUYWJsZUJvZHkuYWRk
RXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLl9vbmRibGNsaWNrLmJpbmQodGhpcyksIGZh
bHNlKTsKKyAgICB0aGlzLl9kb21TdG9yYWdlID0gZG9tU3RvcmFnZTsKKyAgICB0aGlzLl9rZXlz
ID0ga2V5czsKIH0KIAogV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZC5wcm90b3R5cGUg
PSB7CkBAIC00NCw3ICs0Niw2IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQucHJv
dG90eXBlID0gewogICAgICAgICB0aGlzLl9lZGl0aW5nID0gdHJ1ZTsKICAgICAgICAgdGhpcy5f
ZWRpdGluZ05vZGUgPSBub2RlOwogICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZS5zZWxlY3QoKTsK
LSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLl91bnJlZ2lzdGVyU3RvcmFnZUV2
ZW50TGlzdGVuZXIoKTsKIAogICAgICAgICB2YXIgZWxlbWVudCA9IHRoaXMuX2VkaXRpbmdOb2Rl
Ll9lbGVtZW50LmNoaWxkcmVuW2NvbHVtbl07CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVk
aXRpbmcoZWxlbWVudCwgdGhpcy5fZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9l
ZGl0aW5nQ2FuY2VsbGVkLmJpbmQodGhpcyksIGVsZW1lbnQudGV4dENvbnRlbnQpOwpAQCAtNjks
NyArNzAsNiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHJldHVybiB0aGlzLl9zdGFydEVkaXRpbmdDb2x1bW5PZkRhdGFHcmlkTm9k
ZSh0aGlzLl9lZGl0aW5nTm9kZSwgMCk7CiAKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7
Ci0gICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5fdW5yZWdpc3RlclN0b3JhZ2VF
dmVudExpc3RlbmVyKCk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcoZWxlbWVu
dCwgdGhpcy5fZWRpdGluZ0NvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLl9lZGl0aW5nQ2FuY2Vs
bGVkLmJpbmQodGhpcyksIGVsZW1lbnQudGV4dENvbnRlbnQpOwogICAgICAgICB3aW5kb3cuZ2V0
U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChlbGVtZW50LCAwLCBlbGVtZW50LCAxKTsKICAg
ICB9LApAQCAtMTE4LDIyICsxMTgsMjAgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3Jp
ZC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICB2YXIgZG9tU3RvcmFnZSA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS52aXNpYmxlVmll
dy5kb21TdG9yYWdlLmRvbVN0b3JhZ2U7Ci0gICAgICAgIGlmIChkb21TdG9yYWdlKSB7Ci0gICAg
ICAgICAgICBpZiAoY29sdW1uSWRlbnRpZmllciA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KGRvbVN0b3JhZ2UuZ2V0SXRlbShuZXdUZXh0KSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzBdOwotICAg
ICAgICAgICAgICAgICAgICB0aGlzLl9lZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQpOwotICAgICAg
ICAgICAgICAgICAgICBtb3ZlVG9OZXh0SWZOZWVkZWQuY2FsbCh0aGlzLCBmYWxzZSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg
ICAgZG9tU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMF0pOwotICAg
ICAgICAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbShuZXdUZXh0LCB0aGlzLl9lZGl0aW5nTm9k
ZS5kYXRhWzFdKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzBdID0g
bmV3VGV4dDsgICAgICAgICAgICAKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg
ICAgZG9tU3RvcmFnZS5zZXRJdGVtKHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMF0sIG5ld1RleHQp
OwotICAgICAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMV0gPSBuZXdUZXh0Owor
ICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2U7CisgICAgICAgIGlmIChj
b2x1bW5JZGVudGlmaWVyID09IDApIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9rZXlzLmluZGV4
T2YobmV3VGV4dCkgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBlbGVtZW50LnRleHRDb250ZW50
ID0gdGhpcy5fZWRpdGluZ05vZGUuZGF0YVswXTsKKyAgICAgICAgICAgICAgICB0aGlzLl9lZGl0
aW5nQ2FuY2VsbGVkKGVsZW1lbnQpOworICAgICAgICAgICAgICAgIG1vdmVUb05leHRJZk5lZWRl
ZC5jYWxsKHRoaXMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CisgICAgICAgICAgICBkb21TdG9yYWdlLnJlbW92ZUl0ZW1Bc3luYyh0aGlzLl9lZGl0aW5n
Tm9kZS5kYXRhWzBdKTsKKyAgICAgICAgICAgIGRvbVN0b3JhZ2Uuc2V0SXRlbUFzeW5jKG5ld1Rl
eHQsIHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMV0pOworICAgICAgICAgICAgdGhpcy5fZWRpdGlu
Z05vZGUuZGF0YVswXSA9IG5ld1RleHQ7ICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBkb21TdG9yYWdlLnNldEl0ZW1Bc3luYyh0aGlzLl9lZGl0aW5nTm9kZS5kYXRh
WzBdLCBuZXdUZXh0KTsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMV0gPSBu
ZXdUZXh0OwogICAgICAgICB9CiAKICAgICAgICAgaWYgKHRoaXMuX2VkaXRpbmdOb2RlLmlzQ3Jl
YXRpb25Ob2RlKQpAQCAtMTQ3LDE4ICsxNDUsMTYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VE
YXRhR3JpZC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBkZWxldGUgdGhpcy5fZWRpdGlu
ZzsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUgPSBudWxsOwotICAgICAgICBXZWJJbnNwZWN0
b3IucGFuZWxzLnN0b3JhZ2UuX3JlZ2lzdGVyU3RvcmFnZUV2ZW50TGlzdGVuZXIoKTsKICAgICB9
LAogCiAgICAgZGVsZXRlU2VsZWN0ZWRSb3c6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciBub2RlID0gdGhpcy5zZWxlY3RlZE5vZGU7Ci0gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkTm9k
ZS5pc0NyZWF0aW9uTm9kZSkKKyAgICAgICAgaWYgKCFub2RlIHx8IG5vZGUuaXNDcmVhdGlvbk5v
ZGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UudmlzaWJsZVZpZXcuZG9tU3RvcmFnZS5kb21TdG9yYWdl
OwotICAgICAgICBpZiAobm9kZSAmJiBkb21TdG9yYWdlKQotICAgICAgICAgICAgZG9tU3RvcmFn
ZS5yZW1vdmVJdGVtKG5vZGUuZGF0YVswXSk7CisgICAgICAgIGlmICh0aGlzLl9kb21TdG9yYWdl
KQorICAgICAgICAgICAgdGhpcy5fZG9tU3RvcmFnZS5yZW1vdmVJdGVtQXN5bmMobm9kZS5kYXRh
WzBdKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RP
TVN0b3JhZ2VJdGVtc1ZpZXcuanMKaW5kZXggODYxN2Q2MC4uY2IyYzdmMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKKysrIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VJdGVtc1ZpZXcuanMKQEAgLTYx
LDMxICs2MSwyNiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUg
PSB7CiAgICAgdXBkYXRlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLmVsZW1lbnQu
cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICAgICAgdmFyIGhhc0RPTVN0b3JhZ2UgPSB0aGlzLmRvbVN0
b3JhZ2U7Ci0gICAgICAgIGlmIChoYXNET01TdG9yYWdlKQotICAgICAgICAgICAgaGFzRE9NU3Rv
cmFnZSA9IHRoaXMuZG9tU3RvcmFnZS5kb21TdG9yYWdlOwotCi0gICAgICAgIGlmIChoYXNET01T
dG9yYWdlKSB7Ci0gICAgICAgICAgICB2YXIgZGF0YUdyaWQgPSBXZWJJbnNwZWN0b3IucGFuZWxz
LnN0b3JhZ2UuZGF0YUdyaWRGb3JET01TdG9yYWdlKHRoaXMuZG9tU3RvcmFnZS5kb21TdG9yYWdl
KTsKLSAgICAgICAgICAgIGlmICghZGF0YUdyaWQpCi0gICAgICAgICAgICAgICAgaGFzRE9NU3Rv
cmFnZSA9IDA7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZCA9IGRhdGFHcmlkOwotICAgICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGls
ZChkYXRhR3JpZC5lbGVtZW50KTsKLSAgICAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRh
dGVXaWR0aHMoKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUJ1dHRvbi52aXNpYmxlID0g
dHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmICghaGFzRE9NU3Rv
cmFnZSkgeworICAgICAgICB2YXIgY2FsbGJhY2sgPSB0aGlzLl9zaG93RE9NU3RvcmFnZUVudHJp
ZXMuYmluZCh0aGlzKTsKKyAgICAgICAgdGhpcy5kb21TdG9yYWdlLmdldEVudHJpZXNBc3luYyhj
YWxsYmFjayk7CisgICAgfSwKKyAgICAKKyAgICBfc2hvd0RPTVN0b3JhZ2VFbnRyaWVzOiBmdW5j
dGlvbihlbnRyaWVzKSAKKyAgICB7CisgICAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA+IDApIHsK
KyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gdGhpcy5fZGF0YUdyaWRGb3JET01TdG9yYWdl
RW50cmllcyhlbnRyaWVzKTsKKyAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZCh0
aGlzLl9kYXRhR3JpZC5lbGVtZW50KTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0
ZVdpZHRocygpOworICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7
ICAgICAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFyIGVtcHR5
TXNnRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICAgICAg
ZW1wdHlNc2dFbGVtZW50LmNsYXNzTmFtZSA9ICJzdG9yYWdlLXRhYmxlLWVtcHR5IjsKICAgICAg
ICAgICAgIGlmICh0aGlzLmRvbVN0b3JhZ2UpCi0gICAgICAgICAgICBlbXB0eU1zZ0VsZW1lbnQu
dGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgc3RvcmFnZSBpcyBlbXB0
eS4iKTsKKyAgICAgICAgICAgICAgICBlbXB0eU1zZ0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJ
bnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgc3RvcmFnZSBpcyBlbXB0eS4iKTsKICAgICAgICAgICAg
IHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChlbXB0eU1zZ0VsZW1lbnQpOwogICAgICAgICAgICAg
dGhpcy5fZGF0YUdyaWQgPSBudWxsOwogICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlz
aWJsZSA9IGZhbHNlOwotICAgICAgICB9CisgICAgICAgIH0gICAgICAgIAogICAgIH0sCiAgICAg
CiAgICAgcmVzaXplOiBmdW5jdGlvbigpCkBAIC05Myw2ICs4OCw2MCBAQCBXZWJJbnNwZWN0b3Iu
RE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGlmICh0aGlzLl9kYXRh
R3JpZCkKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZVdpZHRocygpOwogICAgIH0s
CisgICAgCisgICAgX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXM6IGZ1bmN0aW9uKGVudHJp
ZXMpCisgICAgeworICAgICAgICB2YXIgY29sdW1ucyA9IHt9OworICAgICAgICBjb2x1bW5zWzBd
ID0ge307CisgICAgICAgIGNvbHVtbnNbMV0gPSB7fTsKKyAgICAgICAgY29sdW1uc1swXS50aXRs
ZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiS2V5Iik7CisgICAgICAgIGNvbHVtbnNbMF0ud2lk
dGggPSBjb2x1bW5zWzBdLnRpdGxlLmxlbmd0aDsKKyAgICAgICAgY29sdW1uc1sxXS50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiVmFsdWUiKTsKKyAgICAgICAgY29sdW1uc1sxXS53aWR0
aCA9IGNvbHVtbnNbMV0udGl0bGUubGVuZ3RoOworICAgICAgICAKKyAgICAgICAgdmFyIG5vZGVz
ID0gW107CisgICAgICAgIAorICAgICAgICB2YXIga2V5cyA9IFtdOworICAgICAgICB2YXIgbGVu
Z3RoID0gZW50cmllcy5sZW5ndGg7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXgg
PCBlbnRyaWVzLmxlbmd0aDsgaW5kZXgrKykgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGtleSA9IGVudHJpZXNbaW5kZXhdWzBdOwor
ICAgICAgICAgICAgZGF0YVswXSA9IGtleTsKKyAgICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4g
Y29sdW1uc1swXS53aWR0aCkKKyAgICAgICAgICAgICAgICBjb2x1bW5zWzBdLndpZHRoID0ga2V5
Lmxlbmd0aDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHZhbHVlID0gZW50cmllc1tp
bmRleF1bMV07CisgICAgICAgICAgICBkYXRhWzFdID0gdmFsdWU7CisgICAgICAgICAgICBpZiAo
dmFsdWUubGVuZ3RoID4gY29sdW1uc1sxXS53aWR0aCkKKyAgICAgICAgICAgICAgICBjb2x1bW5z
WzFdLndpZHRoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7CisgICAgICAgICAgICBub2RlLnNl
bGVjdGFibGUgPSB0cnVlOworICAgICAgICAgICAgbm9kZXMucHVzaChub2RlKTsKKyAgICAgICAg
ICAgIGtleXMucHVzaChrZXkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YXIgdG90
YWxDb2x1bW5XaWR0aHMgPSBjb2x1bW5zWzBdLndpZHRoICsgY29sdW1uc1sxXS53aWR0aDsKKyAg
ICAgICAgdmFyIHdpZHRoID0gTWF0aC5yb3VuZCgoY29sdW1uc1swXS53aWR0aCAqIDEwMCkgLyB0
b3RhbENvbHVtbldpZHRocyk7CisgICAgICAgIGNvbnN0IG1pbmltdW1QcmVjZW50ID0gMTA7Cisg
ICAgICAgIGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50KQorICAgICAgICAgICAgd2lkdGggPSBt
aW5pbXVtUHJlY2VudDsKKyAgICAgICAgaWYgKHdpZHRoID4gMTAwIC0gbWluaW11bVByZWNlbnQp
CisgICAgICAgICAgICB3aWR0aCA9IDEwMCAtIG1pbmltdW1QcmVjZW50OworICAgICAgICBjb2x1
bW5zWzBdLndpZHRoID0gd2lkdGg7CisgICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSAxMDAgLSB3
aWR0aDsKKyAgICAgICAgY29sdW1uc1swXS53aWR0aCArPSAiJSI7CisgICAgICAgIGNvbHVtbnNb
MV0ud2lkdGggKz0gIiUiOworICAgICAgICAKKyAgICAgICAgdmFyIGRhdGFHcmlkID0gbmV3IFdl
Ykluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQoY29sdW1ucywgdGhpcy5kb21TdG9yYWdlLCBr
ZXlzKTsKKyAgICAgICAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDsKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENo
aWxkKG5vZGVzW2ldKTsKKyAgICAgICAgZGF0YUdyaWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsK
KyAgICAgICAgaWYgKGxlbmd0aCA+IDApCisgICAgICAgICAgICBub2Rlc1swXS5zZWxlY3RlZCA9
IHRydWU7CisgICAgICAgIHJldHVybiBkYXRhR3JpZDsKKyAgICB9LAogCiAgICAgX2RlbGV0ZUJ1
dHRvbkNsaWNrZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmluZGV4IGFlZDBkMDYuLjVlMGY0NWEgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdlUGFuZWwuanMKKysrIGIvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0b3JhZ2VQYW5lbC5qcwpAQCAtOTMsNyArOTMsNiBA
QCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5cGUuc2hvdy5jYWxsKHRoaXMpOwogICAgICAgICB0
aGlzLl91cGRhdGVTaWRlYmFyV2lkdGgoKTsKLSAgICAgICAgdGhpcy5fcmVnaXN0ZXJTdG9yYWdl
RXZlbnRMaXN0ZW5lcigpOwogICAgIH0sCiAKICAgICByZXNldDogZnVuY3Rpb24oKQpAQCAtMTEw
LDggKzEwOSw2IEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlID0gewogCiAg
ICAgICAgIHRoaXMuX2RhdGFiYXNlcyA9IFtdOwogCi0gICAgICAgIHRoaXMuX3VucmVnaXN0ZXJT
dG9yYWdlRXZlbnRMaXN0ZW5lcigpOwotCiAgICAgICAgIGlmICh0aGlzLl9kb21TdG9yYWdlKSB7
CiAgICAgICAgICAgICB2YXIgZG9tU3RvcmFnZUxlbmd0aCA9IHRoaXMuX2RvbVN0b3JhZ2UubGVu
Z3RoOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkb21TdG9yYWdlTGVuZ3RoOyAr
K2kpIHsKQEAgLTE3NCwxNiArMTcxLDEyIEBAIFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJv
dG90eXBlID0gewogICAgICAgICB9CiAgICAgfSwKIAotICAgIHNlbGVjdERPTVN0b3JhZ2U6IGZ1
bmN0aW9uKHMpCisgICAgc2VsZWN0RE9NU3RvcmFnZTogZnVuY3Rpb24oc3RvcmFnZUlkKQogICAg
IHsKLSAgICAgICAgdmFyIGlzTG9jYWxTdG9yYWdlID0gKHMgPT09IEluc3BlY3RvckNvbnRyb2xs
ZXIuaW5zcGVjdGVkV2luZG93KCkubG9jYWxTdG9yYWdlKTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDAsIGxlbiA9IHRoaXMuX2RvbVN0b3JhZ2UubGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKLSAgICAg
ICAgICAgIHZhciBzdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZVtpXTsKLSAgICAgICAgICAgIGlm
ICggaXNMb2NhbFN0b3JhZ2UgPT09IHN0b3JhZ2UuaXNMb2NhbFN0b3JhZ2UgKSB7Ci0gICAgICAg
ICAgICAgICAgdGhpcy5zaG93RE9NU3RvcmFnZShzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBz
dG9yYWdlLl9kb21TdG9yYWdlVHJlZUVsZW1lbnQuc2VsZWN0KCk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2Rv
bVN0b3JhZ2VGb3JJZChzdG9yYWdlSWQpOworICAgICAgICBpZiAoZG9tU3RvcmFnZSkgeworICAg
ICAgICAgICAgdGhpcy5zaG93RE9NU3RvcmFnZShkb21TdG9yYWdlKTsKKyAgICAgICAgICAgIGRv
bVN0b3JhZ2UuX2RvbVN0b3JhZ2VUcmVlRWxlbWVudC5zZWxlY3QoKTsKICAgICAgICAgfQogICAg
IH0sCiAKQEAgLTM4MywxMDYgKzM3NiwzNiBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIGRhdGFHcmlkOwogICAgIH0sCiAKLSAgICBkYXRh
R3JpZEZvckRPTVN0b3JhZ2U6IGZ1bmN0aW9uKGRvbVN0b3JhZ2UpCi0gICAgewotICAgICAgICBp
ZiAoIWRvbVN0b3JhZ2UubGVuZ3RoKQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0KLSAgICAg
ICAgdmFyIGNvbHVtbnMgPSB7fTsKLSAgICAgICAgY29sdW1uc1swXSA9IHt9OwotICAgICAgICBj
b2x1bW5zWzFdID0ge307Ci0gICAgICAgIGNvbHVtbnNbMF0udGl0bGUgPSBXZWJJbnNwZWN0b3Iu
VUlTdHJpbmcoIktleSIpOwotICAgICAgICBjb2x1bW5zWzBdLndpZHRoID0gY29sdW1uc1swXS50
aXRsZS5sZW5ndGg7Ci0gICAgICAgIGNvbHVtbnNbMV0udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlT
dHJpbmcoIlZhbHVlIik7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSBjb2x1bW5zWzFdLnRp
dGxlLmxlbmd0aDsKLQotICAgICAgICB2YXIgbm9kZXMgPSBbXTsKLSAgICAgICAgCi0gICAgICAg
IHZhciBsZW5ndGggPSBkb21TdG9yYWdlLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaW5kZXgg
PSAwOyBpbmRleCA8IGRvbVN0b3JhZ2UubGVuZ3RoOyBpbmRleCsrKSB7Ci0gICAgICAgICAgICB2
YXIgZGF0YSA9IHt9OwotICAgICAgIAotICAgICAgICAgICAgdmFyIGtleSA9IFN0cmluZyhkb21T
dG9yYWdlLmtleShpbmRleCkpOwotICAgICAgICAgICAgZGF0YVswXSA9IGtleTsKLSAgICAgICAg
ICAgIGlmIChrZXkubGVuZ3RoID4gY29sdW1uc1swXS53aWR0aCkKLSAgICAgICAgICAgICAgICBj
b2x1bW5zWzBdLndpZHRoID0ga2V5Lmxlbmd0aDsKLSAgICAgICAgCi0gICAgICAgICAgICB2YXIg
dmFsdWUgPSBTdHJpbmcoZG9tU3RvcmFnZS5nZXRJdGVtKGtleSkpOwotICAgICAgICAgICAgZGF0
YVsxXSA9IHZhbHVlOwotICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IGNvbHVtbnNbMV0u
d2lkdGgpCi0gICAgICAgICAgICAgICAgY29sdW1uc1sxXS53aWR0aCA9IHZhbHVlLmxlbmd0aDsK
LSAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdlYkluc3BlY3Rvci5EYXRhR3JpZE5vZGUoZGF0
YSwgZmFsc2UpOwotICAgICAgICAgICAgbm9kZS5zZWxlY3RhYmxlID0gdHJ1ZTsKLSAgICAgICAg
ICAgIG5vZGVzLnB1c2gobm9kZSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2YXIgdG90YWxDb2x1
bW5XaWR0aHMgPSBjb2x1bW5zWzBdLndpZHRoICsgY29sdW1uc1sxXS53aWR0aDsKLSAgICAgICAg
dmFyIHdpZHRoID0gTWF0aC5yb3VuZCgoY29sdW1uc1swXS53aWR0aCAqIDEwMCkgLyB0b3RhbENv
bHVtbldpZHRocyk7Ci0gICAgICAgIGNvbnN0IG1pbmltdW1QcmVjZW50ID0gMTA7Ci0gICAgICAg
IGlmICh3aWR0aCA8IG1pbmltdW1QcmVjZW50KQotICAgICAgICAgICAgd2lkdGggPSBtaW5pbXVt
UHJlY2VudDsKLSAgICAgICAgaWYgKHdpZHRoID4gMTAwIC0gbWluaW11bVByZWNlbnQpCi0gICAg
ICAgICAgICB3aWR0aCA9IDEwMCAtIG1pbmltdW1QcmVjZW50OwotICAgICAgICBjb2x1bW5zWzBd
LndpZHRoID0gd2lkdGg7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lkdGggPSAxMDAgLSB3aWR0aDsK
LSAgICAgICAgY29sdW1uc1swXS53aWR0aCArPSAiJSI7Ci0gICAgICAgIGNvbHVtbnNbMV0ud2lk
dGggKz0gIiUiOwotCi0gICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXZWJJbnNwZWN0b3IuRE9N
U3RvcmFnZURhdGFHcmlkKGNvbHVtbnMpOwotICAgICAgICB2YXIgbGVuZ3RoID0gbm9kZXMubGVu
Z3RoOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQotICAgICAgICAg
ICAgZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZXNbaV0pOwotICAgICAgICBkYXRhR3JpZC5hZGRD
cmVhdGlvbk5vZGUoZmFsc2UpOwotICAgICAgICBpZiAobGVuZ3RoID4gMCkKLSAgICAgICAgICAg
IG5vZGVzWzBdLnNlbGVjdGVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIGRhdGFHcmlkOwotICAg
IH0sCi0KICAgICByZXNpemU6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciB2aXNpYmxl
VmlldyA9IHRoaXMudmlzaWJsZVZpZXc7CiAgICAgICAgIGlmICh2aXNpYmxlVmlldyAmJiAicmVz
aXplIiBpbiB2aXNpYmxlVmlldykKICAgICAgICAgICAgIHZpc2libGVWaWV3LnJlc2l6ZSgpOwog
ICAgIH0sCi0KLSAgICBfcmVnaXN0ZXJTdG9yYWdlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKQor
ICAgIAorICAgIHVwZGF0ZURPTVN0b3JhZ2U6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKICAgICB7Ci0g
ICAgICAgIHZhciBpbnNwZWN0ZWRXaW5kb3cgPSBJbnNwZWN0b3JDb250cm9sbGVyLmluc3BlY3Rl
ZFdpbmRvdygpOwotICAgICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdyB8fCAhaW5zcGVjdGVkV2lu
ZG93LmRvY3VtZW50KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3N0b3Jh
Z2VFdmVudExpc3RlbmVyID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5f
c3RvcmFnZUV2ZW50LmJpbmQodGhpcykpOwotICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcigic3RvcmFnZSIsIHRoaXMuX3N0b3JhZ2VFdmVudExpc3RlbmVyLCB0cnVlKTsK
LSAgICB9LAotCi0gICAgX3VucmVnaXN0ZXJTdG9yYWdlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9zdG9yYWdlRXZlbnRMaXN0ZW5lcikKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgaW5zcGVjdGVkV2luZG93ID0gSW5zcGVjdG9y
Q29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKTsKLSAgICAgICAgaWYgKCFpbnNwZWN0ZWRXaW5k
b3cgfHwgIWluc3BlY3RlZFdpbmRvdy5kb2N1bWVudCkKKyAgICAgICAgdmFyIGRvbVN0b3JhZ2Ug
PSB0aGlzLl9kb21TdG9yYWdlRm9ySWQoc3RvcmFnZUlkKTsKKyAgICAgICAgaWYgKCFkb21TdG9y
YWdlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGluc3BlY3RlZFdpbmRvdy5yZW1v
dmVFdmVudExpc3RlbmVyKCJzdG9yYWdlIiwgdGhpcy5fc3RvcmFnZUV2ZW50TGlzdGVuZXIsIHRy
dWUpOwotICAgICAgICBkZWxldGUgdGhpcy5fc3RvcmFnZUV2ZW50TGlzdGVuZXI7CisgICAgICAg
IHZhciB2aWV3ID0gZG9tU3RvcmFnZS5fZG9tU3RvcmFnZVZpZXc7CisgICAgICAgIGlmICh0aGlz
LnZpc2libGVWaWV3ICYmIHZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCisgICAgICAgICAgICBk
b21TdG9yYWdlLl9kb21TdG9yYWdlVmlldy51cGRhdGUoKTsKICAgICB9LAogCi0gICAgX3N0b3Jh
Z2VFdmVudDogZnVuY3Rpb24oZXZlbnQpCisgICAgX2RvbVN0b3JhZ2VGb3JJZDogZnVuY3Rpb24o
c3RvcmFnZUlkKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9kb21TdG9yYWdlKQotICAgICAg
ICAgICAgcmV0dXJuOwotCi0gICAgICAgIHZhciBpc0xvY2FsU3RvcmFnZSA9IChldmVudC5zdG9y
YWdlQXJlYSA9PT0gSW5zcGVjdG9yQ29udHJvbGxlci5pbnNwZWN0ZWRXaW5kb3coKS5sb2NhbFN0
b3JhZ2UpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIHZhciBkb21TdG9yYWdl
TGVuZ3RoID0gdGhpcy5fZG9tU3RvcmFnZS5sZW5ndGg7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgZG9tU3RvcmFnZUxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgZG9tU3RvcmFn
ZSA9IHRoaXMuX2RvbVN0b3JhZ2VbaV07Ci0gICAgICAgICAgICBpZiAoaXNMb2NhbFN0b3JhZ2Ug
PT09IGRvbVN0b3JhZ2UuaXNMb2NhbFN0b3JhZ2UpIHsKLSAgICAgICAgICAgICAgICB2YXIgdmll
dyA9IGRvbVN0b3JhZ2UuX2RvbVN0b3JhZ2VWaWV3OwotICAgICAgICAgICAgICAgIGlmICh0aGlz
LnZpc2libGVWaWV3ICYmIHZpZXcgPT09IHRoaXMudmlzaWJsZVZpZXcpCi0gICAgICAgICAgICAg
ICAgICAgIGRvbVN0b3JhZ2UuX2RvbVN0b3JhZ2VWaWV3LnVwZGF0ZSgpOworICAgICAgICAgICAg
aWYgKGRvbVN0b3JhZ2UuaWQgPT0gc3RvcmFnZUlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGRvbVN0b3JhZ2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51
bGw7CiAgICAgfSwKIAogICAgIF9zdGFydFNpZGViYXJEcmFnZ2luZzogZnVuY3Rpb24oZXZlbnQp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzIGIv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRleCAwNDdhMzc4Li5j
M2JhMThiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTEw
MDksMTIgKzEwMDksMTcgQEAgV2ViSW5zcGVjdG9yLmFkZERhdGFiYXNlID0gZnVuY3Rpb24ocGF5
bG9hZCkKIFdlYkluc3BlY3Rvci5hZGRET01TdG9yYWdlID0gZnVuY3Rpb24ocGF5bG9hZCkKIHsK
ICAgICB2YXIgZG9tU3RvcmFnZSA9IG5ldyBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZSgKLSAgICAg
ICAgcGF5bG9hZC5kb21TdG9yYWdlLAorICAgICAgICBwYXlsb2FkLmlkLAogICAgICAgICBwYXls
b2FkLmhvc3QsCiAgICAgICAgIHBheWxvYWQuaXNMb2NhbFN0b3JhZ2UpOwogICAgIHRoaXMucGFu
ZWxzLnN0b3JhZ2UuYWRkRE9NU3RvcmFnZShkb21TdG9yYWdlKTsKIH0KIAorV2ViSW5zcGVjdG9y
LnVwZGF0ZURPTVN0b3JhZ2UgPSBmdW5jdGlvbihzdG9yYWdlSWQpCit7CisgICAgdGhpcy5wYW5l
bHMuc3RvcmFnZS51cGRhdGVET01TdG9yYWdlKHN0b3JhZ2VJZCk7Cit9CisKIFdlYkluc3BlY3Rv
ci5yZXNvdXJjZVRyYWNraW5nV2FzRW5hYmxlZCA9IGZ1bmN0aW9uKCkKIHsKICAgICB0aGlzLnBh
bmVscy5yZXNvdXJjZXMucmVzb3VyY2VUcmFja2luZ1dhc0VuYWJsZWQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39754</attachid>
            <date>2009-09-18 02:41:07 -0700</date>
            <delta_ts>2009-09-21 00:56:41 -0700</delta_ts>
            <desc>patch: serialize dom storage access</desc>
            <filename>serialize-domstorage-access2.patch</filename>
            <type>text/plain</type>
            <size>37240</size>
            <attacher name="Yury Semikhatsky">yurys</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWUyNTMwNC4uZjJiMDgwYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw3OSBAQAorMjAwOS0wOS0xOCAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCisKKyAgICAgICAgV2ViSW5zcGVjdG9yOiBNaWdyYXRlIERhdGFiYXNlcyB0YWIg
dG8gSW5qZWN0ZWRTY3JpcHQgLworICAgICAgICBzZXJpYWxpemVkIGludGVyYWN0aW9uLgorCisg
ICAgICAgIERPTVN0b3JhZ2UgaW50ZXJhY3Rpb24gaXMgbm93IHNlcmlhbGl6ZWQgaW50byBKU09O
IG1lc3NhZ2VzCisgICAgICAgIGFuZCBkb2Vzbid0IHJlcXVpcmUgcXVhcmFudGluZWQgb2JqZWN0
cy4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yODg3MworCisgICAgICAgICogZG9tL0V2ZW50TGlzdGVuZXIuaDoKKyAgICAgICAgKFdl
YkNvcmU6OkV2ZW50TGlzdGVuZXI6Oik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJh
Y2tlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZDo6c2VsZWN0RE9N
U3RvcmFnZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpnZXRET01TdG9y
YWdlRW50cmllcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpzZXRET01T
dG9yYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kOjpyZW1vdmVE
T01TdG9yYWdlSXRlbSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGw6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JDb250cm9sbGVyOjpzZWxlY3RET01TdG9yYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3JhZ2VFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNvbnRyb2xsZXI6OnNldERPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OnJlbW92ZURPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3JhZ2VSZXNvdXJjZUZvcklk
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpJbnNwZWN0b3JET01TdG9yYWdlUmVz
b3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpi
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6dW5i
aW5kKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6c3Rh
cnRSZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2U6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpjYXN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6aWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjpkb21TdG9yYWdlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OnNlbGVjdERPTVN0b3JhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmQ6
OmRpZEdldERPTVN0b3JhZ2VFbnRyaWVzKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckZy
b250ZW5kOjpkaWRTZXRET01TdG9yYWdlSXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JGcm9udGVuZDo6ZGlkUmVtb3ZlRE9NU3RvcmFnZUl0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmQ6OnVwZGF0ZURPTVN0b3JhZ2UpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JGcm9udGVuZC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9N
U3RvcmFnZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZS5nZXQgaWQpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLmdldCBkb21TdG9yYWdlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZS5nZXQgaXNMb2NhbFN0b3JhZ2UpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UucHJvdG90eXBlLmdldEVudHJpZXNBc3lu
Yyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUuc2V0SXRlbUFz
eW5jKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5ET01TdG9yYWdlLnByb3RvdHlwZS5yZW1vdmVJ
dGVtQXN5bmMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZURhdGFH
cmlkLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3RvdHlwZS5fc3RhcnRFZGl0
aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3Jh
Z2VEYXRhR3JpZC5wcm90b3R5cGUuX3N0YXJ0RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3RvdHlwZS5fZWRpdGluZ0NvbW1pdHRlZCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3RvdHlwZS5fZWRpdGluZ0Nh
bmNlbGxlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3Rv
dHlwZS5kZWxldGVTZWxlY3RlZFJvdyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01TdG9yYWdlSXRlbXNWaWV3LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJ
dGVtc1ZpZXcucHJvdG90eXBlLnVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRE9NU3Rv
cmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX3Nob3dET01TdG9yYWdlRW50cmllcyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZUl0ZW1zVmlldy5wcm90b3R5cGUuX2RhdGFHcmlkRm9y
RE9NU3RvcmFnZUVudHJpZXMpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFn
ZVBhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUu
c2hvdyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5yZXNl
dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVsLnByb3RvdHlwZS5zZWxlY3RE
T01TdG9yYWdlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBl
LnVwZGF0ZURPTVN0b3JhZ2UpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5w
cm90b3R5cGUuX2RvbVN0b3JhZ2VGb3JJZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuYWRkRE9NU3RvcmFnZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IudXBkYXRlRE9NU3RvcmFnZSk6CisKIDIwMDktMDktMTcgIFNh
bSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQ
ZXRlcnNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL0V2ZW50TGlzdGVuZXIuaCBiL1dlYkNv
cmUvZG9tL0V2ZW50TGlzdGVuZXIuaAppbmRleCA1MDFjNjFkLi43ZDNhYzk4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9FdmVudExpc3RlbmVyLmgKKysrIGIvV2ViQ29yZS9kb20vRXZlbnRMaXN0
ZW5lci5oCkBAIC0zNyw3ICszNyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwdWJsaWM6
CiAgICAgICAgIGVudW0gVHlwZSB7IEpTRXZlbnRMaXN0ZW5lclR5cGUsIAogICAgICAgICAgICAg
ICAgICAgICBJbWFnZUV2ZW50TGlzdGVuZXJUeXBlLCAKLSAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yRE9NQWdlbnRUeXBlLCAKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yRE9NQWdl
bnRUeXBlLAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2VU
eXBlLAogICAgICAgICAgICAgICAgICAgICBPYmpDRXZlbnRMaXN0ZW5lclR5cGUsIAogICAgICAg
ICAgICAgICAgICAgICBDb25kaXRpb25FdmVudExpc3RlbmVyVHlwZSB9OwogICAgICAgICAgICAg
ICAgICAgICAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmQu
Y3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKaW5kZXggMjUwMzRm
YS4uYzE0MGIxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2Vu
ZC5jcHAKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5jcHAKQEAgLTUw
Miw4ICs1MDIsMjYgQEAgdm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpzZWxlY3REYXRhYmFzZShEYXRh
YmFzZSogZGF0YWJhc2UpCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogdm9pZCBJbnNwZWN0b3JC
YWNrZW5kOjpzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3JhZ2UpCiB7Ci0gICAgaWYgKElu
c3BlY3RvckZyb250ZW5kKiBmcm9udGVuZCA9IGluc3BlY3RvckZyb250ZW5kKCkpCi0gICAgICAg
IGZyb250ZW5kLT5zZWxlY3RET01TdG9yYWdlKHN0b3JhZ2UpOworICAgIGlmIChtX2luc3BlY3Rv
ckNvbnRyb2xsZXIpCisgICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+c2VsZWN0RE9NU3Rv
cmFnZShzdG9yYWdlKTsKK30KKwordm9pZCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRET01TdG9yYWdl
RW50cmllcyhsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQpCit7CisgICAgaWYgKG1faW5zcGVj
dG9yQ29udHJvbGxlcikKKyAgICAgICAgbV9pbnNwZWN0b3JDb250cm9sbGVyLT5nZXRET01TdG9y
YWdlRW50cmllcyhjYWxsSWQsIHN0b3JhZ2VJZCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQmFja2Vu
ZDo6c2V0RE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKK3sKKyAgICBpZiAobV9pbnNwZWN0b3JD
b250cm9sbGVyKQorICAgICAgICBtX2luc3BlY3RvckNvbnRyb2xsZXItPnNldERPTVN0b3JhZ2VJ
dGVtKGNhbGxJZCwgc3RvcmFnZUlkLCBrZXksIHZhbHVlKTsKK30KKwordm9pZCBJbnNwZWN0b3JC
YWNrZW5kOjpyZW1vdmVET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQs
IGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIGlmIChtX2luc3BlY3RvckNvbnRyb2xsZXIpCisg
ICAgICAgIG1faW5zcGVjdG9yQ29udHJvbGxlci0+cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oY2FsbElk
LCBzdG9yYWdlSWQsIGtleSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5oIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZC5oCmluZGV4IDIyYjQ2YmYuLjAzOGFlMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckJhY2tlbmQuaAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JC
YWNrZW5kLmgKQEAgLTE1MSw2ICsxNTEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKICNpZiBFTkFCTEUo
RE9NX1NUT1JBR0UpCiAgICAgdm9pZCBzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3JhZ2Up
OworICAgIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMobG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFn
ZUlkKTsKKyAgICB2b2lkIHNldERPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3Jh
Z2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpOworICAgIHZvaWQg
cmVtb3ZlRE9NU3RvcmFnZUl0ZW0obG9uZyBjYWxsSWQsIGxvbmcgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmQuaWRsIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
QmFja2VuZC5pZGwKaW5kZXggNDU0MDAwMS4uMzk1ZTdmZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZC5pZGwKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQmFja2VuZC5pZGwKQEAgLTEyMSw2ICsxMjEsOSBAQCBtb2R1bGUgY29yZSB7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKEVOQUJMRV9ET01fU1RPUkFHRSkgJiYgRU5BQkxFX0RPTV9TVE9SQUdF
CiAgICAgICAgIFtDdXN0b21dIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShpbiBET01PYmplY3Qgc3Rv
cmFnZSk7CisgICAgICAgIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoaW4gbG9uZyBjYWxsSWQs
IGluIGxvbmcgc3RvcmFnZUlkKTsKKyAgICAgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShpbiBs
b25nIGNhbGxJZCwgaW4gbG9uZyBzdG9yYWdlSWQsIGluIERPTVN0cmluZyBrZXksIGluIERPTVN0
cmluZyB2YWx1ZSk7CisgICAgICAgIHZvaWQgcmVtb3ZlRE9NU3RvcmFnZUl0ZW0oaW4gbG9uZyBj
YWxsSWQsIGluIGxvbmcgc3RvcmFnZUlkLCBpbiBET01TdHJpbmcga2V5KTsKICNlbmRpZgogICAg
IH07CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IGM2
OWMzMjQuLmE0Yjc4MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNv
bnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIu
Y3BwCkBAIC03MzEsNiArNzMxLDkgQEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaWRDb21t
aXRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgICAgIG1fY3VycmVudFVzZXJJbml0
aWF0ZWRQcm9maWxlTnVtYmVyID0gMTsKICAgICAgICAgbV9uZXh0VXNlckluaXRpYXRlZFByb2Zp
bGVOdW1iZXIgPSAxOwogI2VuZGlmCisgICAgICAgIC8vIHJlc2V0U2NyaXB0T2JqZWN0cyBzaG91
bGQgYmUgY2FsbGVkIGJlZm9yZSBkYXRhYmFzZSBhbmQgRE9NIHN0b3JhZ2UKKyAgICAgICAgLy8g
cmVzb3VyY2VzIGFyZSBjbGVhcmVkIHNvIHRoYXQgaXQgaGFzIGEgY2hhbmNlIHRvIHVuYmluZCB0
aGVtLgorICAgICAgICByZXNldFNjcmlwdE9iamVjdHMoKTsKICNpZiBFTkFCTEUoREFUQUJBU0Up
CiAgICAgICAgIG1fZGF0YWJhc2VSZXNvdXJjZXMuY2xlYXIoKTsKICNlbmRpZgpAQCAtNzM5LDgg
Kzc0Miw2IEBAIHZvaWQgSW5zcGVjdG9yQ29udHJvbGxlcjo6ZGlkQ29tbWl0TG9hZChEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogI2VuZGlmCiAKICAgICAgICAgaWYgKG1fZnJvbnRlbmQpIHsKLSAg
ICAgICAgICAgIHJlc2V0U2NyaXB0T2JqZWN0cygpOwotCiAgICAgICAgICAgICBpZiAoIWxvYWRl
ci0+ZnJhbWVMb2FkZXIoKS0+aXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSkgewogICAgICAgICAg
ICAgICAgIEFTU0VSVChtX21haW5SZXNvdXJjZSAmJiBtX21haW5SZXNvdXJjZS0+aXNTYW1lTG9h
ZGVyKGxvYWRlcikpOwogICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGFkZCB0aGUgbWFpbiBy
ZXNvdXJjZSB1bnRpbCBpdHMgbG9hZCBpcyBjb21taXR0ZWQuIFRoaXMgaXMKQEAgLTExMDgsNiAr
MTEwOSw4OSBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpZFVzZURPTVN0b3JhZ2UoU3Rv
cmFnZUFyZWEqIHN0b3JhZ2VBcmVhLCBib29sIGlzTG9jYQogICAgIGlmIChtX2Zyb250ZW5kKQog
ICAgICAgICByZXNvdXJjZS0+YmluZChtX2Zyb250ZW5kLmdldCgpKTsKIH0KKwordm9pZCBJbnNw
ZWN0b3JDb250cm9sbGVyOjpzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2UqIHN0b3JhZ2UpCit7Cisg
ICAgQVNTRVJUKHN0b3JhZ2UpOworICAgIGlmICghbV9mcm9udGVuZCkKKyAgICAgICAgcmV0dXJu
OworCisgICAgRnJhbWUqIGZyYW1lID0gc3RvcmFnZS0+ZnJhbWUoKTsKKyAgICBib29sIGlzTG9j
YWxTdG9yYWdlID0gKGZyYW1lLT5kb21XaW5kb3coKS0+bG9jYWxTdG9yYWdlKCkgPT0gc3RvcmFn
ZSk7CisgICAgaW50IHN0b3JhZ2VSZXNvdXJjZUlkID0gMDsKKyAgICBET01TdG9yYWdlUmVzb3Vy
Y2VzU2V0OjppdGVyYXRvciBkb21TdG9yYWdlRW5kID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmVu
ZCgpOworICAgIGZvciAoRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3IgaXQgPSBtX2Rv
bVN0b3JhZ2VSZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytpdCkgewor
ICAgICAgICBpZiAoKCppdCktPmlzU2FtZUhvc3RBbmRUeXBlKGZyYW1lLCBpc0xvY2FsU3RvcmFn
ZSkpIHsKKyAgICAgICAgICAgIHN0b3JhZ2VSZXNvdXJjZUlkID0gKCppdCktPmlkKCk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RvcmFnZVJlc291cmNl
SWQpIHsKKyAgICAgICAgbV9mcm9udGVuZC0+c2VsZWN0RE9NU3RvcmFnZShzdG9yYWdlUmVzb3Vy
Y2VJZCk7CisgICAgfQorfQorCit2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmdldERPTVN0b3Jh
Z2VFbnRyaWVzKGludCBjYWxsSWQsIGludCBzdG9yYWdlSWQpCit7CisgICAgaWYgKCFtX2Zyb250
ZW5kKQorICAgICAgICByZXR1cm47CisKKyAgICBTY3JpcHRBcnJheSBqc29uQXJyYXkgPSBtX2Zy
b250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOworICAgIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJj
ZSogc3RvcmFnZVJlc291cmNlID0gZ2V0RE9NU3RvcmFnZVJlc291cmNlRm9ySWQoc3RvcmFnZUlk
KTsKKyAgICBpZiAoc3RvcmFnZVJlc291cmNlKSB7CisgICAgICAgIHN0b3JhZ2VSZXNvdXJjZS0+
c3RhcnRSZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZCgpOworICAgICAgICBTdG9yYWdlKiBkb21T
dG9yYWdlID0gc3RvcmFnZVJlc291cmNlLT5kb21TdG9yYWdlKCk7CisgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBkb21TdG9yYWdlLT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAg
ICBTdHJpbmcgbmFtZShkb21TdG9yYWdlLT5rZXkoaSkpOworICAgICAgICAgICAgU3RyaW5nIHZh
bHVlKGRvbVN0b3JhZ2UtPmdldEl0ZW0obmFtZSkpOworICAgICAgICAgICAgU2NyaXB0QXJyYXkg
ZW50cnkgPSBtX2Zyb250ZW5kLT5uZXdTY3JpcHRBcnJheSgpOworICAgICAgICAgICAgZW50cnku
c2V0KDAsIG5hbWUpOworICAgICAgICAgICAgZW50cnkuc2V0KDEsIHZhbHVlKTsKKyAgICAgICAg
ICAgIGpzb25BcnJheS5zZXQoaSwgZW50cnkpOworICAgICAgICB9CisgICAgfQorICAgIG1fZnJv
bnRlbmQtPmRpZEdldERPTVN0b3JhZ2VFbnRyaWVzKGNhbGxJZCwganNvbkFycmF5KTsKK30KKwor
dm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpzZXRET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwg
bG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQor
eworICAgIGlmICghbV9mcm9udGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBzdWNj
ZXNzID0gZmFsc2U7CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBzdG9yYWdlUmVz
b3VyY2UgPSBnZXRET01TdG9yYWdlUmVzb3VyY2VGb3JJZChzdG9yYWdlSWQpOworICAgIGlmIChz
dG9yYWdlUmVzb3VyY2UpIHsKKyAgICAgICAgRXhjZXB0aW9uQ29kZSBleGNlcHRpb24gPSAwOwor
ICAgICAgICBzdG9yYWdlUmVzb3VyY2UtPmRvbVN0b3JhZ2UoKS0+c2V0SXRlbShrZXksIHZhbHVl
LCBleGNlcHRpb24pOworICAgICAgICBzdWNjZXNzID0gKGV4Y2VwdGlvbiA9PSAwKTsKKyAgICB9
CisgICAgbV9mcm9udGVuZC0+ZGlkU2V0RE9NU3RvcmFnZUl0ZW0oY2FsbElkLCBzdWNjZXNzKTsK
K30KKwordm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpyZW1vdmVET01TdG9yYWdlSXRlbShsb25n
IGNhbGxJZCwgbG9uZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KQoreworICAgIGlmICgh
bV9mcm9udGVuZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7
CisgICAgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlKiBzdG9yYWdlUmVzb3VyY2UgPSBnZXRE
T01TdG9yYWdlUmVzb3VyY2VGb3JJZChzdG9yYWdlSWQpOworICAgIGlmIChzdG9yYWdlUmVzb3Vy
Y2UpIHsKKyAgICAgICAgc3RvcmFnZVJlc291cmNlLT5kb21TdG9yYWdlKCktPnJlbW92ZUl0ZW0o
a2V5KTsKKyAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgfQorICAgIG1fZnJvbnRlbmQtPmRp
ZFJlbW92ZURPTVN0b3JhZ2VJdGVtKGNhbGxJZCwgc3VjY2Vzcyk7Cit9CisKK0luc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZSogSW5zcGVjdG9yQ29udHJvbGxlcjo6Z2V0RE9NU3RvcmFnZVJlc291
cmNlRm9ySWQoaW50IHN0b3JhZ2VJZCkKK3sKKyAgICBET01TdG9yYWdlUmVzb3VyY2VzU2V0Ojpp
dGVyYXRvciBkb21TdG9yYWdlRW5kID0gbV9kb21TdG9yYWdlUmVzb3VyY2VzLmVuZCgpOworICAg
IGZvciAoRE9NU3RvcmFnZVJlc291cmNlc1NldDo6aXRlcmF0b3IgaXQgPSBtX2RvbVN0b3JhZ2VS
ZXNvdXJjZXMuYmVnaW4oKTsgaXQgIT0gZG9tU3RvcmFnZUVuZDsgKytpdCkgeworICAgICAgICBp
ZiAoKCppdCktPmlkKCkgPT0gc3RvcmFnZUlkKSB7CisgICAgICAgICAgICByZXR1cm4gaXQtPmdl
dCgpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiAwOworfQogI2VuZGlmCiAKIHZvaWQg
SW5zcGVjdG9yQ29udHJvbGxlcjo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmggYi9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggZjNlMjMwZS4uMjAy
OTVhYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaApAQCAtNzQsNiAr
NzQsNyBAQCBjbGFzcyBSZXNvdXJjZUVycm9yOwogY2xhc3MgU2NyaXB0Q2FsbFN0YWNrOwogY2xh
c3MgU2NyaXB0U3RyaW5nOwogY2xhc3MgU2hhcmVkQnVmZmVyOworY2xhc3MgU3RvcmFnZTsKIGNs
YXNzIFN0b3JhZ2VBcmVhOwogCiBjbGFzcyBDb25zb2xlTWVzc2FnZTsKQEAgLTIzMiw2ICsyMzMs
MTAgQEAgcHVibGljOgogI2VuZGlmCiAjaWYgRU5BQkxFKERPTV9TVE9SQUdFKQogICAgIHZvaWQg
ZGlkVXNlRE9NU3RvcmFnZShTdG9yYWdlQXJlYSogc3RvcmFnZUFyZWEsIGJvb2wgaXNMb2NhbFN0
b3JhZ2UsIEZyYW1lKiBmcmFtZSk7CisgICAgdm9pZCBzZWxlY3RET01TdG9yYWdlKFN0b3JhZ2Uq
IHN0b3JhZ2UpOworICAgIHZvaWQgZ2V0RE9NU3RvcmFnZUVudHJpZXMoaW50IGNhbGxJZCwgaW50
IHN0b3JhZ2VJZCk7CisgICAgdm9pZCBzZXRET01TdG9yYWdlSXRlbShsb25nIGNhbGxJZCwgbG9u
ZyBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKKyAg
ICB2b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKGxvbmcgY2FsbElkLCBsb25nIHN0b3JhZ2VJZCwg
Y29uc3QgU3RyaW5nJiBrZXkpOwogI2VuZGlmCiAKICAgICBjb25zdCBSZXNvdXJjZXNNYXAmIHJl
c291cmNlcygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb3VyY2VzOyB9CkBAIC0zMDEsNiArMzA2LDkg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHRvZ2dsZVJlY29yZEJ1dHRvbihib29sKTsKICAgICB2b2lk
IGVuYWJsZURlYnVnZ2VyRnJvbUZyb250ZW5kKGJvb2wgYWx3YXlzKTsKICNlbmRpZgorI2lmIEVO
QUJMRShET01fU1RPUkFHRSkKKyAgICBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UqIGdldERP
TVN0b3JhZ2VSZXNvdXJjZUZvcklkKGludCBzdG9yYWdlSWQpOworI2VuZGlmCiAKICAgICB2b2lk
IGZvY3VzTm9kZSgpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01TdG9yYWdlUmVzb3VyY2UuY3BwIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZVJlc291cmNlLmNwcAppbmRleCAyZjRhYTUzLi4xZDViODMwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UuY3BwCisrKyBiL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5jcHAKQEAgLTM1LDIxICsz
NSwyNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oIgogCiAjaW5j
bHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRnJh
bWUuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZC5oIgogI2luY2x1ZGUgIlNjcmlwdE9i
amVjdC5oIgotI2luY2x1ZGUgIlNjcmlwdE9iamVjdFF1YXJhbnRpbmUuaCIKICNpbmNsdWRlICJT
dG9yYWdlLmgiCisjaW5jbHVkZSAiU3RvcmFnZUV2ZW50LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBK
U0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAoraW50IEluc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZTo6c19uZXh0VW51c2VkSWQgPSAxOworCiBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2U6
Okluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZShTdG9yYWdlKiBkb21TdG9yYWdlLCBib29sIGlz
TG9jYWxTdG9yYWdlLCBGcmFtZSogZnJhbWUpCi0gICAgOiBtX2RvbVN0b3JhZ2UoZG9tU3RvcmFn
ZSkKKyAgICA6ICBFdmVudExpc3RlbmVyKEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZVR5cGUp
CisgICAgLCBtX2RvbVN0b3JhZ2UoZG9tU3RvcmFnZSkKICAgICAsIG1faXNMb2NhbFN0b3JhZ2Uo
aXNMb2NhbFN0b3JhZ2UpCiAgICAgLCBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9zY3JpcHRPYmpl
Y3RDcmVhdGVkKGZhbHNlKQorICAgICwgbV9mcm9udGVuZCgwKQorICAgICwgbV9pZChzX25leHRV
bnVzZWRJZCsrKQorICAgICwgbV9yZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZChmYWxzZSkKIHsK
IH0KIApAQCAtNjAsMjMgKzY2LDUwIEBAIGJvb2wgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNl
Ojppc1NhbWVIb3N0QW5kVHlwZShGcmFtZSogZnJhbWUsIGJvb2wgaXNMb2NhbFN0CiAKIHZvaWQg
SW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjpiaW5kKEluc3BlY3RvckZyb250ZW5kKiBmcm9u
dGVuZCkKIHsKLSAgICBpZiAobV9zY3JpcHRPYmplY3RDcmVhdGVkKQotICAgICAgICByZXR1cm47
CisgICAgQVNTRVJUKCFtX2Zyb250ZW5kKTsKKyAgICBtX2Zyb250ZW5kID0gZnJvbnRlbmQ7CiAK
ICAgICBTY3JpcHRPYmplY3QganNvbk9iamVjdCA9IGZyb250ZW5kLT5uZXdTY3JpcHRPYmplY3Qo
KTsKLSAgICBTY3JpcHRPYmplY3QgZG9tU3RvcmFnZTsKLSAgICBpZiAoIWdldFF1YXJhbnRpbmVk
U2NyaXB0T2JqZWN0KG1fZG9tU3RvcmFnZS5nZXQoKSwgZG9tU3RvcmFnZSkpCi0gICAgICAgIHJl
dHVybjsKLSAgICBqc29uT2JqZWN0LnNldCgiZG9tU3RvcmFnZSIsIGRvbVN0b3JhZ2UpOwogICAg
IGpzb25PYmplY3Quc2V0KCJob3N0IiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKS0+aG9zdCgpKTsKICAgICBqc29uT2JqZWN0LnNldCgiaXNMb2NhbFN0b3JhZ2UiLCBtX2lz
TG9jYWxTdG9yYWdlKTsKLSAgICBpZiAoZnJvbnRlbmQtPmFkZERPTVN0b3JhZ2UoanNvbk9iamVj
dCkpCi0gICAgICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IHRydWU7CisgICAganNvbk9iamVj
dC5zZXQoImlkIiwgbV9pZCk7CisgICAgZnJvbnRlbmQtPmFkZERPTVN0b3JhZ2UoanNvbk9iamVj
dCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZVJlc291cmNlOjp1bmJpbmQoKQogewot
ICAgIG1fc2NyaXB0T2JqZWN0Q3JlYXRlZCA9IGZhbHNlOworICAgIEFTU0VSVChtX2Zyb250ZW5k
KTsKKyAgICBpZiAobV9yZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVuZCkgeworICAgICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3RvcmFn
ZUV2ZW50LCB0aGlzLCB0cnVlKTsKKyAgICAgICAgbV9yZXBvcnRpbmdDaGFuZ2VzVG9Gcm9udGVu
ZCA9IGZhbHNlOworICAgIH0KKyAgICBtX2Zyb250ZW5kID0gMDsKK30KKwordm9pZCBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2U6OnN0YXJ0UmVwb3J0aW5nQ2hhbmdlc1RvRnJvbnRlbmQoKQor
eworICAgIEFTU0VSVChtX2Zyb250ZW5kKTsKKyAgICBpZiAoIW1fcmVwb3J0aW5nQ2hhbmdlc1Rv
RnJvbnRlbmQpIHsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwgdGhpcywgdHJ1ZSk7CisgICAgICAgIG1fcmVw
b3J0aW5nQ2hhbmdlc1RvRnJvbnRlbmQgPSB0cnVlOworICAgIH0KK30KKwordm9pZCBJbnNwZWN0
b3JET01TdG9yYWdlUmVzb3VyY2U6OmhhbmRsZUV2ZW50KEV2ZW50KiBldmVudCwgYm9vbCkKK3sK
KyAgICBBU1NFUlQobV9mcm9udGVuZCk7CisgICAgQVNTRVJUKGV2ZW50TmFtZXMoKS5zdG9yYWdl
RXZlbnQgPT0gZXZlbnQtPnR5cGUoKSk7CisgICAgU3RvcmFnZUV2ZW50KiBzdG9yYWdlRXZlbnQg
PSBzdGF0aWNfY2FzdDxTdG9yYWdlRXZlbnQqPihldmVudCk7CisgICAgU3RvcmFnZSogc3RvcmFn
ZSA9IHN0b3JhZ2VFdmVudC0+c3RvcmFnZUFyZWEoKTsKKyAgICBib29sIGlzTG9jYWxTdG9yYWdl
ID0gc3RvcmFnZUV2ZW50LT5zb3VyY2UoKS0+bG9jYWxTdG9yYWdlKCkgPT0gc3RvcmFnZTsKKyAg
ICBpZiAoaXNTYW1lSG9zdEFuZFR5cGUoc3RvcmFnZS0+ZnJhbWUoKSwgaXNMb2NhbFN0b3JhZ2Up
KSB7CisgICAgICAgIG1fZnJvbnRlbmQtPnVwZGF0ZURPTVN0b3JhZ2UobV9pZCk7CisgICAgfQor
fQorCitib29sIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZTo6b3BlcmF0b3I9PShjb25zdCBF
dmVudExpc3RlbmVyJiBsaXN0ZW5lcikKK3sKKyAgICByZXR1cm4gKHRoaXMgPT0gSW5zcGVjdG9y
RE9NU3RvcmFnZVJlc291cmNlOjpjYXN0KCZsaXN0ZW5lcikpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlUmVzb3VyY2UuaCBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZS5oCmluZGV4IDNlMDU4OTcuLmE1MjdlN2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZS5oCkBAIC0zMyw2ICszMyw3IEBACiAKICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpCiAKKyNpbmNsdWRlICJFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVk
ZSAiU2NyaXB0T2JqZWN0LmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKIApAQCAtNDYsMTcg
KzQ3LDI5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBJbnNwZWN0b3JGcm9udGVuZDsKIAotICAgIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNv
dXJjZSA6IHB1YmxpYyBSZWZDb3VudGVkPEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZT4gewor
ICAgIGNsYXNzIEluc3BlY3RvckRPTVN0b3JhZ2VSZXNvdXJjZSA6IHB1YmxpYyBFdmVudExpc3Rl
bmVyIHsKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3RvckRP
TVN0b3JhZ2VSZXNvdXJjZT4gY3JlYXRlKFN0b3JhZ2UqIGRvbVN0b3JhZ2UsIGJvb2wgaXNMb2Nh
bFN0b3JhZ2UsIEZyYW1lKiBmcmFtZSkKICAgICAgICAgewogICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UoZG9tU3RvcmFnZSwgaXNMb2Nh
bFN0b3JhZ2UsIGZyYW1lKSk7CiAgICAgICAgIH0KKyAgICAgICAgc3RhdGljIGNvbnN0IEluc3Bl
Y3RvckRPTVN0b3JhZ2VSZXNvdXJjZSogY2FzdChjb25zdCBFdmVudExpc3RlbmVyKiBsaXN0ZW5l
cikKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyLT50eXBlKCkgPT0gSW5z
cGVjdG9yRE9NU3RvcmFnZVJlc291cmNlVHlwZQorICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxj
b25zdCBJbnNwZWN0b3JET01TdG9yYWdlUmVzb3VyY2UqPihsaXN0ZW5lcikKKyAgICAgICAgICAg
IDogMDsKKyAgICAgICAgfQogCiAgICAgICAgIHZvaWQgYmluZChJbnNwZWN0b3JGcm9udGVuZCog
ZnJvbnRlbmQpOwogICAgICAgICB2b2lkIHVuYmluZCgpOworICAgICAgICB2b2lkIHN0YXJ0UmVw
b3J0aW5nQ2hhbmdlc1RvRnJvbnRlbmQoKTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxl
RXZlbnQoRXZlbnQqLCBib29sIGlzV2luZG93RXZlbnQpOworICAgICAgICB2aXJ0dWFsIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lcik7CiAKICAgICAgICAgYm9v
bCBpc1NhbWVIb3N0QW5kVHlwZShGcmFtZSosIGJvb2wgaXNMb2NhbFN0b3JhZ2UpIGNvbnN0Owor
ICAgICAgICBsb25nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgICAgICBTdG9yYWdl
KiBkb21TdG9yYWdlKCkgY29uc3QgeyByZXR1cm4gbV9kb21TdG9yYWdlLmdldCgpOyB9CiAKICAg
ICBwcml2YXRlOgogCkBAIC02NSw4ICs3OCwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIFJlZlB0cjxTdG9yYWdlPiBtX2RvbVN0b3JhZ2U7CiAgICAgICAgIGJvb2wgbV9pc0xvY2Fs
U3RvcmFnZTsKICAgICAgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOwotICAgICAgICBib29sIG1f
c2NyaXB0T2JqZWN0Q3JlYXRlZDsKKyAgICAgICAgSW5zcGVjdG9yRnJvbnRlbmQqIG1fZnJvbnRl
bmQ7CisgICAgICAgIGludCBtX2lkOworICAgICAgICBib29sIG1fcmVwb3J0aW5nQ2hhbmdlc1Rv
RnJvbnRlbmQ7CiAKKyAgICAgICAgc3RhdGljIGludCBzX25leHRVbnVzZWRJZDsKICAgICB9Owog
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZC5jcHAgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZC5jcHAKaW5kZXggYzhhMmY1Yy4uYzk3OTNjYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kLmNwcApAQCAtMzk5LDEzICszOTksNDEgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVu
ZDo6c2VsZWN0RGF0YWJhc2UoRGF0YWJhc2UqIGRhdGFiYXNlKQogI2VuZGlmCiAKICNpZiBFTkFC
TEUoRE9NX1NUT1JBR0UpCi12b2lkIEluc3BlY3RvckZyb250ZW5kOjpzZWxlY3RET01TdG9yYWdl
KFN0b3JhZ2UqIHN0b3JhZ2UpCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjpzZWxlY3RET01TdG9y
YWdlKGludCBzdG9yYWdlSWQpCiB7CiAgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4gZnVu
Y3Rpb24obmV3RnVuY3Rpb25DYWxsKCJzZWxlY3RET01TdG9yYWdlIikpOwotICAgIFNjcmlwdE9i
amVjdCBxdWFyYW50aW5lZE9iamVjdDsKLSAgICBpZiAoIWdldFF1YXJhbnRpbmVkU2NyaXB0T2Jq
ZWN0KHN0b3JhZ2UsIHF1YXJhbnRpbmVkT2JqZWN0KSkKLSAgICAgICAgcmV0dXJuOwotICAgIGZ1
bmN0aW9uLT5hcHBlbmRBcmd1bWVudChxdWFyYW50aW5lZE9iamVjdCk7CisgICAgZnVuY3Rpb24t
PmFwcGVuZEFyZ3VtZW50KHN0b3JhZ2VJZCk7CisgICAgZnVuY3Rpb24tPmNhbGwoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkR2V0RE9NU3RvcmFnZUVudHJpZXMoaW50IGNhbGxJ
ZCwgY29uc3QgU2NyaXB0QXJyYXkmIGVudHJpZXMpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0
aW9uQ2FsbD4gZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJkaWRHZXRET01TdG9yYWdlRW50cmll
cyIpKTsKKyAgICBmdW5jdGlvbi0+YXBwZW5kQXJndW1lbnQoY2FsbElkKTsKKyAgICBmdW5jdGlv
bi0+YXBwZW5kQXJndW1lbnQoZW50cmllcyk7CisgICAgZnVuY3Rpb24tPmNhbGwoKTsKK30KKwor
dm9pZCBJbnNwZWN0b3JGcm9udGVuZDo6ZGlkU2V0RE9NU3RvcmFnZUl0ZW0oaW50IGNhbGxJZCwg
Ym9vbCBzdWNjZXNzKQoreworICAgIE93blB0cjxTY3JpcHRGdW5jdGlvbkNhbGw+IGZ1bmN0aW9u
KG5ld0Z1bmN0aW9uQ2FsbCgiZGlkU2V0RE9NU3RvcmFnZUl0ZW0iKSk7CisgICAgZnVuY3Rpb24t
PmFwcGVuZEFyZ3VtZW50KGNhbGxJZCk7CisgICAgZnVuY3Rpb24tPmFwcGVuZEFyZ3VtZW50KHN1
Y2Nlc3MpOworICAgIGZ1bmN0aW9uLT5jYWxsKCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRnJvbnRl
bmQ6OmRpZFJlbW92ZURPTVN0b3JhZ2VJdGVtKGludCBjYWxsSWQsIGJvb2wgc3VjY2VzcykKK3sK
KyAgICBPd25QdHI8U2NyaXB0RnVuY3Rpb25DYWxsPiBmdW5jdGlvbihuZXdGdW5jdGlvbkNhbGwo
ImRpZFJlbW92ZURPTVN0b3JhZ2VJdGVtIikpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVu
dChjYWxsSWQpOworICAgIGZ1bmN0aW9uLT5hcHBlbmRBcmd1bWVudChzdWNjZXNzKTsKKyAgICBm
dW5jdGlvbi0+Y2FsbCgpOworfQorCit2b2lkIEluc3BlY3RvckZyb250ZW5kOjp1cGRhdGVET01T
dG9yYWdlKGludCBzdG9yYWdlSWQpCit7CisgICAgT3duUHRyPFNjcmlwdEZ1bmN0aW9uQ2FsbD4g
ZnVuY3Rpb24obmV3RnVuY3Rpb25DYWxsKCJ1cGRhdGVET01TdG9yYWdlIikpOworICAgIGZ1bmN0
aW9uLT5hcHBlbmRBcmd1bWVudChzdG9yYWdlSWQpOwogICAgIGZ1bmN0aW9uLT5jYWxsKCk7CiB9
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmggYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZC5oCmluZGV4IDQyNzY4ZTYu
LmY5ZDNiYTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5k
LmgKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmQuaApAQCAtOTksNyAr
OTksMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAKICNpZiBFTkFCTEUoRE9NX1NU
T1JBR0UpCiAgICAgICAgIGJvb2wgYWRkRE9NU3RvcmFnZShjb25zdCBTY3JpcHRPYmplY3QmIGRv
bVN0b3JhZ2VPYmopOwotICAgICAgICB2b2lkIHNlbGVjdERPTVN0b3JhZ2UoU3RvcmFnZSogc3Rv
cmFnZSk7CisgICAgICAgIHZvaWQgc2VsZWN0RE9NU3RvcmFnZShpbnQgc3RvcmFnZUlkKTsKKyAg
ICAgICAgdm9pZCBkaWRHZXRET01TdG9yYWdlRW50cmllcyhpbnQgY2FsbElkLCBjb25zdCBTY3Jp
cHRBcnJheSYgZW50cmllcyk7CisgICAgICAgIHZvaWQgZGlkU2V0RE9NU3RvcmFnZUl0ZW0oaW50
IGNhbGxJZCwgYm9vbCBzdWNjZXNzKTsKKyAgICAgICAgdm9pZCBkaWRSZW1vdmVET01TdG9yYWdl
SXRlbShpbnQgY2FsbElkLCBib29sIHN1Y2Nlc3MpOworICAgICAgICB2b2lkIHVwZGF0ZURPTVN0
b3JhZ2UoaW50IHN0b3JhZ2VJZCk7CiAjZW5kaWYKIAogICAgICAgICB2b2lkIHNldERvY3VtZW50
KGNvbnN0IFNjcmlwdE9iamVjdCYgcm9vdCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRE9NU3RvcmFnZS5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9E
T01TdG9yYWdlLmpzCmluZGV4IDUyMDdiNjkuLjExMmU4NjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9ET01TdG9yYWdlLmpzCkBAIC0yNiwyNCArMjYsMjIgQEAKICAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CiAgKi8KIAotV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlvbihkb21TdG9yYWdlLCBk
b21haW4sIGlzTG9jYWxTdG9yYWdlKQorV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UgPSBmdW5jdGlv
bihpZCwgZG9tYWluLCBpc0xvY2FsU3RvcmFnZSkKIHsKLSAgICB0aGlzLmRvbVN0b3JhZ2UgPSBk
b21TdG9yYWdlOwotICAgIHRoaXMuZG9tYWluID0gZG9tYWluOwotICAgIHRoaXMuaXNMb2NhbFN0
b3JhZ2UgPSBpc0xvY2FsU3RvcmFnZTsKKyAgICB0aGlzLl9pZCA9IGlkOworICAgIHRoaXMuX2Rv
bWFpbiA9IGRvbWFpbjsKKyAgICB0aGlzLl9pc0xvY2FsU3RvcmFnZSA9IGlzTG9jYWxTdG9yYWdl
OwogfQogCiBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZS5wcm90b3R5cGUgPSB7Ci0gICAgZ2V0IGRv
bVN0b3JhZ2UoKQorICAgIGdldCBpZCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZG9t
U3RvcmFnZTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOwogICAgIH0sCiAKLSAgICBzZXQgZG9t
U3RvcmFnZSh4KQorICAgIGdldCBkb21TdG9yYWdlKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlz
Ll9kb21TdG9yYWdlID09PSB4KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9k
b21TdG9yYWdlID0geDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2RvbVN0b3JhZ2U7CiAgICAgfSwK
IAogICAgIGdldCBkb21haW4oKQpAQCAtNTEsMjIgKzQ5LDMwIEBAIFdlYkluc3BlY3Rvci5ET01T
dG9yYWdlLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbWFpbjsKICAgICB9
LAogCi0gICAgc2V0IGRvbWFpbih4KQorICAgIGdldCBpc0xvY2FsU3RvcmFnZSgpCisgICAgewor
ICAgICAgICByZXR1cm4gdGhpcy5faXNMb2NhbFN0b3JhZ2U7CisgICAgfSwKKworICAgIGdldEVu
dHJpZXNBc3luYzogZnVuY3Rpb24oY2FsbGJhY2spCiAgICAgewotICAgICAgICBpZiAodGhpcy5f
ZG9tYWluID09PSB4KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB0aGlzLl9kb21haW4g
PSB4OworICAgICAgICB2YXIgY2FsbElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoY2Fs
bGJhY2spOworICAgICAgICBJbnNwZWN0b3JDb250cm9sbGVyLmdldERPTVN0b3JhZ2VFbnRyaWVz
KGNhbGxJZCwgdGhpcy5faWQpOwogICAgIH0sCiAgICAgCi0gICAgZ2V0IGlzTG9jYWxTdG9yYWdl
KCkKKyAgICBzZXRJdGVtQXN5bmM6IGZ1bmN0aW9uKGtleSwgdmFsdWUsIGNhbGxiYWNrKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2lzTG9jYWxTdG9yYWdlOworICAgICAgICB2YXIgY2Fs
bElkID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLndyYXAoY2FsbGJhY2spOworICAgICAgICBJbnNw
ZWN0b3JDb250cm9sbGVyLnNldERPTVN0b3JhZ2VJdGVtKGNhbGxJZCwgdGhpcy5faWQsIGtleSwg
dmFsdWUpOwogICAgIH0sCiAgICAgCi0gICAgc2V0IGlzTG9jYWxTdG9yYWdlKHgpCisgICAgcmVt
b3ZlSXRlbUFzeW5jOiBmdW5jdGlvbihrZXksIGNhbGxiYWNrKQogICAgIHsKLSAgICAgICAgaWYg
KHRoaXMuX2lzTG9jYWxTdG9yYWdlID09PSB4KQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB0aGlzLl9pc0xvY2FsU3RvcmFnZSA9IHg7CisgICAgICAgIHZhciBjYWxsSWQgPSBXZWJJbnNw
ZWN0b3IuQ2FsbGJhY2sud3JhcChjYWxsYmFjayk7CisgICAgICAgIEluc3BlY3RvckNvbnRyb2xs
ZXIucmVtb3ZlRE9NU3RvcmFnZUl0ZW0oY2FsbElkLCB0aGlzLl9pZCwga2V5KTsKICAgICB9CiB9
CisKK1dlYkluc3BlY3Rvci5kaWRHZXRET01TdG9yYWdlRW50cmllcyA9IFdlYkluc3BlY3Rvci5D
YWxsYmFjay5wcm9jZXNzQ2FsbGJhY2s7CitXZWJJbnNwZWN0b3IuZGlkU2V0RE9NU3RvcmFnZUl0
ZW0gPSBXZWJJbnNwZWN0b3IuQ2FsbGJhY2sucHJvY2Vzc0NhbGxiYWNrOworV2ViSW5zcGVjdG9y
LmRpZFJlbW92ZURPTVN0b3JhZ2VJdGVtID0gV2ViSW5zcGVjdG9yLkNhbGxiYWNrLnByb2Nlc3ND
YWxsYmFjazsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9y
YWdlRGF0YUdyaWQuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZURh
dGFHcmlkLmpzCmluZGV4IGVmZGQwOTAuLjRhMzdjMjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlRGF0YUdyaWQuanMKKysrIGIvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2VEYXRhR3JpZC5qcwpAQCAtMjMsMTAgKzIzLDEyIEBA
CiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQg
PSBmdW5jdGlvbihjb2x1bW5zKQorV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZCA9IGZ1
bmN0aW9uKGNvbHVtbnMsIGRvbVN0b3JhZ2UsIGtleXMpCiB7CiAgICAgV2ViSW5zcGVjdG9yLkRh
dGFHcmlkLmNhbGwodGhpcywgY29sdW1ucyk7CiAgICAgdGhpcy5kYXRhVGFibGVCb2R5LmFkZEV2
ZW50TGlzdGVuZXIoImRibGNsaWNrIiwgdGhpcy5fb25kYmxjbGljay5iaW5kKHRoaXMpLCBmYWxz
ZSk7CisgICAgdGhpcy5fZG9tU3RvcmFnZSA9IGRvbVN0b3JhZ2U7CisgICAgdGhpcy5fa2V5cyA9
IGtleXM7CiB9CiAKIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQucHJvdG90eXBlID0g
ewpAQCAtNDQsNyArNDYsNiBAQCBXZWJJbnNwZWN0b3IuRE9NU3RvcmFnZURhdGFHcmlkLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fZWRpdGluZyA9IHRydWU7CiAgICAgICAgIHRoaXMuX2Vk
aXRpbmdOb2RlID0gbm9kZTsKICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUuc2VsZWN0KCk7Ci0g
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc3RvcmFnZS5fdW5yZWdpc3RlclN0b3JhZ2VFdmVu
dExpc3RlbmVyKCk7CiAKICAgICAgICAgdmFyIGVsZW1lbnQgPSB0aGlzLl9lZGl0aW5nTm9kZS5f
ZWxlbWVudC5jaGlsZHJlbltjb2x1bW5dOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKGVsZW1lbnQsIHRoaXMuX2VkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRp
dGluZ0NhbmNlbGxlZC5iaW5kKHRoaXMpLCBlbGVtZW50LnRleHRDb250ZW50KTsKQEAgLTY5LDcg
KzcwLDYgQEAgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZC5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnRFZGl0aW5nQ29sdW1uT2ZEYXRhR3JpZE5vZGUo
dGhpcy5fZWRpdGluZ05vZGUsIDApOwogCiAgICAgICAgIHRoaXMuX2VkaXRpbmcgPSB0cnVlOwot
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UuX3VucmVnaXN0ZXJTdG9yYWdlRXZl
bnRMaXN0ZW5lcigpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKGVsZW1lbnQs
IHRoaXMuX2VkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5fZWRpdGluZ0NhbmNlbGxl
ZC5iaW5kKHRoaXMpLCBlbGVtZW50LnRleHRDb250ZW50KTsKICAgICAgICAgd2luZG93LmdldFNl
bGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQoZWxlbWVudCwgMCwgZWxlbWVudCwgMSk7CiAgICAg
fSwKQEAgLTExOCwyMiArMTE4LDIwIEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
dmFyIGRvbVN0b3JhZ2UgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnN0b3JhZ2UudmlzaWJsZVZpZXcu
ZG9tU3RvcmFnZS5kb21TdG9yYWdlOwotICAgICAgICBpZiAoZG9tU3RvcmFnZSkgewotICAgICAg
ICAgICAgaWYgKGNvbHVtbklkZW50aWZpZXIgPT0gMCkgewotICAgICAgICAgICAgICAgIGlmIChk
b21TdG9yYWdlLmdldEl0ZW0obmV3VGV4dCkgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAg
ICBlbGVtZW50LnRleHRDb250ZW50ID0gdGhpcy5fZWRpdGluZ05vZGUuZGF0YVswXTsKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy5fZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgbW92ZVRvTmV4dElmTmVlZGVkLmNhbGwodGhpcywgZmFsc2UpOwotICAgICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
IGRvbVN0b3JhZ2UucmVtb3ZlSXRlbSh0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzBdKTsKLSAgICAg
ICAgICAgICAgICBkb21TdG9yYWdlLnNldEl0ZW0obmV3VGV4dCwgdGhpcy5fZWRpdGluZ05vZGUu
ZGF0YVsxXSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZWRpdGluZ05vZGUuZGF0YVswXSA9IG5l
d1RleHQ7ICAgICAgICAgICAgCi0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg
IGRvbVN0b3JhZ2Uuc2V0SXRlbSh0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzBdLCBuZXdUZXh0KTsK
LSAgICAgICAgICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzFdID0gbmV3VGV4dDsKKyAg
ICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlOworICAgICAgICBpZiAoY29s
dW1uSWRlbnRpZmllciA9PSAwKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fa2V5cy5pbmRleE9m
KG5ld1RleHQpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
IHRoaXMuX2VkaXRpbmdOb2RlLmRhdGFbMF07CisgICAgICAgICAgICAgICAgdGhpcy5fZWRpdGlu
Z0NhbmNlbGxlZChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICBtb3ZlVG9OZXh0SWZOZWVkZWQu
Y2FsbCh0aGlzLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgZG9tU3RvcmFnZS5yZW1vdmVJdGVtQXN5bmModGhpcy5fZWRpdGluZ05v
ZGUuZGF0YVswXSk7CisgICAgICAgICAgICBkb21TdG9yYWdlLnNldEl0ZW1Bc3luYyhuZXdUZXh0
LCB0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzFdKTsKKyAgICAgICAgICAgIHRoaXMuX2VkaXRpbmdO
b2RlLmRhdGFbMF0gPSBuZXdUZXh0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG9t
U3RvcmFnZS5zZXRJdGVtQXN5bmModGhpcy5fZWRpdGluZ05vZGUuZGF0YVswXSwgbmV3VGV4dCk7
CisgICAgICAgICAgICB0aGlzLl9lZGl0aW5nTm9kZS5kYXRhWzFdID0gbmV3VGV4dDsKICAgICAg
ICAgfQogCiAgICAgICAgIGlmICh0aGlzLl9lZGl0aW5nTm9kZS5pc0NyZWF0aW9uTm9kZSkKQEAg
LTE0NywxOCArMTQ1LDE2IEBAIFdlYkluc3BlY3Rvci5ET01TdG9yYWdlRGF0YUdyaWQucHJvdG90
eXBlID0gewogICAgIHsKICAgICAgICAgZGVsZXRlIHRoaXMuX2VkaXRpbmc7CiAgICAgICAgIHRo
aXMuX2VkaXRpbmdOb2RlID0gbnVsbDsKLSAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9y
YWdlLl9yZWdpc3RlclN0b3JhZ2VFdmVudExpc3RlbmVyKCk7CiAgICAgfSwKIAogICAgIGRlbGV0
ZVNlbGVjdGVkUm93OiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB2YXIgbm9kZSA9IHRoaXMu
c2VsZWN0ZWROb2RlOwotICAgICAgICBpZiAodGhpcy5zZWxlY3RlZE5vZGUuaXNDcmVhdGlvbk5v
ZGUpCisgICAgICAgIGlmICghbm9kZSB8fCBub2RlLmlzQ3JlYXRpb25Ob2RlKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHZhciBkb21TdG9yYWdlID0gV2ViSW5zcGVjdG9yLnBhbmVs
cy5zdG9yYWdlLnZpc2libGVWaWV3LmRvbVN0b3JhZ2UuZG9tU3RvcmFnZTsKLSAgICAgICAgaWYg
KG5vZGUgJiYgZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIGRvbVN0b3JhZ2UucmVtb3ZlSXRlbShu
b2RlLmRhdGFbMF0pOworICAgICAgICBpZiAodGhpcy5fZG9tU3RvcmFnZSkKKyAgICAgICAgICAg
IHRoaXMuX2RvbVN0b3JhZ2UucmVtb3ZlSXRlbUFzeW5jKG5vZGUuZGF0YVswXSk7CiAgICAgfQog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3RvcmFnZUl0
ZW1zVmlldy5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNW
aWV3LmpzCmluZGV4IDg2MTdkNjAuLmRlMDMzMmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCisrKyBiL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9ET01TdG9yYWdlSXRlbXNWaWV3LmpzCkBAIC02MSwzOSArNjEsODggQEAg
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VJdGVtc1ZpZXcucHJvdG90eXBlID0gewogICAgIHVwZGF0
ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5lbGVtZW50LnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgICAgIHZhciBoYXNET01TdG9yYWdlID0gdGhpcy5kb21TdG9yYWdlOwotICAgICAg
ICBpZiAoaGFzRE9NU3RvcmFnZSkKLSAgICAgICAgICAgIGhhc0RPTVN0b3JhZ2UgPSB0aGlzLmRv
bVN0b3JhZ2UuZG9tU3RvcmFnZTsKLQotICAgICAgICBpZiAoaGFzRE9NU3RvcmFnZSkgewotICAg
ICAgICAgICAgdmFyIGRhdGFHcmlkID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zdG9yYWdlLmRhdGFH
cmlkRm9yRE9NU3RvcmFnZSh0aGlzLmRvbVN0b3JhZ2UuZG9tU3RvcmFnZSk7Ci0gICAgICAgICAg
ICBpZiAoIWRhdGFHcmlkKQotICAgICAgICAgICAgICAgIGhhc0RPTVN0b3JhZ2UgPSAwOwotICAg
ICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBkYXRhR3Jp
ZDsKLSAgICAgICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQoZGF0YUdyaWQuZWxl
bWVudCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7Ci0g
ICAgICAgICAgICAgICAgdGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IHRydWU7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgdmFyIGNhbGxiYWNrID0gdGhpcy5fc2hvd0RPTVN0
b3JhZ2VFbnRyaWVzLmJpbmQodGhpcyk7CisgICAgICAgIHRoaXMuZG9tU3RvcmFnZS5nZXRFbnRy
aWVzQXN5bmMoY2FsbGJhY2spOworICAgIH0sCiAKLSAgICAgICAgaWYgKCFoYXNET01TdG9yYWdl
KSB7CisgICAgX3Nob3dET01TdG9yYWdlRW50cmllczogZnVuY3Rpb24oZW50cmllcykgCisgICAg
eworICAgICAgICBpZiAoZW50cmllcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZCA9IHRoaXMuX2RhdGFHcmlkRm9yRE9NU3RvcmFnZUVudHJpZXMoZW50cmllcyk7Cisg
ICAgICAgICAgICB0aGlzLmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fZGF0YUdyaWQuZWxlbWVu
dCk7CisgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC51cGRhdGVXaWR0aHMoKTsKKyAgICAgICAg
ICAgIHRoaXMuZGVsZXRlQnV0dG9uLnZpc2libGUgPSB0cnVlOworICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgdmFyIGVtcHR5TXNnRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
ImRpdiIpOwogICAgICAgICAgICAgZW1wdHlNc2dFbGVtZW50LmNsYXNzTmFtZSA9ICJzdG9yYWdl
LXRhYmxlLWVtcHR5IjsKICAgICAgICAgICAgIGlmICh0aGlzLmRvbVN0b3JhZ2UpCi0gICAgICAg
ICAgICBlbXB0eU1zZ0VsZW1lbnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmco
IlRoaXMgc3RvcmFnZSBpcyBlbXB0eS4iKTsKKyAgICAgICAgICAgICAgICBlbXB0eU1zZ0VsZW1l
bnQudGV4dENvbnRlbnQgPSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlRoaXMgc3RvcmFnZSBpcyBl
bXB0eS4iKTsKICAgICAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRDaGlsZChlbXB0eU1zZ0Vs
ZW1lbnQpOwogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBudWxsOwogICAgICAgICAgICAg
dGhpcy5kZWxldGVCdXR0b24udmlzaWJsZSA9IGZhbHNlOwogICAgICAgICB9CiAgICAgfSwKLSAg
ICAKKwogICAgIHJlc2l6ZTogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2Rh
dGFHcmlkKQogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlV2lkdGhzKCk7CiAgICAg
fSwKIAorICAgIF9kYXRhR3JpZEZvckRPTVN0b3JhZ2VFbnRyaWVzOiBmdW5jdGlvbihlbnRyaWVz
KQorICAgIHsKKyAgICAgICAgdmFyIGNvbHVtbnMgPSB7fTsKKyAgICAgICAgY29sdW1uc1swXSA9
IHt9OworICAgICAgICBjb2x1bW5zWzFdID0ge307CisgICAgICAgIGNvbHVtbnNbMF0udGl0bGUg
PSBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIktleSIpOworICAgICAgICBjb2x1bW5zWzBdLndpZHRo
ID0gY29sdW1uc1swXS50aXRsZS5sZW5ndGg7CisgICAgICAgIGNvbHVtbnNbMV0udGl0bGUgPSBX
ZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlZhbHVlIik7CisgICAgICAgIGNvbHVtbnNbMV0ud2lkdGgg
PSBjb2x1bW5zWzFdLnRpdGxlLmxlbmd0aDsKKworICAgICAgICB2YXIgbm9kZXMgPSBbXTsKKwor
ICAgICAgICB2YXIga2V5cyA9IFtdOworICAgICAgICB2YXIgbGVuZ3RoID0gZW50cmllcy5sZW5n
dGg7CisgICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBlbnRyaWVzLmxlbmd0aDsg
aW5kZXgrKykgeworICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsKKworICAgICAgICAgICAgdmFy
IGtleSA9IGVudHJpZXNbaW5kZXhdWzBdOworICAgICAgICAgICAgZGF0YVswXSA9IGtleTsKKyAg
ICAgICAgICAgIGlmIChrZXkubGVuZ3RoID4gY29sdW1uc1swXS53aWR0aCkKKyAgICAgICAgICAg
ICAgICBjb2x1bW5zWzBdLndpZHRoID0ga2V5Lmxlbmd0aDsKKworICAgICAgICAgICAgdmFyIHZh
bHVlID0gZW50cmllc1tpbmRleF1bMV07CisgICAgICAgICAgICBkYXRhWzFdID0gdmFsdWU7Cisg
ICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gY29sdW1uc1sxXS53aWR0aCkKKyAgICAgICAg
ICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0gdmFsdWUubGVuZ3RoOworICAgICAgICAgICAgdmFy
IG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZShkYXRhLCBmYWxzZSk7CisgICAg
ICAgICAgICBub2RlLnNlbGVjdGFibGUgPSB0cnVlOworICAgICAgICAgICAgbm9kZXMucHVzaChu
b2RlKTsKKyAgICAgICAgICAgIGtleXMucHVzaChrZXkpOworICAgICAgICB9CisKKyAgICAgICAg
dmFyIHRvdGFsQ29sdW1uV2lkdGhzID0gY29sdW1uc1swXS53aWR0aCArIGNvbHVtbnNbMV0ud2lk
dGg7CisgICAgICAgIHZhciB3aWR0aCA9IE1hdGgucm91bmQoKGNvbHVtbnNbMF0ud2lkdGggKiAx
MDApIC8gdG90YWxDb2x1bW5XaWR0aHMpOworICAgICAgICBjb25zdCBtaW5pbXVtUHJlY2VudCA9
IDEwOworICAgICAgICBpZiAod2lkdGggPCBtaW5pbXVtUHJlY2VudCkKKyAgICAgICAgICAgIHdp
ZHRoID0gbWluaW11bVByZWNlbnQ7CisgICAgICAgIGlmICh3aWR0aCA+IDEwMCAtIG1pbmltdW1Q
cmVjZW50KQorICAgICAgICAgICAgd2lkdGggPSAxMDAgLSBtaW5pbXVtUHJlY2VudDsKKyAgICAg
ICAgY29sdW1uc1swXS53aWR0aCA9IHdpZHRoOworICAgICAgICBjb2x1bW5zWzFdLndpZHRoID0g
MTAwIC0gd2lkdGg7CisgICAgICAgIGNvbHVtbnNbMF0ud2lkdGggKz0gIiUiOworICAgICAgICBj
b2x1bW5zWzFdLndpZHRoICs9ICIlIjsKKworICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV2Vi
SW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZChjb2x1bW5zLCB0aGlzLmRvbVN0b3JhZ2UsIGtl
eXMpOworICAgICAgICB2YXIgbGVuZ3RoID0gbm9kZXMubGVuZ3RoOworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKQorICAgICAgICAgICAgZGF0YUdyaWQuYXBwZW5kQ2hp
bGQobm9kZXNbaV0pOworICAgICAgICBkYXRhR3JpZC5hZGRDcmVhdGlvbk5vZGUoZmFsc2UpOwor
ICAgICAgICBpZiAobGVuZ3RoID4gMCkKKyAgICAgICAgICAgIG5vZGVzWzBdLnNlbGVjdGVkID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuIGRhdGFHcmlkOworICAgIH0sCisKICAgICBfZGVsZXRlQnV0
dG9uQ2xpY2tlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fZGF0
YUdyaWQpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdG9yYWdl
UGFuZWwuanMgYi9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3RvcmFnZVBhbmVsLmpzCmlu
ZGV4IGFlZDBkMDYuLjVhNDY5ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TdG9yYWdlUGFuZWwuanMKKysrIGIvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0
b3JhZ2VQYW5lbC5qcwpAQCAtOTMsNyArOTMsNiBAQCBXZWJJbnNwZWN0b3IuU3RvcmFnZVBhbmVs
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIFdlYkluc3BlY3Rvci5QYW5lbC5wcm90b3R5
cGUuc2hvdy5jYWxsKHRoaXMpOwogICAgICAgICB0aGlzLl91cGRhdGVTaWRlYmFyV2lkdGgoKTsK
LSAgICAgICAgdGhpcy5fcmVnaXN0ZXJTdG9yYWdlRXZlbnRMaXN0ZW5lcigpOwogICAgIH0sCiAK
ICAgICByZXNldDogZnVuY3Rpb24oKQpAQCAtMTEwLDggKzEwOSw2IEBAIFdlYkluc3BlY3Rvci5T
dG9yYWdlUGFuZWwucHJvdG90eXBlID0gewogCiAgICAgICAgIHRoaXMuX2RhdGFiYXNlcyA9IFtd
OwogCi0gICAgICAgIHRoaXMuX3VucmVnaXN0ZXJTdG9yYWdlRXZlbnRMaXN0ZW5lcigpOwotCiAg
ICAgICAgIGlmICh0aGlzLl9kb21TdG9yYWdlKSB7CiAgICAgICAgICAgICB2YXIgZG9tU3RvcmFn
ZUxlbmd0aCA9IHRoaXMuX2RvbVN0b3JhZ2UubGVuZ3RoOwogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkb21TdG9yYWdlTGVuZ3RoOyArK2kpIHsKQEAgLTE3NCwxNiArMTcxLDEyIEBA
IFdlYkluc3BlY3Rvci5TdG9yYWdlUGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB9CiAgICAg
fSwKIAotICAgIHNlbGVjdERPTVN0b3JhZ2U6IGZ1bmN0aW9uKHMpCisgICAgc2VsZWN0RE9NU3Rv
cmFnZTogZnVuY3Rpb24oc3RvcmFnZUlkKQogICAgIHsKLSAgICAgICAgdmFyIGlzTG9jYWxTdG9y
YWdlID0gKHMgPT09IEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93KCkubG9jYWxT
dG9yYWdlKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHRoaXMuX2RvbVN0b3JhZ2Uu
bGVuZ3RoOyBpIDwgbGVuOyArK2kpIHsKLSAgICAgICAgICAgIHZhciBzdG9yYWdlID0gdGhpcy5f
ZG9tU3RvcmFnZVtpXTsKLSAgICAgICAgICAgIGlmICggaXNMb2NhbFN0b3JhZ2UgPT09IHN0b3Jh
Z2UuaXNMb2NhbFN0b3JhZ2UgKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5zaG93RE9NU3RvcmFn
ZShzdG9yYWdlKTsKLSAgICAgICAgICAgICAgICBzdG9yYWdlLl9kb21TdG9yYWdlVHJlZUVsZW1l
bnQuc2VsZWN0KCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQorICAg
ICAgICB2YXIgZG9tU3RvcmFnZSA9IHRoaXMuX2RvbVN0b3JhZ2VGb3JJZChzdG9yYWdlSWQpOwor
ICAgICAgICBpZiAoZG9tU3RvcmFnZSkgeworICAgICAgICAgICAgdGhpcy5zaG93RE9NU3RvcmFn
ZShkb21TdG9yYWdlKTsKKyAgICAgICAgICAgIGRvbVN0b3JhZ2UuX2RvbVN0b3JhZ2VUcmVlRWxl
bWVudC5zZWxlY3QoKTsKICAgICAgICAgfQogICAgIH0sCiAKQEAgLTM4Myw2MSArMzc2LDYgQEAg
V2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBk
YXRhR3JpZDsKICAgICB9LAogCi0gICAgZGF0YUdyaWRGb3JET01TdG9yYWdlOiBmdW5jdGlvbihk
b21TdG9yYWdlKQotICAgIHsKLSAgICAgICAgaWYgKCFkb21TdG9yYWdlLmxlbmd0aCkKLSAgICAg
ICAgICAgIHJldHVybiBudWxsOwotCi0gICAgICAgIHZhciBjb2x1bW5zID0ge307Ci0gICAgICAg
IGNvbHVtbnNbMF0gPSB7fTsKLSAgICAgICAgY29sdW1uc1sxXSA9IHt9OwotICAgICAgICBjb2x1
bW5zWzBdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJLZXkiKTsKLSAgICAgICAgY29s
dW1uc1swXS53aWR0aCA9IGNvbHVtbnNbMF0udGl0bGUubGVuZ3RoOwotICAgICAgICBjb2x1bW5z
WzFdLnRpdGxlID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJWYWx1ZSIpOwotICAgICAgICBjb2x1
bW5zWzFdLndpZHRoID0gY29sdW1uc1sxXS50aXRsZS5sZW5ndGg7Ci0KLSAgICAgICAgdmFyIG5v
ZGVzID0gW107Ci0gICAgICAgIAotICAgICAgICB2YXIgbGVuZ3RoID0gZG9tU3RvcmFnZS5sZW5n
dGg7Ci0gICAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBkb21TdG9yYWdlLmxlbmd0
aDsgaW5kZXgrKykgewotICAgICAgICAgICAgdmFyIGRhdGEgPSB7fTsKLSAgICAgICAKLSAgICAg
ICAgICAgIHZhciBrZXkgPSBTdHJpbmcoZG9tU3RvcmFnZS5rZXkoaW5kZXgpKTsKLSAgICAgICAg
ICAgIGRhdGFbMF0gPSBrZXk7Ci0gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA+IGNvbHVtbnNb
MF0ud2lkdGgpCi0gICAgICAgICAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IGtleS5sZW5ndGg7
Ci0gICAgICAgIAotICAgICAgICAgICAgdmFyIHZhbHVlID0gU3RyaW5nKGRvbVN0b3JhZ2UuZ2V0
SXRlbShrZXkpKTsKLSAgICAgICAgICAgIGRhdGFbMV0gPSB2YWx1ZTsKLSAgICAgICAgICAgIGlm
ICh2YWx1ZS5sZW5ndGggPiBjb2x1bW5zWzFdLndpZHRoKQotICAgICAgICAgICAgICAgIGNvbHVt
bnNbMV0ud2lkdGggPSB2YWx1ZS5sZW5ndGg7Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuRGF0YUdyaWROb2RlKGRhdGEsIGZhbHNlKTsKLSAgICAgICAgICAgIG5vZGUu
c2VsZWN0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBub2Rlcy5wdXNoKG5vZGUpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgdmFyIHRvdGFsQ29sdW1uV2lkdGhzID0gY29sdW1uc1swXS53aWR0aCAr
IGNvbHVtbnNbMV0ud2lkdGg7Ci0gICAgICAgIHZhciB3aWR0aCA9IE1hdGgucm91bmQoKGNvbHVt
bnNbMF0ud2lkdGggKiAxMDApIC8gdG90YWxDb2x1bW5XaWR0aHMpOwotICAgICAgICBjb25zdCBt
aW5pbXVtUHJlY2VudCA9IDEwOwotICAgICAgICBpZiAod2lkdGggPCBtaW5pbXVtUHJlY2VudCkK
LSAgICAgICAgICAgIHdpZHRoID0gbWluaW11bVByZWNlbnQ7Ci0gICAgICAgIGlmICh3aWR0aCA+
IDEwMCAtIG1pbmltdW1QcmVjZW50KQotICAgICAgICAgICAgd2lkdGggPSAxMDAgLSBtaW5pbXVt
UHJlY2VudDsKLSAgICAgICAgY29sdW1uc1swXS53aWR0aCA9IHdpZHRoOwotICAgICAgICBjb2x1
bW5zWzFdLndpZHRoID0gMTAwIC0gd2lkdGg7Ci0gICAgICAgIGNvbHVtbnNbMF0ud2lkdGggKz0g
IiUiOwotICAgICAgICBjb2x1bW5zWzFdLndpZHRoICs9ICIlIjsKLQotICAgICAgICB2YXIgZGF0
YUdyaWQgPSBuZXcgV2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2VEYXRhR3JpZChjb2x1bW5zKTsKLSAg
ICAgICAgdmFyIGxlbmd0aCA9IG5vZGVzLmxlbmd0aDsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW5ndGg7ICsraSkKLSAgICAgICAgICAgIGRhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGVz
W2ldKTsKLSAgICAgICAgZGF0YUdyaWQuYWRkQ3JlYXRpb25Ob2RlKGZhbHNlKTsKLSAgICAgICAg
aWYgKGxlbmd0aCA+IDApCi0gICAgICAgICAgICBub2Rlc1swXS5zZWxlY3RlZCA9IHRydWU7Ci0g
ICAgICAgIHJldHVybiBkYXRhR3JpZDsKLSAgICB9LAotCiAgICAgcmVzaXplOiBmdW5jdGlvbigp
CiAgICAgewogICAgICAgICB2YXIgdmlzaWJsZVZpZXcgPSB0aGlzLnZpc2libGVWaWV3OwpAQCAt
NDQ1LDQ0ICszODMsMjkgQEAgV2ViSW5zcGVjdG9yLlN0b3JhZ2VQYW5lbC5wcm90b3R5cGUgPSB7
CiAgICAgICAgICAgICB2aXNpYmxlVmlldy5yZXNpemUoKTsKICAgICB9LAogCi0gICAgX3JlZ2lz
dGVyU3RvcmFnZUV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZhciBp
bnNwZWN0ZWRXaW5kb3cgPSBJbnNwZWN0b3JDb250cm9sbGVyLmluc3BlY3RlZFdpbmRvdygpOwot
ICAgICAgICBpZiAoIWluc3BlY3RlZFdpbmRvdyB8fCAhaW5zcGVjdGVkV2luZG93LmRvY3VtZW50
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3N0b3JhZ2VFdmVudExpc3Rl
bmVyID0gSW5zcGVjdG9yQ29udHJvbGxlci53cmFwQ2FsbGJhY2sodGhpcy5fc3RvcmFnZUV2ZW50
LmJpbmQodGhpcykpOwotICAgICAgICBpbnNwZWN0ZWRXaW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigi
c3RvcmFnZSIsIHRoaXMuX3N0b3JhZ2VFdmVudExpc3RlbmVyLCB0cnVlKTsKLSAgICB9LAotCi0g
ICAgX3VucmVnaXN0ZXJTdG9yYWdlRXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24oKQorICAgIHVwZGF0
ZURPTVN0b3JhZ2U6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKICAgICB7Ci0gICAgICAgIGlmICghdGhp
cy5fc3RvcmFnZUV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
dmFyIGluc3BlY3RlZFdpbmRvdyA9IEluc3BlY3RvckNvbnRyb2xsZXIuaW5zcGVjdGVkV2luZG93
KCk7Ci0gICAgICAgIGlmICghaW5zcGVjdGVkV2luZG93IHx8ICFpbnNwZWN0ZWRXaW5kb3cuZG9j
dW1lbnQpCisgICAgICAgIHZhciBkb21TdG9yYWdlID0gdGhpcy5fZG9tU3RvcmFnZUZvcklkKHN0
b3JhZ2VJZCk7CisgICAgICAgIGlmICghZG9tU3RvcmFnZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpbnNwZWN0ZWRXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigic3RvcmFnZSIs
IHRoaXMuX3N0b3JhZ2VFdmVudExpc3RlbmVyLCB0cnVlKTsKLSAgICAgICAgZGVsZXRlIHRoaXMu
X3N0b3JhZ2VFdmVudExpc3RlbmVyOworICAgICAgICB2YXIgdmlldyA9IGRvbVN0b3JhZ2UuX2Rv
bVN0b3JhZ2VWaWV3OworICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09PSB0
aGlzLnZpc2libGVWaWV3KQorICAgICAgICAgICAgZG9tU3RvcmFnZS5fZG9tU3RvcmFnZVZpZXcu
dXBkYXRlKCk7CiAgICAgfSwKIAotICAgIF9zdG9yYWdlRXZlbnQ6IGZ1bmN0aW9uKGV2ZW50KQor
ICAgIF9kb21TdG9yYWdlRm9ySWQ6IGZ1bmN0aW9uKHN0b3JhZ2VJZCkKICAgICB7CiAgICAgICAg
IGlmICghdGhpcy5fZG9tU3RvcmFnZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2
YXIgaXNMb2NhbFN0b3JhZ2UgPSAoZXZlbnQuc3RvcmFnZUFyZWEgPT09IEluc3BlY3RvckNvbnRy
b2xsZXIuaW5zcGVjdGVkV2luZG93KCkubG9jYWxTdG9yYWdlKTsKKyAgICAgICAgICAgIHJldHVy
biBudWxsOwogICAgICAgICB2YXIgZG9tU3RvcmFnZUxlbmd0aCA9IHRoaXMuX2RvbVN0b3JhZ2Uu
bGVuZ3RoOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRvbVN0b3JhZ2VMZW5ndGg7ICsr
aSkgewogICAgICAgICAgICAgdmFyIGRvbVN0b3JhZ2UgPSB0aGlzLl9kb21TdG9yYWdlW2ldOwot
ICAgICAgICAgICAgaWYgKGlzTG9jYWxTdG9yYWdlID09PSBkb21TdG9yYWdlLmlzTG9jYWxTdG9y
YWdlKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHZpZXcgPSBkb21TdG9yYWdlLl9kb21TdG9yYWdl
VmlldzsKLSAgICAgICAgICAgICAgICBpZiAodGhpcy52aXNpYmxlVmlldyAmJiB2aWV3ID09PSB0
aGlzLnZpc2libGVWaWV3KQotICAgICAgICAgICAgICAgICAgICBkb21TdG9yYWdlLl9kb21TdG9y
YWdlVmlldy51cGRhdGUoKTsKKyAgICAgICAgICAgIGlmIChkb21TdG9yYWdlLmlkID09IHN0b3Jh
Z2VJZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBkb21TdG9yYWdlOwogICAgICAgICAgICAg
fQogICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKICAgICBfc3RhcnRT
aWRlYmFyRHJhZ2dpbmc6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuanMKaW5kZXggOTAyZGQ5NC4uNzYzY2EzMCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC0xMDE2LDEyICsxMDE2LDE3IEBAIFdlYkluc3Bl
Y3Rvci5hZGREYXRhYmFzZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiBXZWJJbnNwZWN0b3IuYWRkRE9N
U3RvcmFnZSA9IGZ1bmN0aW9uKHBheWxvYWQpCiB7CiAgICAgdmFyIGRvbVN0b3JhZ2UgPSBuZXcg
V2ViSW5zcGVjdG9yLkRPTVN0b3JhZ2UoCi0gICAgICAgIHBheWxvYWQuZG9tU3RvcmFnZSwKKyAg
ICAgICAgcGF5bG9hZC5pZCwKICAgICAgICAgcGF5bG9hZC5ob3N0LAogICAgICAgICBwYXlsb2Fk
LmlzTG9jYWxTdG9yYWdlKTsKICAgICB0aGlzLnBhbmVscy5zdG9yYWdlLmFkZERPTVN0b3JhZ2Uo
ZG9tU3RvcmFnZSk7CiB9CiAKK1dlYkluc3BlY3Rvci51cGRhdGVET01TdG9yYWdlID0gZnVuY3Rp
b24oc3RvcmFnZUlkKQoreworICAgIHRoaXMucGFuZWxzLnN0b3JhZ2UudXBkYXRlRE9NU3RvcmFn
ZShzdG9yYWdlSWQpOworfQorCiBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmFja2luZ1dhc0VuYWJs
ZWQgPSBmdW5jdGlvbigpCiB7CiAgICAgdGhpcy5wYW5lbHMucmVzb3VyY2VzLnJlc291cmNlVHJh
Y2tpbmdXYXNFbmFibGVkKCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>