<?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>76711</bug_id>
          
          <creation_ts>2012-01-20 09:31:44 -0800</creation_ts>
          <short_desc>Web Inspector: [InspectorIndexedDB] Pass Database, object stores and indexes meta information to frontend.</short_desc>
          <delta_ts>2012-01-25 04:02:11 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>75386</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>539579</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-20 09:31:44 -0800</bug_when>
    <thetext>[IndexedDB] Pass Database, object stores and indexes meta information to frontend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540665</commentid>
    <comment_count>1</comment_count>
      <attachid>123577</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-23 11:05:59 -0800</bug_when>
    <thetext>Created attachment 123577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541493</commentid>
    <comment_count>2</comment_count>
      <attachid>123577</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-01-24 11:08:26 -0800</bug_when>
    <thetext>Comment on attachment 123577
Patch

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

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:149
&gt; +    static PassRefPtr&lt;OpenDatabaseCallback&gt; create(PassRefPtr&lt;ExecutableWithDatabase&gt; executableWithDatabase)

Here and in other places please use raw pointer instead of PassRefPtr if you are not passing ownership.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:204
&gt; +public:
&gt; +    static PassRefPtr&lt;DatabaseLoaderCallback&gt; create(PassRefPtr&lt;InspectorIndexedDBAgent::FrontendProvider&gt; frontendProvider, int requestId)

Raw pointer should be used for frontendProvider parameter here since you don&apos;t pass ownership.

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:232
&gt; +                if (!idbIndex)

We may want to report about such failures to the front-end.

&gt; Source/WebCore/inspector/front-end/IndexedDBModel.js:390
&gt; +        if (!request.callback)

Should be &quot;if (!request)&quot; ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541495</commentid>
    <comment_count>3</comment_count>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2012-01-24 11:09:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 123577 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123577&amp;action=review
&gt; 
Could we have a test at least for the protocol changes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542161</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-25 03:46:42 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 123577 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123577&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:149
&gt; &gt; +    static PassRefPtr&lt;OpenDatabaseCallback&gt; create(PassRefPtr&lt;ExecutableWithDatabase&gt; executableWithDatabase)
&gt; 
&gt; Here and in other places please use raw pointer instead of PassRefPtr if you are not passing ownership.
Done.

&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:204
&gt; &gt; +public:
&gt; &gt; +    static PassRefPtr&lt;DatabaseLoaderCallback&gt; create(PassRefPtr&lt;InspectorIndexedDBAgent::FrontendProvider&gt; frontendProvider, int requestId)
&gt; 
&gt; Raw pointer should be used for frontendProvider parameter here since you don&apos;t pass ownership.
Done.
 
&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:232
&gt; &gt; +                if (!idbIndex)
&gt; 
&gt; We may want to report about such failures to the front-end.
I am not sure if such failures can actually happen at all.
Besides that we can not report them directly, as the result of the front-end request is sent as a separate event, not a command response. I am going to address that separately.

&gt; &gt; Source/WebCore/inspector/front-end/IndexedDBModel.js:390
&gt; &gt; +        if (!request.callback)
&gt; 
&gt; Should be &quot;if (!request)&quot; ?
Done.

(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 123577 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=123577&amp;action=review
&gt; &gt; 
&gt; Could we have a test at least for the protocol changes?

Yes, I&apos;ll add them in a separate patch. I filed https://bugs.webkit.org/show_bug.cgi?id=77002 and I am going to fix it next thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542170</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-01-25 04:02:11 -0800</bug_when>
    <thetext>Committed r105864: &lt;http://trac.webkit.org/changeset/105864&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123577</attachid>
            <date>2012-01-23 11:05:59 -0800</date>
            <delta_ts>2012-01-24 11:08:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76711-20120123230557.patch</filename>
            <type>text/plain</type>
            <size>29054</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA1NjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTFiZGVjM2JkNzAwYmMz
YmVlODI4ZmFiOWM2YmY2YmNmMDJhN2YwYi4uYTMxYzQyMDY5ZmZiMDMyNWY0Y2RlMjUwNDY4M2Q3
ZjFmNmM4MDZiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ0IEBACiAyMDEyLTAxLTIzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFtJbnNwZWN0b3JJbmRleGVkREJdIFBhc3MgRGF0YWJhc2UsIG9iamVjdCBzdG9yZXMgYW5k
IGluZGV4ZXMgbWV0YSBpbmZvcm1hdGlvbiB0byBmcm9udGVuZC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFzc2VydERvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmFzc2VydElE
QkZhY3RvcnkpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJl
cXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZSk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9J
bmRleGVkREJNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9mcmFtZURl
dGFjaGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUu
X3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUu
X29yaWdpbkFkZGVkVG9GcmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9k
ZWwucHJvdG90eXBlLl9vcmlnaW5SZW1vdmVkRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX29yaWdpblJlbW92ZWQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5fdXBkYXRlT3JpZ2luRGF0YWJh
c2VOYW1lcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBl
Ll9kYXRhYmFzZVJlbW92ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LnByb3RvdHlwZS5fbG9hZERhdGFiYXNlTmFtZXNGb3JGcmFtZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlLl9sb2FkRGF0YWJhc2UpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLkZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5JbmRleGVkREJNb2RlbC5EYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwuT2JqZWN0U3RvcmUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1v
ZGVsLk9iamVjdFN0b3JlSW5kZXgpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJl
cXVlc3RNYW5hZ2VyLnByb3RvdHlwZS5yZXF1ZXN0RGF0YWJhc2UuaW5uZXJDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLnJl
cXVlc3REYXRhYmFzZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1h
bmFnZXIucHJvdG90eXBlLl9kYXRhYmFzZUxvYWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucHJvdG90eXBlLl9mcmFtZURldGFjaGVkKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUuX2RhdGFi
YXNlUmVtb3ZlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFn
ZXIucHJvdG90eXBlLl9yZXNldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuSW5kZXhlZERCUmVx
dWVzdE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JbmRl
eGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZS5kYXRhYmFzZU5hbWVzTG9hZGVkKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5JbmRleGVkREJEaXNwYXRjaGVyLnByb3RvdHlwZS5kYXRhYmFzZUxvYWRl
ZCk6CisKKzIwMTItMDEtMjMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+
CisKICAgICAgICAgV2ViIEluc3BlY3RvcjogSW5kZXhlZERCTW9kZWwgc2hvdWxkIGtlZXAgdHJh
Y2sgb2YgcmVxdWVzdHMgc2VudCB0byB0aGUgYmFja2VuZC4KICAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2NzA1CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3IuanNvbgppbmRleCA1ZGUyODgyMDBiOWQ0MmY2ZDZiNmQzMDNlOTc0YTJkYzMx
OTU5N2IwLi4xNTg2MGNhYjljNDM0OWY4N2IzNmRhYTQ5ZTBiNjg0N2Y4ZTQwYjhjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCkBAIC05NDAsNiArOTQwLDM3IEBACiAg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2VjdXJpdHlPcmlnaW4iLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiU2VjdXJpdHkgb3JpZ2luLiIgfSwKICAgICAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJkYXRhYmFzZU5hbWVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRl
bXMiOiB7ICJ0eXBlIjogInN0cmluZyIgfSwgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIG5hbWVz
IGZvciB0aGlzIG9yaWdpbi4iIH0KICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJpZCI6ICJEYXRhYmFzZVdpdGhPYmplY3RT
dG9yZXMiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAg
ICAgImRlc2NyaXB0aW9uIjogIkRhdGFiYXNlIHdpdGggYW4gYXJyYXkgb2Ygb2JqZWN0IHN0b3Jl
cy4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiRGF0
YWJhc2UgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidmVyc2lvbiIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJEYXRhYmFzZSB2ZXJzaW9uLiIgfSwK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvYmplY3RTdG9yZXMiLCAidHlwZSI6ICJh
cnJheSIsICJpdGVtcyI6IHsgIiRyZWYiOiAiT2JqZWN0U3RvcmUiIH0sICJkZXNjcmlwdGlvbiI6
ICJPYmplY3Qgc3RvcmVzIGluIHRoaXMgZGF0YWJhc2UuIiB9CisgICAgICAgICAgICAgICAgXQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAiaWQiOiAiT2Jq
ZWN0U3RvcmUiLAorICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIk9iamVjdCBzdG9yZS4iLAorICAgICAgICAgICAgICAgICJw
cm9wZXJ0aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlw
ZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiT2JqZWN0IHN0b3JlIG5hbWUuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleVBhdGgiLCAidHlwZSI6ICJzdHJpbmciLCAi
ZGVzY3JpcHRpb24iOiAiT2JqZWN0IHN0b3JlIGtleSBwYXRoLiIgfSwKKyAgICAgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJpbmRleGVzIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICIk
cmVmIjogIk9iamVjdFN0b3JlSW5kZXgiIH0sICJkZXNjcmlwdGlvbiI6ICJJbmRleGVzIGluIHRo
aXMgb2JqZWN0IHN0b3JlLiIgfQorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgImlkIjogIk9iamVjdFN0b3JlSW5kZXgiLAor
ICAgICAgICAgICAgICAgICJ0eXBlIjogIm9iamVjdCIsCisgICAgICAgICAgICAgICAgImRlc2Ny
aXB0aW9uIjogIk9iamVjdCBzdG9yZSBpbmRleC4iLAorICAgICAgICAgICAgICAgICJwcm9wZXJ0
aWVzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5hbWUiLCAidHlwZSI6ICJz
dHJpbmciLCAiZGVzY3JpcHRpb24iOiAiSW5kZXggbmFtZS4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAia2V5UGF0aCIsICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6
ICJJbmRleCBrZXkgcGF0aC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAidW5p
cXVlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJkZXNjcmlwdGlvbiI6ICJJZiB0cnVlLCBpbmRleCBp
cyB1bmlxdWUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm11bHRpRW50cnki
LCAidHlwZSI6ICJib29sZWFuIiwgImRlc2NyaXB0aW9uIjogIklmIHRydWUsIGluZGV4IGFsbG93
cyBtdWx0aXBsZSBlbnRyaWVzIGZvciBhIGtleS4iIH0KKyAgICAgICAgICAgICAgICBdCiAgICAg
ICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJjb21tYW5kcyI6IFsKQEAgLTk1OCw2ICs5
ODksMTUgQEAKICAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJmcmFtZUlkIiwgIiRyZWYi
OiAiTmV0d29yay5GcmFtZUlkIiwgImRlc2NyaXB0aW9uIjogIkZyYW1lIGlkLiIgfQogICAgICAg
ICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGRh
dGFiYXNlIG5hbWVzIGZvciBnaXZlbiBmcmFtZSdzIHNlY3VyaXR5IG9yaWdpbi4iCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICJuYW1lIjogInJlcXVlc3RE
YXRhYmFzZSIsCisgICAgICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCisgICAgICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAicmVxdWVzdElkIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlw
dGlvbiI6ICJSZXF1ZXN0IGlkLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJm
cmFtZUlkIiwgIiRyZWYiOiAiTmV0d29yay5GcmFtZUlkIiB9LAorICAgICAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImRhdGFiYXNlTmFtZSIsICJ0eXBlIjogInN0cmluZyIgfQorICAgICAgICAg
ICAgICAgIF0sCisgICAgICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlJlcXVlc3RzIGRhdGFi
YXNlIHdpdGggZ2l2ZW4gbmFtZSBpbiBnaXZlbiBmcmFtZS4iCiAgICAgICAgICAgICB9CiAgICAg
ICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCkBAIC05NjcsNiArMTAwNywxMyBAQAogICAgICAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogInJlcXVlc3RJZCIsICJ0eXBlIjogIm51bWJlciIsICJk
ZXNjcmlwdGlvbiI6ICJSZXF1ZXN0IGlkLiIgfSwKICAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJzZWN1cml0eU9yaWdpbldpdGhEYXRhYmFzZU5hbWVzIiwgIiRyZWYiOiAiU2VjdXJpdHlP
cmlnaW5XaXRoRGF0YWJhc2VOYW1lcyIsICJkZXNjcmlwdGlvbiI6ICJGcmFtZSB3aXRoIGRhdGFi
YXNlIG5hbWVzLiIgfQogICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB7CisgICAgICAgICAgICAgICAgIm5hbWUiOiAiZGF0YWJhc2VMb2FkZWQiLAorICAgICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
InJlcXVlc3RJZCIsICJ0eXBlIjogImludGVnZXIiLCAiZGVzY3JpcHRpb24iOiAiUmVxdWVzdCBp
ZC4iIH0sCisgICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZGF0YWJhc2VXaXRoT2JqZWN0
U3RvcmVzIiwgIiRyZWYiOiAiRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzIiwgImRlc2NyaXB0aW9u
IjogIkRhdGFiYXNlIHdpdGggYW4gYXJyYXkgb2Ygb2JqZWN0IHN0b3Jlcy4iIH0KKyAgICAgICAg
ICAgICAgICBdCiAgICAgICAgICAgICB9CiAgICAgICAgIF0KICAgICB9LApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKaW5kZXgg
ZTcwNWZmOGU5YWQxMDIzNDNiY2E3MDA1Y2M1YTY2N2ZlMTllM2NmMS4uN2YwOWU0MDcyODdhZjJk
OThmOWY0OTUzODhmY2IxMzgyYzliODE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC00MCw3ICs0MCwxMiBAQAog
I2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiR3JvdXBTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IklEQkNhbGxiYWNrcy5oIgorI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5o
IgogI2luY2x1ZGUgIklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCT2JqZWN0U3RvcmVCYWNrZW5k
SW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiSURCVHJhbnNhY3Rpb24uaCIKKyNpbmNsdWRlICJJREJU
cmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVu
ZC5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
clN0YXRlLmgiCkBAIC01Myw2ICs1OCw5IEBACiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiB1
c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERCOjpTZWN1cml0eU9yaWdpbldpdGhE
YXRhYmFzZU5hbWVzOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6RGF0
YWJhc2VXaXRoT2JqZWN0U3RvcmVzOwordXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4
ZWREQjo6T2JqZWN0U3RvcmU7Cit1c2luZyBXZWJDb3JlOjpUeXBlQnVpbGRlcjo6SW5kZXhlZERC
OjpPYmplY3RTdG9yZUluZGV4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyOSw2ICsx
MzcsMTMxIEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fc2VjdXJpdHlPcmlnaW47CiB9OwogCitj
bGFzcyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJs
ZVdpdGhEYXRhYmFzZT4geworcHVibGljOgorICAgIHZpcnR1YWwgfkV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UoKSB7IH07CisgICAgdm9pZCBzdGFydChJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSos
IFNlY3VyaXR5T3JpZ2luKiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7Cisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRl
cmZhY2U+KSA9IDA7Cit9OworCitjbGFzcyBPcGVuRGF0YWJhc2VDYWxsYmFjayA6IHB1YmxpYyBJ
bnNwZWN0b3JJREJDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8T3Bl
bkRhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVmUHRyPEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2U+IGV4ZWN1dGFibGVXaXRoRGF0YWJhc2UpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IE9wZW5EYXRhYmFzZUNhbGxiYWNrKGV4ZWN1dGFibGVXaXRoRGF0YWJhc2UpKTsKKyAg
ICB9CisKKyAgICB2aXJ0dWFsIH5PcGVuRGF0YWJhc2VDYWxsYmFjaygpIHsgfQorCisgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZT4gaWRiRGF0YWJhc2UpCisgICAgeworICAgICAgICBtX2V4ZWN1dGFibGVXaXRoRGF0YWJhc2Ut
PmV4ZWN1dGUoaWRiRGF0YWJhc2UpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBPcGVuRGF0YWJh
c2VDYWxsYmFjayhQYXNzUmVmUHRyPEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U+IGV4ZWN1dGFibGVX
aXRoRGF0YWJhc2UpCisgICAgICAgIDogbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlKGV4ZWN1dGFi
bGVXaXRoRGF0YWJhc2UpIHsgfQorICAgIFJlZlB0cjxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiBt
X2V4ZWN1dGFibGVXaXRoRGF0YWJhc2U7Cit9OworCit2b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJh
c2U6OnN0YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5LCBTZWN1cml0
eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRh
YmFzZU5hbWUpCit7CisgICAgUmVmUHRyPE9wZW5EYXRhYmFzZUNhbGxiYWNrPiBjYWxsYmFjayA9
IE9wZW5EYXRhYmFzZUNhbGxiYWNrOjpjcmVhdGUodGhpcyk7CisgICAgaWRiRmFjdG9yeS0+b3Bl
bihkYXRhYmFzZU5hbWUsIGNhbGxiYWNrLmdldCgpLCBzZWN1cml0eU9yaWdpbiwgZnJhbWUsIFN0
cmluZygpKTsKK30KKworc3RhdGljIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50
ZXJmYWNlPiB0cmFuc2FjdGlvbkZvckRhdGFiYXNlKElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFj
ZSogaWRiRGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQoreworICAgIEV4
Y2VwdGlvbkNvZGUgZWM7CisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRyYW5zYWN0aW9uT2Jq
ZWN0U3RvcmVOYW1lc0xpc3QgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsKKyAgICB0cmFuc2Fj
dGlvbk9iamVjdFN0b3JlTmFtZXNMaXN0LT5hcHBlbmQob2JqZWN0U3RvcmVOYW1lKTsKKyAgICBS
ZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiA9IGlk
YkRhdGFiYXNlLT50cmFuc2FjdGlvbih0cmFuc2FjdGlvbk9iamVjdFN0b3JlTmFtZXNMaXN0Lmdl
dCgpLCBJREJUcmFuc2FjdGlvbjo6UkVBRF9PTkxZLCBlYyk7CisgICAgaWYgKGVjKQorICAgICAg
ICByZXR1cm4gMDsKKyAgICByZXR1cm4gaWRiVHJhbnNhY3Rpb247Cit9CisKK3N0YXRpYyBQYXNz
UmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFjZT4gb2JqZWN0U3RvcmVGb3JUcmFu
c2FjdGlvbihJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2UqIGlkYlRyYW5zYWN0aW9uLCBj
b25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSkKK3sKKyAgICBFeGNlcHRpb25Db2RlIGVjOwor
ICAgIFJlZlB0cjxJREJPYmplY3RTdG9yZUJhY2tlbmRJbnRlcmZhY2U+IGlkYk9iamVjdFN0b3Jl
ID0gaWRiVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKG9iamVjdFN0b3JlTmFtZSwgZWMpOworICAg
IGlmIChlYykKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGlkYk9iamVjdFN0b3JlOwor
fQorCitzdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGluZGV4Rm9y
T2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlKiBpZGJPYmplY3RTdG9y
ZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYzsKKyAg
ICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpZGJJbmRleCA9IGlkYk9iamVjdFN0
b3JlLT5pbmRleChpbmRleE5hbWUsIGVjKTsKKyAgICBpZiAoZWMpCisgICAgICAgIHJldHVybiAw
OworICAgIHJldHVybiBpZGJJbmRleDsKK30KKworY2xhc3MgRGF0YWJhc2VMb2FkZXJDYWxsYmFj
ayA6IHB1YmxpYyBFeGVjdXRhYmxlV2l0aERhdGFiYXNlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxEYXRhYmFzZUxvYWRlckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxJbnNw
ZWN0b3JJbmRleGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwg
aW50IHJlcXVlc3RJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRGF0YWJh
c2VMb2FkZXJDYWxsYmFjayhmcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQpKTsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIH5EYXRhYmFzZUxvYWRlckNhbGxiYWNrKCkgeyB9CisKKyAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZShQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRi
RGF0YWJhc2UpCisgICAgeworICAgICAgICBpZiAoIW1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRl
bmQoKSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yQXJy
YXk+IG9iamVjdFN0b3JlcyA9IEluc3BlY3RvckFycmF5OjpjcmVhdGUoKTsKKworICAgICAgICBS
ZWZQdHI8RE9NU3RyaW5nTGlzdD4gb2JqZWN0U3RvcmVOYW1lc0xpc3QgPSBpZGJEYXRhYmFzZS0+
b2JqZWN0U3RvcmVOYW1lcygpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9iamVj
dFN0b3JlTmFtZXNMaXN0LT5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgb2Jq
ZWN0U3RvcmVOYW1lID0gb2JqZWN0U3RvcmVOYW1lc0xpc3QtPml0ZW0oaSk7CisgICAgICAgICAg
ICBSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiA9
IHRyYW5zYWN0aW9uRm9yRGF0YWJhc2UoaWRiRGF0YWJhc2UuZ2V0KCksIG9iamVjdFN0b3JlTmFt
ZSk7CisgICAgICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgUmVmUHRyPElEQk9iamVjdFN0b3JlQmFja2VuZEludGVyZmFj
ZT4gaWRiT2JqZWN0U3RvcmUgPSBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKGlkYlRyYW5zYWN0
aW9uLmdldCgpLCBvYmplY3RTdG9yZU5hbWUpOworICAgICAgICAgICAgaWYgKCFpZGJPYmplY3RT
dG9yZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgUmVmUHRyPElu
c3BlY3RvckFycmF5PiBpbmRleGVzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOworICAgICAg
ICAgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGluZGV4TmFtZXNMaXN0ID0gaWRiT2JqZWN0U3Rv
cmUtPmluZGV4TmFtZXMoKTsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgaW5k
ZXhOYW1lc0xpc3QtPmxlbmd0aCgpOyArK2opIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SURC
SW5kZXhCYWNrZW5kSW50ZXJmYWNlPiBpZGJJbmRleCA9IGluZGV4Rm9yT2JqZWN0U3RvcmUoaWRi
T2JqZWN0U3RvcmUuZ2V0KCksIGluZGV4TmFtZXNMaXN0LT5pdGVtKGopKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlkYkluZGV4KQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAg
ICAgICAgICAgICAgIFJlZlB0cjxPYmplY3RTdG9yZUluZGV4PiBvYmplY3RTdG9yZUluZGV4ID0g
T2JqZWN0U3RvcmVJbmRleDo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgLnNldE5hbWUo
aWRiSW5kZXgtPm5hbWUoKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldEtleVBhdGgoaWRiSW5k
ZXgtPmtleVBhdGgoKSkKKyAgICAgICAgICAgICAgICAgICAgLnNldFVuaXF1ZShpZGJJbmRleC0+
dW5pcXVlKCkpCisgICAgICAgICAgICAgICAgICAgIC5zZXRNdWx0aUVudHJ5KGlkYkluZGV4LT5t
dWx0aUVudHJ5KCkpOworICAgICAgICAgICAgICAgIGluZGV4ZXMtPnB1c2hPYmplY3Qob2JqZWN0
U3RvcmVJbmRleCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFJlZlB0cjxPYmplY3RT
dG9yZT4gb2JqZWN0U3RvcmUgPSBPYmplY3RTdG9yZTo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAg
ICAuc2V0TmFtZShpZGJPYmplY3RTdG9yZS0+bmFtZSgpKQorICAgICAgICAgICAgICAgIC5zZXRL
ZXlQYXRoKGlkYk9iamVjdFN0b3JlLT5rZXlQYXRoKCkpCisgICAgICAgICAgICAgICAgLnNldElu
ZGV4ZXMoaW5kZXhlcyk7CisgICAgICAgICAgICBvYmplY3RTdG9yZXMtPnB1c2hPYmplY3Qob2Jq
ZWN0U3RvcmUpOworICAgICAgICB9CisgICAgICAgIFJlZlB0cjxEYXRhYmFzZVdpdGhPYmplY3RT
dG9yZXM+IHJlc3VsdCA9IERhdGFiYXNlV2l0aE9iamVjdFN0b3Jlczo6Y3JlYXRlKCkKKyAgICAg
ICAgICAgIC5zZXROYW1lKGlkYkRhdGFiYXNlLT5uYW1lKCkpCisgICAgICAgICAgICAuc2V0VmVy
c2lvbihpZGJEYXRhYmFzZS0+dmVyc2lvbigpKQorICAgICAgICAgICAgLnNldE9iamVjdFN0b3Jl
cyhvYmplY3RTdG9yZXMpOworCisgICAgICAgIG1fZnJvbnRlbmRQcm92aWRlci0+ZnJvbnRlbmQo
KS0+ZGF0YWJhc2VMb2FkZWQobV9yZXF1ZXN0SWQsIHJlc3VsdCk7CisgICAgfQorCitwcml2YXRl
OgorICAgIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2soUGFzc1JlZlB0cjxJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gZnJvbnRlbmRQcm92aWRlciwgaW50IHJlcXVlc3RJ
ZCkKKyAgICAgICAgOiBtX2Zyb250ZW5kUHJvdmlkZXIoZnJvbnRlbmRQcm92aWRlcikKKyAgICAg
ICAgLCBtX3JlcXVlc3RJZChyZXF1ZXN0SWQpIHsgfQorICAgIFJlZlB0cjxJbnNwZWN0b3JJbmRl
eGVkREJBZ2VudDo6RnJvbnRlbmRQcm92aWRlcj4gbV9mcm9udGVuZFByb3ZpZGVyOworICAgIGlu
dCBtX3JlcXVlc3RJZDsKK307CisKIH0gLy8gbmFtZXNwYWNlCiAKIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpJbnNwZWN0b3JJbmRleGVkREJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JTdGF0ZSogc3RhdGUsIEluc3BlY3RvclBhZ2VBZ2Vu
dCogcGFnZUFnZW50KQpAQCAtMTcxLDIxICszMDQsNTMgQEAgdm9pZCBJbnNwZWN0b3JJbmRleGVk
REJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAgICAgbV9zdGF0ZS0+c2V0Qm9vbGVhbihJ
bmRleGVkREJBZ2VudFN0YXRlOjppbmRleGVkREJBZ2VudEVuYWJsZWQsIGZhbHNlKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFt
ZShFcnJvclN0cmluZyogZXJyb3IsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJ
ZCkKK3N0YXRpYyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgRXJyb3JTdHJpbmcqIGVycm9yKQogewot
ICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOworICAg
IEZyYW1lKiBmcmFtZSA9IHBhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogMDsKKworICAgIGlm
ICghZG9jdW1lbnQpCisgICAgICAgICplcnJvciA9ICJObyBkb2N1bWVudCBmb3IgZ2l2ZW4gZnJh
bWUgZm91bmQiOworCisgICAgcmV0dXJuIGRvY3VtZW50OworfQorCitzdGF0aWMgSURCRmFjdG9y
eUJhY2tlbmRJbnRlcmZhY2UqIGFzc2VydElEQkZhY3RvcnkoRG9jdW1lbnQqIGRvY3VtZW50LCBF
cnJvclN0cmluZyogZXJyb3IpCit7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50ID8gZG9jdW1l
bnQtPnBhZ2UoKSA6IDA7Ci0gICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkJhY2tl
bmQgPSBwYWdlID8gcGFnZS0+Z3JvdXAoKS5pZGJGYWN0b3J5KCkgOiAwOworICAgIElEQkZhY3Rv
cnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5ID0gcGFnZSA/IHBhZ2UtPmdyb3VwKCkuaWRi
RmFjdG9yeSgpIDogMDsKIAotICAgIGlmICghaWRiQmFja2VuZCkgeworICAgIGlmICghaWRiRmFj
dG9yeSkKICAgICAgICAgKmVycm9yID0gIk5vIEluZGV4ZWREQiBmYWN0b3J5IGZvciBnaXZlbiBm
cmFtZSBmb3VuZCI7CisKKyAgICByZXR1cm4gaWRiRmFjdG9yeTsKK30KKwordm9pZCBJbnNwZWN0
b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZShFcnJvclN0cmlu
ZyogZXJyb3IsIGludCByZXF1ZXN0SWQsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCkKK3sKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1bWVudChmcmFtZUlkLCBtX3BhZ2VBZ2VudCwg
ZXJyb3IpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVybjsKKyAgICBJREJGYWN0
b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZG9jdW1l
bnQsIGVycm9yKTsKKyAgICBpZiAoIWlkYkZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKLSAgICB9
CiAKICAgICBSZWZQdHI8R2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrPiBjYWxsYmFjayA9IEdldERh
dGFiYXNlTmFtZXNDYWxsYmFjazo6Y3JlYXRlKG1fZnJvbnRlbmRQcm92aWRlciwgcmVxdWVzdElk
LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgR3JvdXBTZXR0
aW5ncyogZ3JvdXBTZXR0aW5ncyA9IGRvY3VtZW50LT5wYWdlKCktPmdyb3VwKCkuZ3JvdXBTZXR0
aW5ncygpOwotICAgIGlkYkJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoY2FsbGJhY2suZ2V0KCks
IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudC0+ZnJhbWUoKSwgZ3JvdXBTZXR0
aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkpOworICAgIGlkYkZhY3RvcnktPmdldERhdGFi
YXNlTmFtZXMoY2FsbGJhY2suZ2V0KCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkb2N1
bWVudC0+ZnJhbWUoKSwgZ3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkpOwor
fQorCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JT
dHJpbmcqIGVycm9yLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2Vy
dERvY3VtZW50KGZyYW1lSWQsIG1fcGFnZUFnZW50LCBlcnJvcik7CisgICAgaWYgKCFkb2N1bWVu
dCkKKyAgICAgICAgcmV0dXJuOworICAgIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJG
YWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShkb2N1bWVudCwgZXJyb3IpOworICAgIGlmICghaWRi
RmFjdG9yeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmVmUHRyPERhdGFiYXNlTG9hZGVyQ2Fs
bGJhY2s+IGRhdGFiYXNlTG9hZGVyQ2FsbGJhY2sgPSBEYXRhYmFzZUxvYWRlckNhbGxiYWNrOjpj
cmVhdGUobV9mcm9udGVuZFByb3ZpZGVyLCByZXF1ZXN0SWQpOworICAgIGRhdGFiYXNlTG9hZGVy
Q2FsbGJhY2stPnN0YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBk
b2N1bWVudC0+ZnJhbWUoKSwgZGF0YWJhc2VOYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERC
QWdlbnQuaAppbmRleCBkN2Y2NDY0Y2IwMTIyNmNlZWQ1YjRhNDAzNDg2ZWE5YWVkNmRjOTEyLi5l
OGM3NzE2MWQ1MWUzZTRiZmJkZTI2Mjk2M2U4OWQzODEzNDRiN2JmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNjEsNiAr
NjEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmFibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lk
IGRpc2FibGUoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIHJlcXVlc3REYXRhYmFzZU5hbWVzRm9y
RnJhbWUoRXJyb3JTdHJpbmcqLCBpbnQgcmVxdWVzdElkLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQp
OworICAgIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nKiwgaW50IHJlcXVlc3RJZCwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSk7CiBwcml2
YXRlOgogICAgIEluc3BlY3RvckluZGV4ZWREQkFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJ
bnNwZWN0b3JTdGF0ZSosIEluc3BlY3RvclBhZ2VBZ2VudCopOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJNb2RlbC5qcwppbmRleCBjMjk1
MGVkMzc3YzgwZDZlYWQ5Yzc0MWI5YmViM2FjOGVlZWI3MTZmLi4xZDhlNDI1NTBlNzM3YTg0MzY4
ZTJhYWE0ZWUwYmVjMjQ1NWMwYTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMKQEAgLTM0LDEyICszNCwxMiBAQAogICov
CiBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwgPSBmdW5jdGlvbigpCiB7Ci0gICAgdGhpcy5f
aW5kZXhlZERCQWdlbnQgPSBuZXcgV2ViSW5zcGVjdG9yLkluZGV4ZWREQlJlcXVlc3RNYW5hZ2Vy
KCk7CisgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LkluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyKCk7CiAgICAgCiAgICAgV2ViSW5zcGVjdG9yLnJlc291
cmNlVHJlZU1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlJlc291cmNlVHJlZU1v
ZGVsLkV2ZW50VHlwZXMuRnJhbWVOYXZpZ2F0ZWQsIHRoaXMuX2ZyYW1lTmF2aWdhdGVkLCB0aGlz
KTsKICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihX
ZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlTW9kZWwuRXZlbnRUeXBlcy5GcmFtZURldGFjaGVkLCB0
aGlzLl9mcmFtZURldGFjaGVkLCB0aGlzKTsKICAgICAKLSAgICB0aGlzLl9zZWN1cml0eU9yaWdp
bkJ5RnJhbWVJZCA9IHt9OworICAgIHRoaXMuX2ZyYW1lcyA9IHt9OwogICAgIHRoaXMuX2ZyYW1l
SWRzQnlTZWN1cml0eU9yaWdpbiA9IHt9OwogICAgIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luID0ge307CiAKQEAgLTc5LDE4ICs3OSwxOCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhl
ZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIHJlc291cmNlVHJlZUZy
YW1lID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9ICovIGV2ZW50
LmRhdGE7CiAgICAgICAgIHRoaXMuX29yaWdpblJlbW92ZWRGcm9tRnJhbWUocmVzb3VyY2VUcmVl
RnJhbWUuaWQpOwotICAgICAgICB0aGlzLl9pbmRleGVkREJBZ2VudC5fZnJhbWVEZXRhY2hlZChy
ZXNvdXJjZVRyZWVGcmFtZS5pZCk7CisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVlc3RNYW5h
Z2VyLl9mcmFtZURldGFjaGVkKHJlc291cmNlVHJlZUZyYW1lLmlkKTsKICAgICB9LAogCiAgICAg
X3Jlc2V0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlzLl9zZWN1cml0eU9yaWdpbkJ5
RnJhbWVJZCA9IHt9OworICAgICAgICB0aGlzLl9mcmFtZXMgPSB7fTsKICAgICAgICAgdGhpcy5f
ZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2luID0ge307CiAgICAgICAgIHRoaXMuX2RhdGFiYXNlTmFt
ZXNCeVNlY3VyaXR5T3JpZ2luID0ge307Ci0gICAgICAgIHRoaXMuX2luZGV4ZWREQkFnZW50Ll9y
ZXNldCgpOworICAgICAgICB0aGlzLl9pbmRleGVkREJSZXF1ZXN0TWFuYWdlci5fcmVzZXQoKTsK
ICAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIGV2ZW50cz8KICAgICB9LAotICAgIAorCiAgICAg
LyoqCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuUmVzb3VyY2VUcmVlRnJhbWV9IHJlc291
cmNlVHJlZUZyYW1lCiAgICAgICovCkBAIC0xMDMsNyArMTAzLDcgQEAgV2ViSW5zcGVjdG9yLklu
ZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhp
cy5fbG9hZERhdGFiYXNlTmFtZXNGb3JGcmFtZShyZXNvdXJjZVRyZWVGcmFtZS5pZCk7CiAgICAg
fSwKLSAgICAKKwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCiAgICAg
ICogQHBhcmFtIHtzdHJpbmd9IHNlY3VyaXR5T3JpZ2luCkBAIC0xMTYsMTkgKzExNiwxOSBAQCBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgdGhp
cy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dID0gW107CiAg
ICAgICAgICAgICAvLyBGSVhNRTogZGlzcGF0Y2ggb3JpZ2luIGFkZGVkIGV2ZW50LgogICAgICAg
ICB9Ci0gICAgICAgIHRoaXMuX3NlY3VyaXR5T3JpZ2luQnlGcmFtZUlkW2ZyYW1lSWRdID0gc2Vj
dXJpdHlPcmlnaW47CisgICAgICAgIHRoaXMuX2ZyYW1lc1tmcmFtZUlkXSA9IG5ldyBXZWJJbnNw
ZWN0b3IuSW5kZXhlZERCTW9kZWwuRnJhbWUoZnJhbWVJZCwgc2VjdXJpdHlPcmlnaW4pOwogICAg
IH0sCi0gICAgCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAogICAg
ICAqLwogICAgIF9vcmlnaW5SZW1vdmVkRnJvbUZyYW1lOiBmdW5jdGlvbihmcmFtZUlkKQogICAg
IHsKLSAgICAgICAgdmFyIGN1cnJlbnRTZWN1cml0eU9yaWdpbiA9IHRoaXMuX3NlY3VyaXR5T3Jp
Z2luQnlGcmFtZUlkW2ZyYW1lSWRdOworICAgICAgICB2YXIgY3VycmVudFNlY3VyaXR5T3JpZ2lu
ID0gdGhpcy5fZnJhbWVzW2ZyYW1lSWRdID8gdGhpcy5fZnJhbWVzW2ZyYW1lSWRdLnNlY3VyaXR5
T3JpZ2luIDogbnVsbDsKICAgICAgICAgaWYgKCFjdXJyZW50U2VjdXJpdHlPcmlnaW4pCiAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgIAotICAgICAgICBkZWxldGUgdGhpcy5fc2VjdXJpdHlP
cmlnaW5CeUZyYW1lSWRbZnJhbWVJZF07CisKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZyYW1lc1tm
cmFtZUlkXTsKIAogICAgICAgICB2YXIgZnJhbWVJZHNGb3JPcmlnaW4gPSB0aGlzLl9mcmFtZUlk
c0J5U2VjdXJpdHlPcmlnaW5bY3VycmVudFNlY3VyaXR5T3JpZ2luXTsKICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBmcmFtZUlkc0Zvck9yaWdpbjsgKytpKSB7CkBAIC0xNDgsMTAgKzE0OCwx
MCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAg
ICAgICAgdmFyIGZyYW1lSWRzRm9yT3JpZ2luID0gdGhpcy5fZnJhbWVJZHNCeVNlY3VyaXR5T3Jp
Z2luW3NlY3VyaXR5T3JpZ2luXTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFtZUlk
c0Zvck9yaWdpbjsgKytpKQotICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3NlY3VyaXR5T3JpZ2lu
QnlGcmFtZUlkW2ZyYW1lSWRzRm9yT3JpZ2luW2ldXQorICAgICAgICAgICAgZGVsZXRlIHRoaXMu
X2ZyYW1lc1tmcmFtZUlkc0Zvck9yaWdpbltpXV07CiAgICAgICAgIGRlbGV0ZSB0aGlzLl9mcmFt
ZUlkc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3VyaXR5T3JpZ2luW3NlY3VyaXR5T3Jp
Z2luXTsgKytpKQotICAgICAgICAgICAgdGhpcy5fZGF0YWJhc2VSZW1vdmVkKHNlY3VyaXR5T3Jp
Z2luLCB0aGlzLl9kYXRhYmFzZU5hbWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl1b
aV0pOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNlUmVtb3ZlZChz
ZWN1cml0eU9yaWdpbiwgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJp
dHlPcmlnaW5dW2ldKTsKICAgICAgICAgZGVsZXRlIHRoaXMuX2RhdGFiYXNlTmFtZXNCeVNlY3Vy
aXR5T3JpZ2luW3NlY3VyaXR5T3JpZ2luXTsKICAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIG9y
aWdpbiByZW1vdmVkIGV2ZW50LgogICAgIH0sCkBAIC0xNjgsOSArMTY4LDkgQEAgV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIG9sZERhdGFiYXNl
TmFtZXMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9kYXRhYmFzZU5h
bWVzQnlTZWN1cml0eU9yaWdpbltzZWN1cml0eU9yaWdpbl0ubGVuZ3RoOyArK2kpCiAgICAgICAg
ICAgICBvbGREYXRhYmFzZU5hbWVzW2RhdGFiYXNlTmFtZXNbaV1dID0gdHJ1ZTsKLSAgICAgICAg
CisKICAgICAgICAgdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJpdHlPcmlnaW5bc2VjdXJpdHlP
cmlnaW5dID0gZGF0YWJhc2VOYW1lczsKLSAgICAgICAgCisKICAgICAgICAgZm9yICh2YXIgZGF0
YWJhc2VOYW1lIGluIG9sZERhdGFiYXNlTmFtZXMpIHsKICAgICAgICAgICAgIGlmICghbmV3RGF0
YWJhc2VOYW1lc1tkYXRhYmFzZU5hbWVdKQogICAgICAgICAgICAgICAgIHRoaXMuX2RhdGFiYXNl
UmVtb3ZlZChzZWN1cml0eU9yaWdpbiwgZGF0YWJhc2VOYW1lKTsKQEAgLTE3OSwxMSArMTc5LDEx
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAoIW9sZERhdGFiYXNlTmFtZXNbZGF0YWJhc2VOYW1lXSkKICAgICAgICAgICAgICAgICB0
aGlzLl9kYXRhYmFzZUFkZGVkKHNlY3VyaXR5T3JpZ2luLCBkYXRhYmFzZU5hbWUpOwogICAgICAg
ICB9Ci0gICAgICAgIAorCiAgICAgICAgIGlmICghdGhpcy5fZGF0YWJhc2VOYW1lc0J5U2VjdXJp
dHlPcmlnaW5bc2VjdXJpdHlPcmlnaW5dLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMuX29yaWdp
blJlbW92ZWQoc2VjdXJpdHlPcmlnaW4pOwogICAgIH0sCi0gICAgCisKICAgICAvKioKICAgICAg
KiBAcGFyYW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30g
ZGF0YWJhc2VOYW1lCkBAIC0xOTIsMTMgKzE5MiwxNCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERC
TW9kZWwucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgLy8gRklYTUU6IGRpc3BhdGNoIGRh
dGFiYXNlIGFkZGVkIGV2ZW50LgogICAgIH0sCi0gICAgCisKICAgICAvKioKICAgICAgKiBAcGFy
YW0ge3N0cmluZ30gc2VjdXJpdHlPcmlnaW4KICAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJh
c2VOYW1lCiAgICAgICovCiAgICAgX2RhdGFiYXNlUmVtb3ZlZDogZnVuY3Rpb24oc2VjdXJpdHlP
cmlnaW4sIGRhdGFiYXNlTmFtZSkKICAgICB7CisgICAgICAgIHRoaXMuX2luZGV4ZWREQlJlcXVl
c3RNYW5hZ2VyLl9kYXRhYmFzZVJlbW92ZWQodGhpcy5fZnJhbWVJZHNCeVNlY3VyaXR5T3JpZ2lu
W3NlY3VyaXR5T3JpZ2luXSwgZGF0YWJhc2VOYW1lKTsKICAgICAgICAgLy8gRklYTUU6IGRpc3Bh
dGNoIGRhdGFiYXNlIHJlbW92ZWQgZXZlbnQuCiAgICAgfSwKIApAQCAtMjEzLDcgKzIxNCw3IEBA
IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIGZ1bmN0
aW9uIGNhbGxiYWNrKHNlY3VyaXR5T3JpZ2luV2l0aERhdGFiYXNlTmFtZXMpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIHZhciBkYXRhYmFzZU5hbWVzID0gc2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJh
c2VOYW1lcy5kYXRhYmFzZU5hbWVzOwotICAgICAgICAgICAgdmFyIG9sZFNlY3VyaXR5T3JpZ2lu
ID0gdGhpcy5fc2VjdXJpdHlPcmlnaW5CeUZyYW1lSWRbZnJhbWVJZF07CisgICAgICAgICAgICB2
YXIgb2xkU2VjdXJpdHlPcmlnaW4gPSB0aGlzLl9mcmFtZXNbZnJhbWVJZF0gPyB0aGlzLl9mcmFt
ZXNbZnJhbWVJZF0uc2VjdXJpdHlPcmlnaW4gOiBudWxsOwogICAgICAgICAgICAgaWYgKG9sZFNl
Y3VyaXR5T3JpZ2luICYmIG9sZFNlY3VyaXR5T3JpZ2luID09PSBzZWN1cml0eU9yaWdpbldpdGhE
YXRhYmFzZU5hbWVzLnNlY3VyaXR5T3JpZ2luKQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0
ZU9yaWdpbkRhdGFiYXNlTmFtZXMoc2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcy5zZWN1
cml0eU9yaWdpbiwgc2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcy5kYXRhYmFzZU5hbWVz
KTsKICAgICAgICAgICAgIGVsc2UgewpAQCAtMjIzLDcgKzIyNCw0MCBAQCBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAK
LSAgICAgICAgdGhpcy5faW5kZXhlZERCQWdlbnQucmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFt
ZShmcmFtZUlkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5faW5kZXhlZERC
UmVxdWVzdE1hbmFnZXIucmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZShmcmFtZUlkLCBjYWxs
YmFjay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJp
bmd9IGZyYW1lSWQKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gZGF0YWJhc2VOYW1lCisgICAgICov
CisgICAgX2xvYWREYXRhYmFzZTogZnVuY3Rpb24oZnJhbWVJZCwgZGF0YWJhc2VOYW1lKQorICAg
IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSB7SW5kZXhlZERCQWdlbnQuRGF0YWJh
c2VXaXRoT2JqZWN0U3RvcmVzfSBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMKKyAgICAgICAgICov
CisgICAgICAgIGZ1bmN0aW9uIGNhbGxiYWNrKGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCF0aGlzLl9mcmFtZXNbZnJhbWVJZF0pCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICB2YXIgZGF0YWJhc2VNb2RlbCA9IG5ldyBX
ZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJhc2UoZGF0YWJhc2VOYW1lLCBkYXRhYmFz
ZVdpdGhPYmplY3RTdG9yZXMudmVyc2lvbik7CisgICAgICAgICAgICB0aGlzLl9mcmFtZXNbZnJh
bWVJZF0uZGF0YWJhc2VzW2RhdGFiYXNlTmFtZV0gPSBkYXRhYmFzZU1vZGVsOworICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMub2JqZWN0U3Rv
cmVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIG9iamVjdFN0b3JlID0gZGF0
YWJhc2VXaXRoT2JqZWN0U3RvcmVzLm9iamVjdFN0b3Jlc1tpXTsKKyAgICAgICAgICAgICAgICB2
YXIgb2JqZWN0U3RvcmVNb2RlbCA9IG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuT2Jq
ZWN0U3RvcmUob2JqZWN0U3RvcmUubmFtZSwgb2JqZWN0U3RvcmUua2V5UGF0aCk7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBvYmplY3RTdG9yZS5pbmRleGVzLmxlbmd0aDsg
KytqKSB7CisgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmVJbmRleCA9IG9iamVj
dFN0b3JlLmluZGV4ZXNbal07CisgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqZWN0U3RvcmVJ
bmRleE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5PYmplY3RTdG9yZUlu
ZGV4KG9iamVjdFN0b3JlSW5kZXgubmFtZSwgb2JqZWN0U3RvcmVJbmRleC5rZXlQYXRoLCBvYmpl
Y3RTdG9yZUluZGV4LnVuaXF1ZSwgb2JqZWN0U3RvcmVJbmRleC5tdWx0aUVudHJ5KTsKKyAgICAg
ICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlTW9kZWwuaW5kZXhlc1tvYmplY3RTdG9yZUluZGV4
TW9kZWwubmFtZV0gPSBvYmplY3RTdG9yZUluZGV4TW9kZWw7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgIGRhdGFiYXNlTW9kZWwub2JqZWN0U3RvcmVzW29iamVjdFN0b3JlTW9k
ZWwubmFtZV0gPSBvYmplY3RTdG9yZU1vZGVsOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAvLyBGSVhNRTogZGlzcGF0Y2ggZGF0YWJhc2UgbG9hZGVkIGV2ZW50LgorICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5faW5kZXhlZERCUmVxdWVzdE1hbmFnZXIucmVxdWVzdERhdGFiYXNlKGZy
YW1lSWQsIGRhdGFiYXNlTmFtZSwgY2FsbGJhY2suYmluZCh0aGlzKSk7CiAgICAgfQogfQogCkBA
IC0yMzEsNiArMjY1LDU0IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUu
X19wcm90b19fID0gV2ViSW5zcGVjdG9yLk9iamVjdC5wcm90b3R5cGU7CiAKIC8qKgogICogQGNv
bnN0cnVjdG9yCisgKiBAcGFyYW0ge3N0cmluZ30gZnJhbWVJZAorICogQHBhcmFtIHtzdHJpbmd9
IHNlY3VyaXR5T3JpZ2luCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5GcmFtZSA9
IGZ1bmN0aW9uKGZyYW1lSWQsIHNlY3VyaXR5T3JpZ2luKQoreworICAgIHRoaXMuZnJhbWVJZCA9
IGZyYW1lSWQ7CisgICAgdGhpcy5zZWN1cml0eU9yaWdpbiA9IHNlY3VyaXR5T3JpZ2luOworICAg
IHRoaXMuZGF0YWJhc2VzID0ge307Cit9CisKKy8qKgorICogQGNvbnN0cnVjdG9yCisgKiBAcGFy
YW0ge3N0cmluZ30gbmFtZQorICovCitXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuRGF0YWJh
c2UgPSBmdW5jdGlvbihuYW1lLCB2ZXJzaW9uKQoreworICAgIHRoaXMubmFtZSA9IG5hbWU7Cisg
ICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjsKKyAgICB0aGlzLm9iamVjdFN0b3JlcyA9IHt9Owor
fQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAqIEBw
YXJhbSB7c3RyaW5nfSBrZXlQYXRoCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5P
YmplY3RTdG9yZSA9IGZ1bmN0aW9uKG5hbWUsIGtleVBhdGgpCit7CisgICAgdGhpcy5uYW1lID0g
bmFtZTsKKyAgICB0aGlzLmtleVBhdGggPSBrZXlQYXRoOworICAgIHRoaXMuaW5kZXhlcyA9IHt9
OworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgorICogQHBhcmFtIHtzdHJpbmd9IG5hbWUKKyAq
IEBwYXJhbSB7c3RyaW5nfSBrZXlQYXRoCisgKi8KK1dlYkluc3BlY3Rvci5JbmRleGVkREJNb2Rl
bC5PYmplY3RTdG9yZUluZGV4ID0gZnVuY3Rpb24obmFtZSwga2V5UGF0aCwgdW5pcXVlLCBtdWx0
aUVudHJ5KQoreworICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgdGhpcy5rZXlQYXRoID0ga2V5
UGF0aDsKKyAgICB0aGlzLnVuaXF1ZSA9IHVuaXF1ZTsKKyAgICB0aGlzLm11bHRpRW50cnkgPSBt
dWx0aUVudHJ5OworfQorCisvKioKKyAqIEBjb25zdHJ1Y3RvcgogICovCiBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIgPSBmdW5jdGlvbigpCiB7CkBAIC0yNzcsNiArMzU5LDQx
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgfSwKIAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSBmcmFtZUlkCisgICAgICog
QHBhcmFtIHtzdHJpbmd9IGRhdGFiYXNlTmFtZQorICAgICAqIEBwYXJhbSB7ZnVuY3Rpb24oSW5k
ZXhlZERCQWdlbnQuRGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzKX0gY2FsbGJhY2sKKyAgICAgKi8K
KyAgICByZXF1ZXN0RGF0YWJhc2U6IGZ1bmN0aW9uKGZyYW1lSWQsIGRhdGFiYXNlTmFtZSwgY2Fs
bGJhY2spCisgICAgeworICAgICAgICB2YXIgcmVxdWVzdElkID0gdGhpcy5fcmVxdWVzdElkKCk7
CisgICAgICAgIHZhciByZXF1ZXN0ID0gbmV3IFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0
TWFuYWdlci5EYXRhYmFzZVJlcXVlc3QoZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBjYWxsYmFjayk7
CisgICAgICAgIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdID0gcmVx
dWVzdDsgCisKKyAgICAgICAgZnVuY3Rpb24gaW5uZXJDYWxsYmFjayhlcnJvcikKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGVycm9yKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5lcnJv
cigiSW5kZXhlZERCQWdlbnQgZXJyb3I6ICIgKyBlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSW5kZXhlZERCQWdlbnQu
cmVxdWVzdERhdGFiYXNlKHJlcXVlc3RJZCwgZnJhbWVJZCwgZGF0YWJhc2VOYW1lLCBpbm5lckNh
bGxiYWNrKTsKKyAgICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7bnVtYmVyfSBy
ZXF1ZXN0SWQKKyAgICAgKiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LkRhdGFiYXNlV2l0aE9iamVj
dFN0b3Jlc30gZGF0YWJhc2VXaXRoT2JqZWN0U3RvcmVzCisgICAgICovCisgICAgX2RhdGFiYXNl
TG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKKyAg
ICB7CisgICAgICAgIHZhciByZXF1ZXN0ID0gdGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tz
W3JlcXVlc3RJZF07CisgICAgICAgIGlmICghcmVxdWVzdC5jYWxsYmFjaykKKyAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgCisgICAgICAgIHJlcXVlc3QuY2FsbGJhY2soZGF0YWJhc2VXaXRo
T2JqZWN0U3RvcmVzKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7bnVtYmVy
fQogICAgICAqLwogICAgIF9yZXF1ZXN0SWQ6IGZ1bmN0aW9uKCkKQEAgLTI5MywxMSArNDEwLDI5
IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJSZXF1ZXN0TWFuYWdlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgICAgICBpZiAodGhpcy5fcmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNr
c1tyZXF1ZXN0SWRdLmZyYW1lSWQgPT09IGZyYW1lSWQpCiAgICAgICAgICAgICAgICAgZGVsZXRl
IHRoaXMuX3JlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWVDYWxsYmFja3NbcmVxdWVzdElkXTsK
ICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRoaXMu
X3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3JlcXVl
c3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdLmZyYW1lSWQgPT09IGZyYW1lSWQpCisgICAg
ICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0
SWRdOworICAgICAgICB9CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5n
fSBmcmFtZUlkCisgICAgICovCisgICAgX2RhdGFiYXNlUmVtb3ZlZDogZnVuY3Rpb24oZnJhbWVJ
ZCwgZGF0YWJhc2VOYW1lKQorICAgIHsKKyAgICAgICAgZm9yICh2YXIgcmVxdWVzdElkIGluIHRo
aXMuX3JlcXVlc3REYXRhYmFzZUNhbGxiYWNrcykgeworICAgICAgICAgICAgaWYgKHRoaXMuX3Jl
cXVlc3REYXRhYmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdLmZyYW1lSWQgPT09IGZyYW1lSWQgJiYg
dGhpcy5fcmVxdWVzdERhdGFiYXNlQ2FsbGJhY2tzW3JlcXVlc3RJZF0uZGF0YWJhc2VOYW1lID09
PSBkYXRhYmFzZU5hbWUpCisgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlcXVlc3REYXRh
YmFzZUNhbGxiYWNrc1tyZXF1ZXN0SWRdOworICAgICAgICB9CiAgICAgfSwKIAogICAgIF9yZXNl
dDogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdGhpcy5fcmVxdWVzdERhdGFiYXNlTmFtZXNG
b3JGcmFtZUNhbGxiYWNrcyA9IHt9OworICAgICAgICB0aGlzLl9yZXF1ZXN0RGF0YWJhc2VDYWxs
YmFja3MgPSB7fTsKKwogICAgIH0KIH0KIApAQCAtMzEyLDYgKzQ0NywxNiBAQCBXZWJJbnNwZWN0
b3IuSW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VzRm9yRnJhbWVSZXF1ZXN0ID0gZnVu
Y3Rpb24oZnJhbWVJZAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCUmVxdWVzdE1hbmFnZXIuRGF0YWJhc2VSZXF1ZXN0ID0gZnVuY3Rpb24oZnJhbWVJ
ZCwgZGF0YWJhc2VOYW1lLCBjYWxsYmFjaykKK3sKKyAgICB0aGlzLmZyYW1lSWQgPSBmcmFtZUlk
OworICAgIHRoaXMuZGF0YWJhc2VOYW1lID0gZGF0YWJhc2VOYW1lOworICAgIHRoaXMuY2FsbGJh
Y2sgPSBjYWxsYmFjazsKK30KKworLyoqCisgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRz
IHtJbmRleGVkREJBZ2VudC5EaXNwYXRjaGVyfQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSW5k
ZXhlZERCUmVxdWVzdE1hbmFnZXJ9IGluZGV4ZWREQlJlcXVlc3RNYW5hZ2VyCiAgKi8KQEAgLTMy
OCw1ICs0NzMsMTUgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQkRpc3BhdGNoZXIucHJvdG90eXBl
ID0gewogICAgIGRhdGFiYXNlTmFtZXNMb2FkZWQ6IGZ1bmN0aW9uKHJlcXVlc3RJZCwgc2VjdXJp
dHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lcykKICAgICB7CiAgICAgICAgIHRoaXMuX2FnZW50V3Jh
cHBlci5fZGF0YWJhc2VOYW1lc0xvYWRlZChyZXF1ZXN0SWQsIHNlY3VyaXR5T3JpZ2luV2l0aERh
dGFiYXNlTmFtZXMpOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge251bWJlcn0g
cmVxdWVzdElkCisgICAgICogQHBhcmFtIHtJbmRleGVkREJBZ2VudC5EYXRhYmFzZVdpdGhPYmpl
Y3RTdG9yZXN9IGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcworICAgICAqLworICAgIGRhdGFiYXNl
TG9hZGVkOiBmdW5jdGlvbihyZXF1ZXN0SWQsIGRhdGFiYXNlV2l0aE9iamVjdFN0b3JlcykKKyAg
ICB7CisgICAgICAgIHRoaXMuX2FnZW50V3JhcHBlci5fZGF0YWJhc2VMb2FkZWQocmVxdWVzdElk
LCBkYXRhYmFzZVdpdGhPYmplY3RTdG9yZXMpOwogICAgIH0KIH0KKwo=
</data>
<flag name="review"
          id="124652"
          type_id="1"
          status="+"
          setter="yurys"
    />
          </attachment>
      

    </bug>

</bugzilla>