<?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>101457</bug_id>
          
          <creation_ts>2012-11-07 05:39:27 -0800</creation_ts>
          <short_desc>Web Inspector: Migrate inspector IndexedDB support to frontend API.</short_desc>
          <delta_ts>2012-11-07 23:33:05 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>alecflett</cc>
    
    <cc>apavlov</cc>
    
    <cc>jsbell</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>760579</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-07 05:39:27 -0800</bug_when>
    <thetext>Patch to follow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760585</commentid>
    <comment_count>1</comment_count>
      <attachid>172774</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-07 05:43:45 -0800</bug_when>
    <thetext>Created attachment 172774
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760601</commentid>
    <comment_count>2</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-07 05:52:07 -0800</bug_when>
    <thetext>Joshua, Alec could one of you please check sanity of this before I land?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760831</commentid>
    <comment_count>3</comment_count>
      <attachid>172774</attachid>
    <who name="Alec Flett">alecflett</who>
    <bug_when>2012-11-07 10:21:40 -0800</bug_when>
    <thetext>Comment on attachment 172774
Patch

One totally minor issue...other than that this looks good.


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

&gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:453
&gt; +            idbCursor-&gt;close();

Can you avoid calling close() and just let the cursor go out of scope (close() is not a method in the spec, so JS just lets it get GC&apos;ed - we&apos;ll probably be making it private soon)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>760938</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-07 11:44:06 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 172774 [details])
&gt; One totally minor issue...other than that this looks good.
&gt; 
&gt; 
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=172774&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/InspectorIndexedDBAgent.cpp:453
&gt; &gt; +            idbCursor-&gt;close();
&gt; 
&gt; Can you avoid calling close() and just let the cursor go out of scope (close() is not a method in the spec, so JS just lets it get GC&apos;ed - we&apos;ll probably be making it private soon)

Sure, I actually forgot to remove it when debugging an issue of inspector blocking database.
It turned out that I just needed to call database.close() instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>761380</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-07 23:33:05 -0800</bug_when>
    <thetext>Committed r133855: &lt;http://trac.webkit.org/changeset/133855&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>172774</attachid>
            <date>2012-11-07 05:43:45 -0800</date>
            <delta_ts>2012-11-07 11:45:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101457-20121107174155.patch</filename>
            <type>text/plain</type>
            <size>39258</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMzNzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2QzYjYxMDcyMTdhNmMz
MzFkNDY3MGJlOWQ2ZDc5OTJhMjBhZmE5Yy4uMTc1YWRiYzkwNDY1NzM5OWY2MWJmN2U4NjExNWRj
N2QxNzAyMGVlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEyLTExLTA3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IE1pZ3JhdGUgaW5zcGVjdG9yIEluZGV4ZWREQiBzdXBwb3J0IHRvIGZyb250ZW5kIEFQSS4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTQ1Nwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1pZ3JhdGVk
IEluZGV4ZWREQiBzdXBwb3J0IHRvIHdlYiBmYWNpbmcgSW5kZXhlZERCIEFQSS4KKworICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjphc3NlcnRJREJGYWN0b3J5KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLnByb3RvdHlwZS5pbm5lckNhbGxiYWNrKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUuX3JlcXVlc3REYXRhKToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLklEQkRhdGFWaWV3LnByb3RvdHlwZS5fdXBkYXRlRGF0YS5jYWxsYmFjayk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlLl91cGRhdGVEYXRh
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5JREJEYXRhR3JpZE5vZGUpOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLklEQkRhdGFHcmlkTm9kZS5wcm90b3R5cGUuY3JlYXRlQ2VsbCk6CisKIDIwMTIt
MTEtMDcgIERhbiBDYXJuZXkgIDxkY2FybmV5QGdvb2dsZS5jb20+CiAKICAgICAgICAgW1Y4XSBD
bGVhbnVwIFY4RE9NV3JhcHBlcjo6Z2V0Q2FjaGVkV3JhcHBlcgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDU3YmQ3OWE3MmZjMGQ4ODk2NzFmMGZjYmY2YjM5Zjli
OWVjNDljYWYuLjUxZDg2Yjg2MWNiNWZlNGU1MTY5YjQyYWJmYTg1MTFkNjViZGM5ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTEyNDIsOCArMTI0Miw4IEBA
CiAgICAgICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAgICAgICAiZGVz
Y3JpcHRpb24iOiAiRGF0YSBlbnRyeS4iLAogICAgICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjog
WwotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICIkcmVmIjogIktleSIsICJk
ZXNjcmlwdGlvbiI6ICJLZXkuIiB9LAotICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInBy
aW1hcnlLZXkiLCAiJHJlZiI6ICJLZXkiLCAiZGVzY3JpcHRpb24iOiAiUHJpbWFyeSBrZXkuIiB9
LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImtleSIsICIkcmVmIjogIlJ1bnRpbWUu
UmVtb3RlT2JqZWN0IiwgImRlc2NyaXB0aW9uIjogIktleS4iIH0sCisgICAgICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAicHJpbWFyeUtleSIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0
IiwgImRlc2NyaXB0aW9uIjogIlByaW1hcnkga2V5LiIgfSwKICAgICAgICAgICAgICAgICAgICAg
eyAibmFtZSI6ICJ2YWx1ZSIsICIkcmVmIjogIlJ1bnRpbWUuUmVtb3RlT2JqZWN0IiwgImRlc2Ny
aXB0aW9uIjogIlZhbHVlLiIgfQogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmNwcAppbmRleCA2MzQwMWRkNmViYWFmY2YxNjdhNTM5ZDAzYmJjYzVhOGE3NmFjZTg1Li5hY2Vl
MjZlMDY2YjRlMTAyZjFmZjJmMzk3Yjk1ZTM4NzgyYjFhMGNlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTM2LDM0
ICszNiwzMyBAQAogCiAjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkRPTVdpbmRvd0luZGV4ZWREYXRhYmFzZS5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudExpc3RlbmVy
LmgiCisjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgi
CiAjaW5jbHVkZSAiRnJhbWUuaCIKLSNpbmNsdWRlICJHcm91cFNldHRpbmdzLmgiCi0jaW5jbHVk
ZSAiSURCQ2FsbGJhY2tzLmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yLmgiCi0jaW5jbHVkZSAiSURC
Q3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZElu
dGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkN1cnNvcldpdGhWYWx1ZS5oIgorI2luY2x1ZGUgIklE
QkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSURCRGF0YWJhc2VDYWxsYmFja3MuaCIKLSNpbmNsdWRl
ICJJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIgotI2luY2x1ZGUgIklEQkluZGV4QmFja2Vu
ZEludGVyZmFjZS5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnkuaCIKKyNpbmNsdWRlICJJREJJbmRl
eC5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQktleVBhdGguaCIKICNpbmNs
dWRlICJJREJLZXlSYW5nZS5oIgogI2luY2x1ZGUgIklEQk1ldGFkYXRhLmgiCi0jaW5jbHVkZSAi
SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlLmgiCi0jaW5jbHVkZSAiSURCUGVuZGluZ1Ry
YW5zYWN0aW9uTW9uaXRvci5oIgorI2luY2x1ZGUgIklEQk9iamVjdFN0b3JlLmgiCisjaW5jbHVk
ZSAiSURCT3BlbkRCUmVxdWVzdC5oIgorI2luY2x1ZGUgIklEQlJlcXVlc3QuaCIKICNpbmNsdWRl
ICJJREJUcmFuc2FjdGlvbi5oIgotI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZS5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
RnJvbnRlbmQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JTdGF0ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclZhbHVlcy5oIgogI2luY2x1ZGUg
Ikluc3RydW1lbnRpbmdBZ2VudHMuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUGFn
ZUdyb3VwLmgiCi0jaW5jbHVkZSAiUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmgiCiAjaW5jbHVk
ZSAiU2VjdXJpdHlPcmlnaW4uaCIKIAogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTgxLDYg
KzgwLDcgQEAgdXNpbmcgV2ViQ29yZTo6VHlwZUJ1aWxkZXI6OkluZGV4ZWREQjo6T2JqZWN0U3Rv
cmVJbmRleDsKIHR5cGVkZWYgV2ViQ29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6Oklu
ZGV4ZWREQkNvbW1hbmRIYW5kbGVyOjpSZXF1ZXN0RGF0YWJhc2VOYW1lc0ZvckZyYW1lQ2FsbGJh
Y2sgUmVxdWVzdERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrOwogdHlwZWRlZiBXZWJDb3Jl
OjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRsZXI6OlJl
cXVlc3REYXRhYmFzZUNhbGxiYWNrIFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrOwogdHlwZWRlZiBX
ZWJDb3JlOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcjo6SW5kZXhlZERCQ29tbWFuZEhhbmRs
ZXI6OlJlcXVlc3REYXRhQ2FsbGJhY2sgUmVxdWVzdERhdGFDYWxsYmFjazsKK3R5cGVkZWYgV2Vi
Q29yZTo6SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OkNhbGxiYWNrQmFzZSBSZXF1ZXN0Q2Fs
bGJhY2s7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsNTkgKzkwLDggQEAgc3RhdGlj
IGNvbnN0IGNoYXIgaW5kZXhlZERCQWdlbnRFbmFibGVkW10gPSAiaW5kZXhlZERCQWdlbnRFbmFi
bGVkIjsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgSW5zcGVjdG9ySURCQ2FsbGJhY2sgOiBwdWJs
aWMgSURCQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5JbnNwZWN0b3JJREJDYWxs
YmFjaygpIHsgfQotCi0gICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZUVycm9yPikgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25T
dWNjZXNzKFBhc3NSZWZQdHI8SURCQ3Vyc29yQmFja2VuZEludGVyZmFjZT4sIFBhc3NSZWZQdHI8
SURCS2V5PiwgUGFzc1JlZlB0cjxJREJLZXk+LCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4pIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCS2V5PikgT1ZFUlJJREUgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVy
ZmFjZT4pIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
b25TdWNjZXNzKFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiwgUGFzc1JlZlB0cjxJ
REJLZXk+LCBjb25zdCBJREJLZXlQYXRoJikgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG9uU3VjY2VzcyhpbnQ2NF90IHZhbHVlKSBPVkVSUklERSB7IHJldHVybiBvblN1Y2Nlc3MoU2Vy
aWFsaXplZFNjcmlwdFZhbHVlOjpudW1iZXJWYWx1ZSh2YWx1ZSkpOyB9Ci0gICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcygpIE9WRVJSSURFIHsgcmV0dXJuIG9uU3VjY2VzcyhTZXJpYWxpemVkU2Ny
aXB0VmFsdWU6OnVuZGVmaW5lZFZhbHVlKCkpOyB9Ci0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhQYXNzUmVmUHRyPElEQktleT4sIFBhc3NSZWZQdHI8SURCS2V5PiwgUGFzc1JlZlB0cjxTZXJp
YWxpemVkU2NyaXB0VmFsdWU+KSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzV2l0aFByZWZldGNoKGNvbnN0IFZlY3RvcjxSZWZQdHI8SURCS2V5PiA+JiwgY29uc3QgVmVj
dG9yPFJlZlB0cjxJREJLZXk+ID4mLCBjb25zdCBWZWN0b3I8UmVmUHRyPFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZT4gPiYpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvblVwZ3JhZGVOZWVk
ZWQoaW50NjRfdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRl
cmZhY2U+LCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4p
IE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBvbkJsb2NrZWQoKSBPVkVSUklERSB7IH0K
LX07Ci0KLWNsYXNzIEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzIDogcHVibGljIElEQkRh
dGFiYXNlQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JJREJEYXRhYmFzZUNhbGxiYWNrcz4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgSW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3MoKSk7Ci0gICAgfQotCi0g
ICAgdmlydHVhbCB+SW5zcGVjdG9ySURCRGF0YWJhc2VDYWxsYmFja3MoKSB7IH0KLQotICAgIHZp
cnR1YWwgdm9pZCBvblZlcnNpb25DaGFuZ2UoY29uc3QgU3RyaW5nJiB2ZXJzaW9uKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgb25WZXJzaW9uQ2hhbmdlKGludDY0X3Qgb2xkVmVyc2lvbiwgaW50NjRf
dCBuZXdWZXJzaW9uKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgb25Gb3JjZWRDbG9zZSgpIHsgfQot
cHJpdmF0ZToKLSAgICBJbnNwZWN0b3JJREJEYXRhYmFzZUNhbGxiYWNrcygpIHsgfQotfTsKLQot
Ci1jbGFzcyBJbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNrIDogcHVibGljIElEQlRyYW5z
YWN0aW9uQ2FsbGJhY2tzIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0
b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNrPiBjcmVhdGUoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBJbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxiYWNrKCkpOwotICAgIH0K
LQotICAgIHZpcnR1YWwgfkluc3BlY3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBvbkFib3J0KFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBvbkNvbXBsZXRlKCkgeyB9Ci1wcml2YXRlOgotICAgIEluc3Bl
Y3RvcklEQlRyYW5zYWN0aW9uQ2FsbGJhY2soKSB7IH0KLX07Ci0KLWNsYXNzIEdldERhdGFiYXNl
TmFtZXNDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxsYmFjayB7CitjbGFzcyBHZXRE
YXRhYmFzZU5hbWVzQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CisgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoR2V0RGF0YWJhc2VOYW1lc0NhbGxiYWNrKTsKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IGNyZWF0ZShQYXNzUmVm
UHRyPFJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNr
LCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luKQogICAgIHsKQEAgLTE1MSwxMSArMTAwLDMy
IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfkdldERhdGFiYXNlTmFtZXNDYWxsYmFjaygpIHsg
fQogCi0gICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+
IGRhdGFiYXNlTmFtZXNMaXN0KQorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2
ZW50TGlzdGVuZXImIG90aGVyKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMg
PT0gJm90aGVyOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgRXZlbnQqIGV2ZW50KSBPVkVSUklERQogICAgIHsKICAgICAgICAg
aWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKGV2ZW50LT50eXBlKCkgIT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCkg
eworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVk
IGV2ZW50IHR5cGUuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAorICAgICAg
ICBJREJSZXF1ZXN0KiBpZGJSZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8SURCUmVxdWVzdCo+KGV2ZW50
LT50YXJnZXQoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBSZWZQ
dHI8SURCQW55PiByZXF1ZXN0UmVzdWx0ID0gaWRiUmVxdWVzdC0+cmVzdWx0KGVjKTsKKyAgICAg
ICAgaWYgKGVjKSB7CisgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUo
IkNvdWxkIG5vdCBnZXQgcmVzdWx0IGluIGNhbGxiYWNrLiIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIGlmIChyZXF1ZXN0UmVzdWx0LT50eXBlKCkgIT0gSURCQW55
OjpET01TdHJpbmdMaXN0VHlwZSkgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNl
bmRGYWlsdXJlKCJVbmV4cGVjdGVkIHJlc3VsdCB0eXBlLiIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBkYXRhYmFzZU5hbWVz
TGlzdCA9IHJlcXVlc3RSZXN1bHQtPmRvbVN0cmluZ0xpc3QoKTsKICAgICAgICAgUmVmUHRyPFR5
cGVCdWlsZGVyOjpBcnJheTxTdHJpbmc+ID4gZGF0YWJhc2VOYW1lcyA9IFR5cGVCdWlsZGVyOjpB
cnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBk
YXRhYmFzZU5hbWVzTGlzdC0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAgICAgIGRhdGFiYXNlTmFt
ZXMtPmFkZEl0ZW0oZGF0YWJhc2VOYW1lc0xpc3QtPml0ZW0oaSkpOwpAQCAtMTYzLDQ4ICsxMzMs
MzIgQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VO
YW1lcz4gcmVzdWx0ID0gU2VjdXJpdHlPcmlnaW5XaXRoRGF0YWJhc2VOYW1lczo6Y3JlYXRlKCkK
ICAgICAgICAgICAgIC5zZXRTZWN1cml0eU9yaWdpbihtX3NlY3VyaXR5T3JpZ2luKQogICAgICAg
ICAgICAgLnNldERhdGFiYXNlTmFtZXMoZGF0YWJhc2VOYW1lcyk7Ci0KICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRTdWNjZXNzKHJlc3VsdCk7CiAgICAgfQogCiBwcml2YXRlOgogICAg
IEdldERhdGFiYXNlTmFtZXNDYWxsYmFjayhQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZU5hbWVz
Rm9yRnJhbWVDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5
T3JpZ2luKQotICAgICAgICA6IG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKKyAg
ICAgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVuZXJUeXBl
KQorICAgICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAg
LCBtX3NlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKSB7IH0KICAgICBSZWZQdHI8UmVxdWVz
dERhdGFiYXNlTmFtZXNGb3JGcmFtZUNhbGxiYWNrPiBtX3JlcXVlc3RDYWxsYmFjazsKICAgICBT
dHJpbmcgbV9zZWN1cml0eU9yaWdpbjsKIH07CiAKLWNsYXNzIERhdGFiYXNlQ29ubmVjdGlvbiB7
Ci1wdWJsaWM6Ci0gICAgRGF0YWJhc2VDb25uZWN0aW9uKCkKLSAgICAgICAgOiBtX2lkYkRhdGFi
YXNlQ2FsbGJhY2tzKEluc3BlY3RvcklEQkRhdGFiYXNlQ2FsbGJhY2tzOjpjcmVhdGUoKSkgeyB9
Ci0KLSAgICB+RGF0YWJhc2VDb25uZWN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlmIChtX2lkYkRh
dGFiYXNlKQotICAgICAgICAgICAgbV9pZGJEYXRhYmFzZS0+Y2xvc2UobV9pZGJEYXRhYmFzZUNh
bGxiYWNrcyk7Ci0gICAgfQotCi0gICAgdm9pZCBjb25uZWN0KFBhc3NSZWZQdHI8SURCRGF0YWJh
c2VCYWNrZW5kSW50ZXJmYWNlPiBkYXRhYmFzZSkgeyBtX2lkYkRhdGFiYXNlID0gZGF0YWJhc2U7
IH0KLSAgICBQYXNzUmVmUHRyPElEQkRhdGFiYXNlQ2FsbGJhY2tzPiBjYWxsYmFja3MoKSB7IHJl
dHVybiBtX2lkYkRhdGFiYXNlQ2FsbGJhY2tzOyB9Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPElE
QkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gbV9pZGJEYXRhYmFzZTsKLSAgICBSZWZQdHI8SURC
RGF0YWJhc2VDYWxsYmFja3M+IG1faWRiRGF0YWJhc2VDYWxsYmFja3M7Ci19OwotCiBjbGFzcyBF
eGVjdXRhYmxlV2l0aERhdGFiYXNlIDogcHVibGljIFJlZkNvdW50ZWQ8RXhlY3V0YWJsZVdpdGhE
YXRhYmFzZT4gewogcHVibGljOgorICAgIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKKyAgICAgICAgOiBtX2NvbnRleHQoY29udGV4dCkgeyB9
CiAgICAgdmlydHVhbCB+RXhlY3V0YWJsZVdpdGhEYXRhYmFzZSgpIHsgfTsKLSAgICB2b2lkIHN0
YXJ0KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiwgU2VjdXJpdHlPcmlnaW4qLCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUpOwotICAgIHZvaWQg
Y29ubmVjdChQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gZGF0YWJhc2Up
IHsgbV9jb25uZWN0aW9uLmNvbm5lY3QoZGF0YWJhc2UpOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4
ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CisgICAg
dm9pZCBzdGFydChJREJGYWN0b3J5KiwgU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBTdHJpbmcmIGRh
dGFiYXNlTmFtZSk7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRh
YmFzZT4pID0gMDsKKyAgICB2aXJ0dWFsIFJlcXVlc3RDYWxsYmFjayogcmVxdWVzdENhbGxiYWNr
KCkgPSAwOworICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQoKSB7IHJldHVybiBt
X2NvbnRleHQ7IH07CiBwcml2YXRlOgotICAgIERhdGFiYXNlQ29ubmVjdGlvbiBtX2Nvbm5lY3Rp
b247CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogbV9jb250ZXh0OwogfTsKIAotY2xhc3Mg
T3BlbkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgSW5zcGVjdG9ySURCQ2FsbGJhY2sgeworY2xh
c3MgT3BlbkRhdGFiYXNlQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkRhdGFiYXNlQ2FsbGJhY2s+IGNyZWF0ZShFeGVj
dXRhYmxlV2l0aERhdGFiYXNlKiBleGVjdXRhYmxlV2l0aERhdGFiYXNlKQogICAgIHsKQEAgLTIx
Myw0OSArMTY3LDc2IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgfk9wZW5EYXRhYmFzZUNhbGxi
YWNrKCkgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8SURCRGF0
YWJhc2VCYWNrZW5kSW50ZXJmYWNlPiBwcnBEYXRhYmFzZSkKKyAgICB2aXJ0dWFsIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiBvdGhlcikgT1ZFUlJJREUKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzID09ICZvdGhlcjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgaGFu
ZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEV2ZW50KiBldmVudCkgT1ZFUlJJREUK
ICAgICB7Ci0gICAgICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+IGlkYkRh
dGFiYXNlID0gcHJwRGF0YWJhc2U7Ci0gICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRhYmFzZS0+
Y29ubmVjdChpZGJEYXRhYmFzZSk7CisgICAgICAgIGlmIChldmVudC0+dHlwZSgpICE9IGV2ZW50
TmFtZXMoKS5zdWNjZXNzRXZlbnQpIHsKKyAgICAgICAgICAgIG1fZXhlY3V0YWJsZVdpdGhEYXRh
YmFzZS0+cmVxdWVzdENhbGxiYWNrKCktPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5
cGUuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJREJPcGVu
REJSZXF1ZXN0KiBpZGJPcGVuREJSZXF1ZXN0ID0gc3RhdGljX2Nhc3Q8SURCT3BlbkRCUmVxdWVz
dCo+KGV2ZW50LT50YXJnZXQoKSk7CisgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAg
ICAgICBSZWZQdHI8SURCQW55PiByZXF1ZXN0UmVzdWx0ID0gaWRiT3BlbkRCUmVxdWVzdC0+cmVz
dWx0KGVjKTsKKyAgICAgICAgaWYgKGVjKSB7CisgICAgICAgICAgICBtX2V4ZWN1dGFibGVXaXRo
RGF0YWJhc2UtPnJlcXVlc3RDYWxsYmFjaygpLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCBy
ZXN1bHQgaW4gY2FsbGJhY2suIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKHJlcXVlc3RSZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkRhdGFiYXNlVHlw
ZSkgeworICAgICAgICAgICAgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlLT5yZXF1ZXN0Q2FsbGJh
Y2soKS0+c2VuZEZhaWx1cmUoIlVuZXhwZWN0ZWQgcmVzdWx0IHR5cGUuIik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBSZWZQdHI8SURCRGF0YWJhc2U+IGlkYkRh
dGFiYXNlID0gcmVxdWVzdFJlc3VsdC0+aWRiRGF0YWJhc2UoKTsKICAgICAgICAgbV9leGVjdXRh
YmxlV2l0aERhdGFiYXNlLT5leGVjdXRlKGlkYkRhdGFiYXNlKTsKKyAgICAgICAgaWRiRGF0YWJh
c2UtPmNsb3NlKCk7CiAgICAgfQogCiBwcml2YXRlOgogICAgIE9wZW5EYXRhYmFzZUNhbGxiYWNr
KEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UqIGV4ZWN1dGFibGVXaXRoRGF0YWJhc2UpCi0gICAgICAg
IDogbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlKGV4ZWN1dGFibGVXaXRoRGF0YWJhc2UpIHsgfQor
ICAgICAgICA6IEV2ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5
cGUpCisgICAgICAgICwgbV9leGVjdXRhYmxlV2l0aERhdGFiYXNlKGV4ZWN1dGFibGVXaXRoRGF0
YWJhc2UpIHsgfQogICAgIFJlZlB0cjxFeGVjdXRhYmxlV2l0aERhdGFiYXNlPiBtX2V4ZWN1dGFi
bGVXaXRoRGF0YWJhc2U7CiB9OwogCi12b2lkIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2U6OnN0YXJ0
KElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgZGF0YWJhc2VOYW1lKQordm9pZCBFeGVjdXRhYmxlV2l0aERhdGFiYXNlOjpzdGFydChJ
REJGYWN0b3J5KiBpZGJGYWN0b3J5LCBTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKQogewogICAgIFJlZlB0cjxPcGVuRGF0YWJhc2VDYWxs
YmFjaz4gY2FsbGJhY2sgPSBPcGVuRGF0YWJhc2VDYWxsYmFjazo6Y3JlYXRlKHRoaXMpOwotICAg
IGlkYkZhY3RvcnktPm9wZW4oZGF0YWJhc2VOYW1lLCBJREJEYXRhYmFzZU1ldGFkYXRhOjpOb0lu
dFZlcnNpb24sIGNhbGxiYWNrLCBtX2Nvbm5lY3Rpb24uY2FsbGJhY2tzKCksIHNlY3VyaXR5T3Jp
Z2luLCBjb250ZXh0LCBTdHJpbmcoKSk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
UmVmUHRyPElEQk9wZW5EQlJlcXVlc3Q+IGlkYk9wZW5EQlJlcXVlc3QgPSBpZGJGYWN0b3J5LT5v
cGVuKGNvbnRleHQoKSwgZGF0YWJhc2VOYW1lLCBlYyk7CisgICAgaWYgKGVjKSB7CisgICAgICAg
IHJlcXVlc3RDYWxsYmFjaygpLT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IG9wZW4gZGF0YWJhc2Uu
Iik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWRiT3BlbkRCUmVxdWVzdC0+YWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBjYWxsYmFjaywgZmFsc2UpOwog
fQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IHRy
YW5zYWN0aW9uRm9yRGF0YWJhc2UoSURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlKiBpZGJEYXRh
YmFzZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUpCitzdGF0aWMgUGFzc1JlZlB0cjxJ
REJUcmFuc2FjdGlvbj4gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0LCBJREJEYXRhYmFzZSogaWRiRGF0YWJhc2UsIGNv
bnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQogewogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiB0cmFuc2FjdGlvbk9iamVjdFN0b3JlTmFtZXNM
aXN0ID0gRE9NU3RyaW5nTGlzdDo6Y3JlYXRlKCk7Ci0gICAgdHJhbnNhY3Rpb25PYmplY3RTdG9y
ZU5hbWVzTGlzdC0+YXBwZW5kKG9iamVjdFN0b3JlTmFtZSk7Ci0gICAgUmVmUHRyPElEQlRyYW5z
YWN0aW9uQmFja2VuZEludGVyZmFjZT4gaWRiVHJhbnNhY3Rpb24gPSBpZGJEYXRhYmFzZS0+dHJh
bnNhY3Rpb24odHJhbnNhY3Rpb25PYmplY3RTdG9yZU5hbWVzTGlzdC5nZXQoKSwgSURCVHJhbnNh
Y3Rpb246OlJFQURfT05MWSwgZWMpOworICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbj4gaWRiVHJh
bnNhY3Rpb24gPSBpZGJEYXRhYmFzZS0+dHJhbnNhY3Rpb24oc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCwgb2JqZWN0U3RvcmVOYW1lLCBJREJUcmFuc2FjdGlvbjo6bW9kZVJlYWRPbmx5KCksIGVjKTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiBpZGJUcmFuc2FjdGlv
bjsKIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
PiBvYmplY3RTdG9yZUZvclRyYW5zYWN0aW9uKElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFj
ZSogaWRiVHJhbnNhY3Rpb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lKQorc3RhdGlj
IFBhc3NSZWZQdHI8SURCT2JqZWN0U3RvcmU+IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oSURC
VHJhbnNhY3Rpb24qIGlkYlRyYW5zYWN0aW9uLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFt
ZSkKIHsKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBSZWZQdHI8SURCT2JqZWN0U3Rv
cmVCYWNrZW5kSW50ZXJmYWNlPiBpZGJPYmplY3RTdG9yZSA9IGlkYlRyYW5zYWN0aW9uLT5vYmpl
Y3RTdG9yZShvYmplY3RTdG9yZU5hbWUsIGVjKTsKKyAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+
IGlkYk9iamVjdFN0b3JlID0gaWRiVHJhbnNhY3Rpb24tPm9iamVjdFN0b3JlKG9iamVjdFN0b3Jl
TmFtZSwgZWMpOwogICAgIGlmIChlYykKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJuIGlk
Yk9iamVjdFN0b3JlOwogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRl
cmZhY2U+IGluZGV4Rm9yT2JqZWN0U3RvcmUoSURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNl
KiBpZGJPYmplY3RTdG9yZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUpCitzdGF0aWMgUGFzc1Jl
ZlB0cjxJREJJbmRleD4gaW5kZXhGb3JPYmplY3RTdG9yZShJREJPYmplY3RTdG9yZSogaWRiT2Jq
ZWN0U3RvcmUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lKQogewogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIFJlZlB0cjxJREJJbmRleEJhY2tlbmRJbnRlcmZhY2U+IGlkYkluZGV4ID0g
aWRiT2JqZWN0U3RvcmUtPmluZGV4KGluZGV4TmFtZSwgZWMpOworICAgIFJlZlB0cjxJREJJbmRl
eD4gaWRiSW5kZXggPSBpZGJPYmplY3RTdG9yZS0+aW5kZXgoaW5kZXhOYW1lLCBlYyk7CiAgICAg
aWYgKGVjKQogICAgICAgICByZXR1cm4gMDsKICAgICByZXR1cm4gaWRiSW5kZXg7CkBAIC0yODgs
MTkgKzI2OSwxOSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxLZXlQYXRoPiBrZXlQYXRoRnJvbUlEQktl
eVBhdGgoY29uc3QgSURCS2V5UGF0aCYgaWRiS2V5UGF0aCkKICAgICByZXR1cm4ga2V5UGF0aC5y
ZWxlYXNlKCk7CiB9CiAKLWNsYXNzIERhdGFiYXNlTG9hZGVyQ2FsbGJhY2sgOiBwdWJsaWMgRXhl
Y3V0YWJsZVdpdGhEYXRhYmFzZSB7CitjbGFzcyBEYXRhYmFzZUxvYWRlciA6IHB1YmxpYyBFeGVj
dXRhYmxlV2l0aERhdGFiYXNlIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxEYXRh
YmFzZUxvYWRlckNhbGxiYWNrPiBjcmVhdGUoUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YWJhc2VDYWxs
YmFjaz4gcmVxdWVzdENhbGxiYWNrKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFiYXNlTG9h
ZGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxS
ZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFj
aykpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFiYXNlTG9hZGVyKGNvbnRleHQs
IHJlcXVlc3RDYWxsYmFjaykpOwogICAgIH0KIAotICAgIHZpcnR1YWwgfkRhdGFiYXNlTG9hZGVy
Q2FsbGJhY2soKSB7IH0KKyAgICB2aXJ0dWFsIH5EYXRhYmFzZUxvYWRlcigpIHsgfQogCi0gICAg
dmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZh
Y2U+IHBycERhdGFiYXNlKQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlKFBhc3NSZWZQdHI8SURC
RGF0YWJhc2U+IHBycERhdGFiYXNlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPElEQkRhdGFiYXNl
QmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFzZTsKLSAgICAgICAgaWYg
KCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKKyAgICAgICAgUmVmUHRyPElEQkRhdGFi
YXNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBpZiAoIXJlcXVlc3RDYWxs
YmFjaygpLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGNvbnN0
IElEQkRhdGFiYXNlTWV0YWRhdGEgZGF0YWJhc2VNZXRhZGF0YSA9IGlkYkRhdGFiYXNlLT5tZXRh
ZGF0YSgpOwpAQCAtMzM5LDkgKzMyMCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1fcmVxdWVzdENh
bGxiYWNrLT5zZW5kU3VjY2VzcyhyZXN1bHQpOwogICAgIH0KIAorICAgIHZpcnR1YWwgUmVxdWVz
dENhbGxiYWNrKiByZXF1ZXN0Q2FsbGJhY2soKSB7IHJldHVybiBtX3JlcXVlc3RDYWxsYmFjay5n
ZXQoKTsgfQogcHJpdmF0ZToKLSAgICBEYXRhYmFzZUxvYWRlckNhbGxiYWNrKFBhc3NSZWZQdHI8
UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKLSAgICAgICAgOiBtX3Jl
cXVlc3RDYWxsYmFjayhyZXF1ZXN0Q2FsbGJhY2spIHsgfQorICAgIERhdGFiYXNlTG9hZGVyKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8UmVxdWVzdERhdGFiYXNl
Q2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaykKKyAgICAgICAgOiBFeGVjdXRhYmxlV2l0aERhdGFi
YXNlKGNvbnRleHQpCisgICAgICAgICwgbV9yZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNr
KSB7IH0KICAgICBSZWZQdHI8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+IG1fcmVxdWVzdENhbGxi
YWNrOwogfTsKIApAQCAtNDE2LDE3NiArMzk5LDE0NyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxJREJL
ZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoSW5zcGVjdG9yT2JqZWN0KiBrZXlSYW5n
ZQogICAgIHJldHVybiBpZGJLZXlSYW5nZS5yZWxlYXNlKCk7CiB9CiAKLXN0YXRpYyBQYXNzUmVm
UHRyPEtleT4ga2V5RnJvbUlEQktleShJREJLZXkqIGlkYktleSkKLXsKLSAgICBpZiAoIWlkYktl
eSB8fCAhaWRiS2V5LT5pc1ZhbGlkKCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVmUHRy
PEtleT4ga2V5OwotICAgIHN3aXRjaCAoaWRiS2V5LT50eXBlKCkpIHsKLSAgICBjYXNlIElEQktl
eTo6SW52YWxpZFR5cGU6Ci0gICAgY2FzZSBJREJLZXk6Ok1pblR5cGU6Ci0gICAgICAgIHJldHVy
biAwOwotICAgIGNhc2UgSURCS2V5OjpOdW1iZXJUeXBlOiB7Ci0gICAgICAgIFJlZlB0cjxLZXk+
IHRtcEtleSA9IEtleTo6Y3JlYXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6Ok51bWJlcik7Ci0gICAg
ICAgIGtleSA9IHRtcEtleTsKLSAgICAgICAga2V5LT5zZXROdW1iZXIoaWRiS2V5LT5udW1iZXIo
KSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIElEQktleTo6U3RyaW5nVHlwZTog
ewotICAgICAgICBSZWZQdHI8S2V5PiB0bXBLZXkgPSBLZXk6OmNyZWF0ZSgpLnNldFR5cGUoS2V5
OjpUeXBlOjpTdHJpbmcpOwotICAgICAgICBrZXkgPSB0bXBLZXk7Ci0gICAgICAgIGtleS0+c2V0
U3RyaW5nKGlkYktleS0+c3RyaW5nKCkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBJREJLZXk6OkRhdGVUeXBlOiB7Ci0gICAgICAgIFJlZlB0cjxLZXk+IHRtcEtleSA9IEtleTo6
Y3JlYXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6OkRhdGUpOwotICAgICAgICBrZXkgPSB0bXBLZXk7
Ci0gICAgICAgIGtleS0+c2V0RGF0ZShpZGJLZXktPmRhdGUoKSk7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLSAgICBjYXNlIElEQktleTo6QXJyYXlUeXBlOiB7Ci0gICAgICAgIFJlZlB0cjxLZXk+
IHRtcEtleSA9IEtleTo6Y3JlYXRlKCkuc2V0VHlwZShLZXk6OlR5cGU6OkFycmF5KTsKLSAgICAg
ICAga2V5ID0gdG1wS2V5OwotICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVC
dWlsZGVyOjpJbmRleGVkREI6OktleT4gPiBhcnJheSA9IFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6SW5kZXhlZERCOjpLZXk+OjpjcmVhdGUoKTsKLSAgICAgICAgSURCS2V5OjpLZXlB
cnJheSBrZXlBcnJheSA9IGlkYktleS0+YXJyYXkoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBrZXlBcnJheS5zaXplKCk7ICsraSkKLSAgICAgICAgICAgIGFycmF5LT5hZGRJdGVt
KGtleUZyb21JREJLZXkoa2V5QXJyYXlbaV0uZ2V0KCkpKTsKLSAgICAgICAga2V5LT5zZXRBcnJh
eShhcnJheSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGtleS5y
ZWxlYXNlKCk7Ci19Ci0KLWNsYXNzIERhdGFMb2FkZXJDYWxsYmFjazsKK2NsYXNzIERhdGFMb2Fk
ZXI7CiAKLWNsYXNzIE9wZW5DdXJzb3JDYWxsYmFjayA6IHB1YmxpYyBJbnNwZWN0b3JJREJDYWxs
YmFjayB7CitjbGFzcyBPcGVuQ3Vyc29yQ2FsbGJhY2sgOiBwdWJsaWMgRXZlbnRMaXN0ZW5lciB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8T3BlbkN1cnNvckNhbGxiYWNrPiBjcmVh
dGUoSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NSZWZQdHI8RGF0YUxvYWRlckNh
bGxiYWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2ssIFBhc3NSZWZQdHI8SURCVHJhbnNhY3Rpb25CYWNr
ZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxi
YWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gY3JlYXRlKEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2FsbGJhY2s+IHJl
cXVlc3RDYWxsYmFjaywgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCiAgICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IE9wZW5DdXJzb3JDYWxsYmFjayhpbmplY3RlZFNj
cmlwdCwgZGF0YUxvYWRlckNhbGxiYWNrLCBpZGJUcmFuc2FjdGlvbiwgcmVxdWVzdENhbGxiYWNr
LCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgT3Bl
bkN1cnNvckNhbGxiYWNrKGluamVjdGVkU2NyaXB0LCByZXF1ZXN0Q2FsbGJhY2ssIHNraXBDb3Vu
dCwgcGFnZVNpemUpKTsKICAgICB9CiAKICAgICB2aXJ0dWFsIH5PcGVuQ3Vyc29yQ2FsbGJhY2so
KSB7IH0KIAotICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+KQorICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlz
dGVuZXImIG90aGVyKSBPVkVSUklERQogICAgIHsKLSAgICAgICAgZW5kKGZhbHNlKTsKKyAgICAg
ICAgcmV0dXJuIHRoaXMgPT0gJm90aGVyOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBvblN1
Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBpZGJDdXJzb3IsIFBh
c3NSZWZQdHI8SURCS2V5PiBrZXksIFBhc3NSZWZQdHI8SURCS2V5PiBwcmltYXJ5S2V5LCBQYXNz
UmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gdmFsdWUpCisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBFdmVudCogZXZlbnQpIE9WRVJSSURF
CiAgICAgewotICAgICAgICBtX2lkYkN1cnNvciA9IGlkYkN1cnNvcjsKLSAgICAgICAgb25TdWNj
ZXNzKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpOwotICAgIH0KKyAgICAgICAgaWYgKGV2ZW50LT50
eXBlKCkgIT0gZXZlbnROYW1lcygpLnN1Y2Nlc3NFdmVudCkgeworICAgICAgICAgICAgbV9yZXF1
ZXN0Q2FsbGJhY2stPnNlbmRGYWlsdXJlKCJVbmV4cGVjdGVkIGV2ZW50IHR5cGUuIik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBJREJSZXF1ZXN0KiBpZGJSZXF1
ZXN0ID0gc3RhdGljX2Nhc3Q8SURCUmVxdWVzdCo+KGV2ZW50LT50YXJnZXQoKSk7CisgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICBSZWZQdHI8SURCQW55PiByZXF1ZXN0UmVz
dWx0ID0gaWRiUmVxdWVzdC0+cmVzdWx0KGVjKTsKKyAgICAgICAgaWYgKGVjKSB7CisgICAgICAg
ICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgcmVzdWx0
IGluIGNhbGxiYWNrLiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAg
IGlmIChyZXF1ZXN0UmVzdWx0LT50eXBlKCkgPT0gSURCQW55OjpTY3JpcHRWYWx1ZVR5cGUpIHsK
KyAgICAgICAgICAgIGVuZChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHJlcXVlc3RSZXN1bHQtPnR5cGUoKSAhPSBJREJBbnk6OklEQkN1cnNvcldp
dGhWYWx1ZVR5cGUpIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVy
ZSgiVW5leHBlY3RlZCByZXN1bHQgdHlwZS4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFJlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+IGlkYkN1cnNvciA9IHJl
cXVlc3RSZXN1bHQtPmlkYkN1cnNvcldpdGhWYWx1ZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4ga2V5LCBQYXNzUmVmUHRyPElEQktleT4gcHJpbWFy
eUtleSwgUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHZhbHVlKQotICAgIHsKICAg
ICAgICAgaWYgKG1fc2tpcENvdW50KSB7Ci0gICAgICAgICAgICAtLW1fc2tpcENvdW50OwotICAg
ICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
ICAgICAgICBpZGJDdXJzb3ItPmFkdmFuY2UobV9za2lwQ291bnQsIGVjKTsKKyAgICAgICAgICAg
IGlmIChlYykKKyAgICAgICAgICAgICAgICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUo
IkNvdWxkIG5vdCBhZHZhbmNlIGN1cnNvci4iKTsKKyAgICAgICAgICAgIG1fc2tpcENvdW50ID0g
MDsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3Jlc3Vs
dC0+bGVuZ3RoKCkgPT0gbV9wYWdlU2l6ZSkgeworICAgICAgICAgICAgaWRiQ3Vyc29yLT5jbG9z
ZSgpOwogICAgICAgICAgICAgZW5kKHRydWUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKLSAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
IHdyYXBwZWRWYWx1ZSA9IG1faW5qZWN0ZWRTY3JpcHQud3JhcFNlcmlhbGl6ZWRPYmplY3QodmFs
dWUuZ2V0KCksIFN0cmluZygpKTsKKyAgICAgICAgLy8gQ29udGludWUgY3Vyc29yIGJlZm9yZSBt
YWtpbmcgaW5qZWN0ZWQgc2NyaXB0IGNhbGxzLCBvdGhlcndpc2UgdHJhbnNhY3Rpb24gbWlnaHQg
YmUgZmluaXNoZWQuCisgICAgICAgIGlkYkN1cnNvci0+Y29udGludWVGdW5jdGlvbigwLCBlYyk7
CisgICAgICAgIGlmIChlYykgeworICAgICAgICAgICAgbV9yZXF1ZXN0Q2FsbGJhY2stPnNlbmRG
YWlsdXJlKCJDb3VsZCBub3QgY29udGludWUgY3Vyc29yLiIpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKICAgICAgICAgUmVmUHRyPERhdGFFbnRyeT4gZGF0YUVudHJ5ID0gRGF0
YUVudHJ5OjpjcmVhdGUoKQotICAgICAgICAgICAgLnNldEtleShrZXlGcm9tSURCS2V5KGtleS5n
ZXQoKSkpCi0gICAgICAgICAgICAuc2V0UHJpbWFyeUtleShrZXlGcm9tSURCS2V5KHByaW1hcnlL
ZXkuZ2V0KCkpKQotICAgICAgICAgICAgLnNldFZhbHVlKHdyYXBwZWRWYWx1ZSk7CisgICAgICAg
ICAgICAuc2V0S2V5KG1faW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChpZGJDdXJzb3ItPmtleSgp
LCBTdHJpbmcoKSkpCisgICAgICAgICAgICAuc2V0UHJpbWFyeUtleShtX2luamVjdGVkU2NyaXB0
LndyYXBPYmplY3QoaWRiQ3Vyc29yLT5wcmltYXJ5S2V5KCksIFN0cmluZygpKSkKKyAgICAgICAg
ICAgIC5zZXRWYWx1ZShtX2luamVjdGVkU2NyaXB0LndyYXBPYmplY3QoaWRiQ3Vyc29yLT52YWx1
ZSgpLCBTdHJpbmcoKSkpOwogICAgICAgICBtX3Jlc3VsdC0+YWRkSXRlbShkYXRhRW50cnkpOwog
Ci0gICAgICAgIG5leHQoKTsKLSAgICB9Ci0KLSAgICB2b2lkIG5leHQoKQotICAgIHsKLSAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgIG1faWRiQ3Vyc29yLT5jb250aW51ZUZ1
bmN0aW9uKDAsIHRoaXMsIGVjKTsKLSAgICAgICAgbV9pZGJDdXJzb3ItPnBvc3RTdWNjZXNzSGFu
ZGxlckNhbGxiYWNrKCk7Ci0gICAgICAgIG1faWRiVHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFz
a0V2ZW50cygpOwogICAgIH0KIAogICAgIHZvaWQgZW5kKGJvb2wgaGFzTW9yZSkKICAgICB7Ci0g
ICAgICAgIG1fZGF0YUxvYWRlckNhbGxiYWNrLmNsZWFyKCk7CiAgICAgICAgIGlmICghbV9yZXF1
ZXN0Q2FsbGJhY2stPmlzQWN0aXZlKCkpCiAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
aWYgKG1faWRiQ3Vyc29yKQotICAgICAgICAgICAgbV9pZGJDdXJzb3ItPnBvc3RTdWNjZXNzSGFu
ZGxlckNhbGxiYWNrKCk7Ci0gICAgICAgIG1faWRiVHJhbnNhY3Rpb24tPmRpZENvbXBsZXRlVGFz
a0V2ZW50cygpOwotCiAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kU3VjY2VzcyhtX3Jl
c3VsdC5yZWxlYXNlKCksIGhhc01vcmUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBPcGVuQ3Vy
c29yQ2FsbGJhY2soSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQsIFBhc3NSZWZQdHI8RGF0
YUxvYWRlckNhbGxiYWNrPiBkYXRhTG9hZGVyQ2FsbGJhY2ssIFBhc3NSZWZQdHI8SURCVHJhbnNh
Y3Rpb25CYWNrZW5kSW50ZXJmYWNlPiBpZGJUcmFuc2FjdGlvbiwgUGFzc1JlZlB0cjxSZXF1ZXN0
RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGludCBza2lwQ291bnQsIHVuc2lnbmVkIHBh
Z2VTaXplKQotICAgICAgICA6IG1faW5qZWN0ZWRTY3JpcHQoaW5qZWN0ZWRTY3JpcHQpCi0gICAg
ICAgICwgbV9kYXRhTG9hZGVyQ2FsbGJhY2soZGF0YUxvYWRlckNhbGxiYWNrKQotICAgICAgICAs
IG1faWRiVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24pCisgICAgT3BlbkN1cnNvckNhbGxiYWNr
KEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0LCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhQ2Fs
bGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUp
CisgICAgICAgIDogRXZlbnRMaXN0ZW5lcihFdmVudExpc3RlbmVyOjpDUFBFdmVudExpc3RlbmVy
VHlwZSkKKyAgICAgICAgLCBtX2luamVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQogICAgICAg
ICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgLCBtX3NraXBD
b3VudChza2lwQ291bnQpCiAgICAgICAgICwgbV9wYWdlU2l6ZShwYWdlU2l6ZSkKICAgICB7CiAg
ICAgICAgIG1fcmVzdWx0ID0gQXJyYXk8RGF0YUVudHJ5Pjo6Y3JlYXRlKCk7Ci0gICAgICAgIG1f
aWRiVHJhbnNhY3Rpb24tPnNldENhbGxiYWNrcyhJbnNwZWN0b3JJREJUcmFuc2FjdGlvbkNhbGxi
YWNrOjpjcmVhdGUoKS5nZXQoKSk7CiAgICAgfQogICAgIEluamVjdGVkU2NyaXB0IG1faW5qZWN0
ZWRTY3JpcHQ7Ci0gICAgUmVmUHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gbV9kYXRhTG9hZGVyQ2Fs
bGJhY2s7Ci0gICAgUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gbV9pZGJU
cmFuc2FjdGlvbjsKICAgICBSZWZQdHI8UmVxdWVzdERhdGFDYWxsYmFjaz4gbV9yZXF1ZXN0Q2Fs
bGJhY2s7CiAgICAgaW50IG1fc2tpcENvdW50OwogICAgIHVuc2lnbmVkIG1fcGFnZVNpemU7CiAg
ICAgUmVmUHRyPEFycmF5PERhdGFFbnRyeT4gPiBtX3Jlc3VsdDsKLSAgICBSZWZQdHI8SURCQ3Vy
c29yQmFja2VuZEludGVyZmFjZT4gbV9pZGJDdXJzb3I7CiB9OwogCi1jbGFzcyBEYXRhTG9hZGVy
Q2FsbGJhY2sgOiBwdWJsaWMgRXhlY3V0YWJsZVdpdGhEYXRhYmFzZSB7CitjbGFzcyBEYXRhTG9h
ZGVyIDogcHVibGljIEV4ZWN1dGFibGVXaXRoRGF0YWJhc2UgewogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPERhdGFMb2FkZXJDYWxsYmFjaz4gY3JlYXRlKFBhc3NSZWZQdHI8UmVxdWVz
dERhdGFDYWxsYmFjaz4gcmVxdWVzdENhbGxiYWNrLCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5q
ZWN0ZWRTY3JpcHQsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcm
IGluZGV4TmFtZSwgUGFzc1JlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2UsIGludCBza2lw
Q291bnQsIHVuc2lnbmVkIHBhZ2VTaXplKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERhdGFMb2Fk
ZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFJl
cXVlc3REYXRhQ2FsbGJhY2s+IHJlcXVlc3RDYWxsYmFjaywgY29uc3QgSW5qZWN0ZWRTY3JpcHQm
IGluamVjdGVkU2NyaXB0LCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUsIFBhc3NSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlLCBpbnQg
c2tpcENvdW50LCB1bnNpZ25lZCBwYWdlU2l6ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9w
dFJlZihuZXcgRGF0YUxvYWRlckNhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaywgaW5qZWN0ZWRTY3Jp
cHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBw
YWdlU2l6ZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IERhdGFMb2FkZXIoY29udGV4
dCwgcmVxdWVzdENhbGxiYWNrLCBpbmplY3RlZFNjcmlwdCwgb2JqZWN0U3RvcmVOYW1lLCBpbmRl
eE5hbWUsIGlkYktleVJhbmdlLCBza2lwQ291bnQsIHBhZ2VTaXplKSk7CiAgICAgfQogCi0gICAg
dmlydHVhbCB+RGF0YUxvYWRlckNhbGxiYWNrKCkgeyB9CisgICAgdmlydHVhbCB+RGF0YUxvYWRl
cigpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGUoUGFzc1JlZlB0cjxJREJEYXRhYmFz
ZUJhY2tlbmRJbnRlcmZhY2U+IHBycERhdGFiYXNlKQorICAgIHZpcnR1YWwgdm9pZCBleGVjdXRl
KFBhc3NSZWZQdHI8SURCRGF0YWJhc2U+IHBycERhdGFiYXNlKQogICAgIHsKLSAgICAgICAgUmVm
UHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4gaWRiRGF0YWJhc2UgPSBwcnBEYXRhYmFz
ZTsKLSAgICAgICAgaWYgKCFtX3JlcXVlc3RDYWxsYmFjay0+aXNBY3RpdmUoKSkKKyAgICAgICAg
UmVmUHRyPElEQkRhdGFiYXNlPiBpZGJEYXRhYmFzZSA9IHBycERhdGFiYXNlOworICAgICAgICBp
ZiAoIXJlcXVlc3RDYWxsYmFjaygpLT5pc0FjdGl2ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwot
Ci0gICAgICAgIFJlZlB0cjxJREJUcmFuc2FjdGlvbkJhY2tlbmRJbnRlcmZhY2U+IGlkYlRyYW5z
YWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFzZShpZGJEYXRhYmFzZS5nZXQoKSwgbV9vYmpl
Y3RTdG9yZU5hbWUpOwotICAgICAgICBpZiAoIWlkYlRyYW5zYWN0aW9uKQorICAgICAgICBSZWZQ
dHI8SURCVHJhbnNhY3Rpb24+IGlkYlRyYW5zYWN0aW9uID0gdHJhbnNhY3Rpb25Gb3JEYXRhYmFz
ZShjb250ZXh0KCksIGlkYkRhdGFiYXNlLmdldCgpLCBtX29iamVjdFN0b3JlTmFtZSk7CisgICAg
ICAgIGlmICghaWRiVHJhbnNhY3Rpb24pIHsKKyAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNr
LT5zZW5kRmFpbHVyZSgiQ291bGQgbm90IGdldCB0cmFuc2FjdGlvbiIpOwogICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmVCYWNrZW5kSW50ZXJmYWNlPiBp
ZGJPYmplY3RTdG9yZSA9IG9iamVjdFN0b3JlRm9yVHJhbnNhY3Rpb24oaWRiVHJhbnNhY3Rpb24u
Z2V0KCksIG1fb2JqZWN0U3RvcmVOYW1lKTsKLSAgICAgICAgaWYgKCFpZGJPYmplY3RTdG9yZSkK
KyAgICAgICAgfQorICAgICAgICBSZWZQdHI8SURCT2JqZWN0U3RvcmU+IGlkYk9iamVjdFN0b3Jl
ID0gb2JqZWN0U3RvcmVGb3JUcmFuc2FjdGlvbihpZGJUcmFuc2FjdGlvbi5nZXQoKSwgbV9vYmpl
Y3RTdG9yZU5hbWUpOworICAgICAgICBpZiAoIWlkYk9iamVjdFN0b3JlKSB7CisgICAgICAgICAg
ICBtX3JlcXVlc3RDYWxsYmFjay0+c2VuZEZhaWx1cmUoIkNvdWxkIG5vdCBnZXQgb2JqZWN0IHN0
b3JlIik7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8
T3BlbkN1cnNvckNhbGxiYWNrPiBvcGVuQ3Vyc29yQ2FsbGJhY2sgPSBPcGVuQ3Vyc29yQ2FsbGJh
Y2s6OmNyZWF0ZShtX2luamVjdGVkU2NyaXB0LCB0aGlzLCBpZGJUcmFuc2FjdGlvbi5nZXQoKSwg
bV9yZXF1ZXN0Q2FsbGJhY2ssIG1fc2tpcENvdW50LCBtX3BhZ2VTaXplKTsKKyAgICAgICAgUmVm
UHRyPE9wZW5DdXJzb3JDYWxsYmFjaz4gb3BlbkN1cnNvckNhbGxiYWNrID0gT3BlbkN1cnNvckNh
bGxiYWNrOjpjcmVhdGUobV9pbmplY3RlZFNjcmlwdCwgbV9yZXF1ZXN0Q2FsbGJhY2ssIG1fc2tp
cENvdW50LCBtX3BhZ2VTaXplKTsKIAorICAgICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAg
ICAgICAgUmVmUHRyPElEQlJlcXVlc3Q+IGlkYlJlcXVlc3Q7CiAgICAgICAgIGlmICghbV9pbmRl
eE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBSZWZQdHI8SURCSW5kZXhCYWNrZW5kSW50
ZXJmYWNlPiBpZGJJbmRleCA9IGluZGV4Rm9yT2JqZWN0U3RvcmUoaWRiT2JqZWN0U3RvcmUuZ2V0
KCksIG1faW5kZXhOYW1lKTsKLSAgICAgICAgICAgIGlmICghaWRiSW5kZXgpCisgICAgICAgICAg
ICBSZWZQdHI8SURCSW5kZXg+IGlkYkluZGV4ID0gaW5kZXhGb3JPYmplY3RTdG9yZShpZGJPYmpl
Y3RTdG9yZS5nZXQoKSwgbV9pbmRleE5hbWUpOworICAgICAgICAgICAgaWYgKCFpZGJJbmRleCkg
eworICAgICAgICAgICAgICAgIG1fcmVxdWVzdENhbGxiYWNrLT5zZW5kRmFpbHVyZSgiQ291bGQg
bm90IGdldCBpbmRleCIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBpZGJJbmRl
eC0+b3BlbkN1cnNvcihtX2lkYktleVJhbmdlLCBJREJDdXJzb3I6Ok5FWFQsIG9wZW5DdXJzb3JD
YWxsYmFjaywgaWRiVHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgaWRiT2JqZWN0U3Rv
cmUtPm9wZW5DdXJzb3IobV9pZGJLZXlSYW5nZSwgSURCQ3Vyc29yOjpORVhULCBvcGVuQ3Vyc29y
Q2FsbGJhY2ssIElEQlRyYW5zYWN0aW9uQmFja2VuZEludGVyZmFjZTo6Tm9ybWFsVGFzaywgaWRi
VHJhbnNhY3Rpb24uZ2V0KCksIGVjKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWRiUmVxdWVz
dCA9IGlkYkluZGV4LT5vcGVuQ3Vyc29yKGNvbnRleHQoKSwgUGFzc1JlZlB0cjxJREJLZXlSYW5n
ZT4obV9pZGJLZXlSYW5nZSksIGVjKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpZGJS
ZXF1ZXN0ID0gaWRiT2JqZWN0U3RvcmUtPm9wZW5DdXJzb3IoY29udGV4dCgpLCBQYXNzUmVmUHRy
PElEQktleVJhbmdlPihtX2lkYktleVJhbmdlKSwgZWMpOworICAgICAgICBpZGJSZXF1ZXN0LT5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdWNjZXNzRXZlbnQsIG9wZW5DdXJzb3JDYWxs
YmFjaywgZmFsc2UpOwogICAgIH0KIAotcHJpdmF0ZToKLSAgICBEYXRhTG9hZGVyQ2FsbGJhY2so
UGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ssIGNvbnN0IElu
amVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQYXNzUmVmUHRyPElEQktleVJhbmdlPiBpZGJL
ZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCi0gICAgICAgIDogbV9y
ZXF1ZXN0Q2FsbGJhY2socmVxdWVzdENhbGxiYWNrKQorICAgIHZpcnR1YWwgUmVxdWVzdENhbGxi
YWNrKiByZXF1ZXN0Q2FsbGJhY2soKSB7IHJldHVybiBtX3JlcXVlc3RDYWxsYmFjay5nZXQoKTsg
fQorICAgIERhdGFMb2FkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCwgUGFzc1JlZlB0cjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2ss
IGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RTdG9yZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBQYXNzUmVmUHRyPElEQktleVJh
bmdlPiBpZGJLZXlSYW5nZSwgaW50IHNraXBDb3VudCwgdW5zaWduZWQgcGFnZVNpemUpCisgICAg
ICAgIDogRXhlY3V0YWJsZVdpdGhEYXRhYmFzZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KQorICAg
ICAgICAsIG1fcmVxdWVzdENhbGxiYWNrKHJlcXVlc3RDYWxsYmFjaykKICAgICAgICAgLCBtX2lu
amVjdGVkU2NyaXB0KGluamVjdGVkU2NyaXB0KQogICAgICAgICAsIG1fb2JqZWN0U3RvcmVOYW1l
KG9iamVjdFN0b3JlTmFtZSkKICAgICAgICAgLCBtX2luZGV4TmFtZShpbmRleE5hbWUpCkBAIC02
NjgsMTAgKzYyMiwxNCBAQCBzdGF0aWMgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlkLAogICAgIHJldHVybiBkb2N1
bWVudDsKIH0KIAotc3RhdGljIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBhc3NlcnRJREJG
YWN0b3J5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgRG9jdW1lbnQqIGRvY3VtZW50KQorc3Rh
dGljIElEQkZhY3RvcnkqIGFzc2VydElEQkZhY3RvcnkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBEb2N1bWVudCogZG9jdW1lbnQpCiB7Ci0gICAgUGFnZSogcGFnZSA9IGRvY3VtZW50ID8gZG9j
dW1lbnQtPnBhZ2UoKSA6IDA7Ci0gICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZh
Y3RvcnkgPSBwYWdlID8gUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlOjpmcm9tKHBhZ2UtPmdyb3Vw
KCkpLT5mYWN0b3J5QmFja2VuZCgpIDogMDsKKyAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGRv
Y3VtZW50LT5kb21XaW5kb3coKTsKKyAgICBpZiAoIWRvbVdpbmRvdykgeworICAgICAgICAqZXJy
b3JTdHJpbmcgPSAiTm8gSW5kZXhlZERCIGZhY3RvcnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsK
KyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIElEQkZhY3RvcnkqIGlkYkZhY3RvcnkgPSBE
T01XaW5kb3dJbmRleGVkRGF0YWJhc2U6OmluZGV4ZWREQihkb21XaW5kb3cpOwogCiAgICAgaWYg
KCFpZGJGYWN0b3J5KQogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiTm8gSW5kZXhlZERCIGZhY3Rv
cnkgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsKQEAgLTY4NCwxMyArNjQyLDExIEBAIHZvaWQgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZU5hbWVzRm9yRnJhbWUoRXJyb3JT
dHJpbmcqIGVycm9yU3RyCiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gYXNzZXJ0RG9jdW1lbnQo
ZXJyb3JTdHJpbmcsIGZyYW1lSWQsIG1fcGFnZUFnZW50KTsKICAgICBpZiAoIWRvY3VtZW50KQog
ICAgICAgICByZXR1cm47Ci0gICAgSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UqIGlkYkZhY3Rv
cnkgPSBhc3NlcnRJREJGYWN0b3J5KGVycm9yU3RyaW5nLCBkb2N1bWVudCk7CisgICAgSURCRmFj
dG9yeSogaWRiRmFjdG9yeSA9IGFzc2VydElEQkZhY3RvcnkoZXJyb3JTdHJpbmcsIGRvY3VtZW50
KTsKICAgICBpZiAoIWlkYkZhY3RvcnkpCiAgICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxH
ZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s+IGNhbGxiYWNrID0gR2V0RGF0YWJhc2VOYW1lc0NhbGxi
YWNrOjpjcmVhdGUocmVxdWVzdENhbGxiYWNrLCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+
dG9TdHJpbmcoKSk7Ci0gICAgR3JvdXBTZXR0aW5ncyogZ3JvdXBTZXR0aW5ncyA9IGRvY3VtZW50
LT5wYWdlKCktPmdyb3VwKCkuZ3JvdXBTZXR0aW5ncygpOwotICAgIGlkYkZhY3RvcnktPmdldERh
dGFiYXNlTmFtZXMoY2FsbGJhY2suZ2V0KCksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBk
b2N1bWVudCwgZ3JvdXBTZXR0aW5ncy0+aW5kZXhlZERCRGF0YWJhc2VQYXRoKCkpOworICAgIFJl
ZlB0cjxJREJSZXF1ZXN0PiBpZGJSZXF1ZXN0ID0gaWRiRmFjdG9yeS0+Z2V0RGF0YWJhc2VOYW1l
cyhkb2N1bWVudCk7CisgICAgaWRiUmVxdWVzdC0+YWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWVz
KCkuc3VjY2Vzc0V2ZW50LCBHZXREYXRhYmFzZU5hbWVzQ2FsbGJhY2s6OmNyZWF0ZShyZXF1ZXN0
Q2FsbGJhY2ssIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKSwgZmFsc2Up
OwogfQogCiB2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBQYXNzUmVmUHRyPFJlcXVlc3REYXRhYmFzZUNhbGxiYWNrPiByZXF1
ZXN0Q2FsbGJhY2spCkBAIC02OTgsMTIgKzY1NCwxMiBAQCB2b2lkIEluc3BlY3RvckluZGV4ZWRE
QkFnZW50OjpyZXF1ZXN0RGF0YWJhc2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBT
dAogICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBm
cmFtZUlkLCBtX3BhZ2VBZ2VudCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJu
OwotICAgIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlKiBpZGJGYWN0b3J5ID0gYXNzZXJ0SURC
RmFjdG9yeShlcnJvclN0cmluZywgZG9jdW1lbnQpOworICAgIElEQkZhY3RvcnkqIGlkYkZhY3Rv
cnkgPSBhc3NlcnRJREJGYWN0b3J5KGVycm9yU3RyaW5nLCBkb2N1bWVudCk7CiAgICAgaWYgKCFp
ZGJGYWN0b3J5KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8RGF0YWJhc2VMb2FkZXJD
YWxsYmFjaz4gZGF0YWJhc2VMb2FkZXJDYWxsYmFjayA9IERhdGFiYXNlTG9hZGVyQ2FsbGJhY2s6
OmNyZWF0ZShyZXF1ZXN0Q2FsbGJhY2spOwotICAgIGRhdGFiYXNlTG9hZGVyQ2FsbGJhY2stPnN0
YXJ0KGlkYkZhY3RvcnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkb2N1bWVudCwgZGF0
YWJhc2VOYW1lKTsKKyAgICBSZWZQdHI8RGF0YWJhc2VMb2FkZXI+IGRhdGFiYXNlTG9hZGVyID0g
RGF0YWJhc2VMb2FkZXI6OmNyZWF0ZShkb2N1bWVudCwgcmVxdWVzdENhbGxiYWNrKTsKKyAgICBk
YXRhYmFzZUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJl
cXVlc3REYXRhKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmcmFtZUlk
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBrZXlSYW5nZSwgUGFzc1JlZlB0cjxSZXF1
ZXN0RGF0YUNhbGxiYWNrPiByZXF1ZXN0Q2FsbGJhY2spCkBAIC03MTQsNyArNjcwLDcgQEAgdm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBhc3NlcnREb2N1
bWVudChlcnJvclN0cmluZywgZnJhbWUpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybjsKLSAgICBJREJGYWN0b3J5QmFja2VuZEludGVyZmFjZSogaWRiRmFjdG9yeSA9IGFzc2Vy
dElEQkZhY3RvcnkoZXJyb3JTdHJpbmcsIGRvY3VtZW50KTsKKyAgICBJREJGYWN0b3J5KiBpZGJG
YWN0b3J5ID0gYXNzZXJ0SURCRmFjdG9yeShlcnJvclN0cmluZywgZG9jdW1lbnQpOwogICAgIGlm
ICghaWRiRmFjdG9yeSkKICAgICAgICAgcmV0dXJuOwogCkBAIC03MjYsOCArNjgyLDggQEAgdm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFJlZlB0
cjxEYXRhTG9hZGVyQ2FsbGJhY2s+IGRhdGFMb2FkZXJDYWxsYmFjayA9IERhdGFMb2FkZXJDYWxs
YmFjazo6Y3JlYXRlKHJlcXVlc3RDYWxsYmFjaywgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3Jl
TmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5nZSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7Ci0gICAg
ZGF0YUxvYWRlckNhbGxiYWNrLT5zdGFydChpZGJGYWN0b3J5LCBkb2N1bWVudC0+c2VjdXJpdHlP
cmlnaW4oKSwgZG9jdW1lbnQsIGRhdGFiYXNlTmFtZSk7CisgICAgUmVmUHRyPERhdGFMb2FkZXI+
IGRhdGFMb2FkZXIgPSBEYXRhTG9hZGVyOjpjcmVhdGUoZG9jdW1lbnQsIHJlcXVlc3RDYWxsYmFj
aywgaW5qZWN0ZWRTY3JpcHQsIG9iamVjdFN0b3JlTmFtZSwgaW5kZXhOYW1lLCBpZGJLZXlSYW5n
ZSwgc2tpcENvdW50LCBwYWdlU2l6ZSk7CisgICAgZGF0YUxvYWRlci0+c3RhcnQoaWRiRmFjdG9y
eSwgZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvSW5kZXhlZERCTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0luZGV4ZWREQk1vZGVsLmpzCmluZGV4IGU2NDQwYzFiZGVjMDRkM2NhZWE1OWYxNDgx
MGY5OTk1YmI4NjI3ZmMuLjQ1ZDE0NWU0NmQyODdiNGFlYzdiYWMxOWE1ZmUxYTYxZDE1NzFjMjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERC
TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVk
REJNb2RlbC5qcwpAQCAtNjEsMzEgKzYxLDYgQEAgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LktleVBhdGhUeXBlcyA9IHsKICAgICBBcnJheVR5cGU6ICAgImFycmF5IgogfTsKIAotLyoqCi0g
KiBAcGFyYW0ge0luZGV4ZWREQkFnZW50LktleX0ga2V5Ci0gKi8KLVdlYkluc3BlY3Rvci5JbmRl
eGVkREJNb2RlbC5pZGJLZXlGcm9tS2V5ID0gZnVuY3Rpb24oa2V5KQotewotICAgIHZhciBpZGJL
ZXk7Ci0gICAgc3dpdGNoIChrZXkudHlwZSkgewotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4
ZWREQk1vZGVsLktleVR5cGVzLk51bWJlclR5cGU6Ci0gICAgICAgIGlkYktleSA9IGtleS5udW1i
ZXI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVs
LktleVR5cGVzLlN0cmluZ1R5cGU6Ci0gICAgICAgIGlkYktleSA9IGtleS5zdHJpbmc7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVz
LkRhdGVUeXBlOgotICAgICAgICBpZGJLZXkgPSBuZXcgRGF0ZShrZXkuZGF0ZSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgV2ViSW5zcGVjdG9yLkluZGV4ZWREQk1vZGVsLktleVR5cGVzLkFy
cmF5VHlwZToKLSAgICAgICAgaWRiS2V5ID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwga2V5LmFycmF5Lmxlbmd0aDsgKytpKQotICAgICAgICAgICAgaWRiS2V5LnB1c2goV2ViSW5z
cGVjdG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoa2V5LmFycmF5W2ldKSk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gaWRiS2V5OwotfQotCiBXZWJJbnNwZWN0b3Iu
SW5kZXhlZERCTW9kZWwua2V5RnJvbUlEQktleSA9IGZ1bmN0aW9uKGlkYktleSkKIHsKICAgICBp
ZiAodHlwZW9mKGlkYktleSkgPT09ICJ1bmRlZmluZWQiIHx8IGlkYktleSA9PT0gbnVsbCkKQEAg
LTQ3Myw4ICs0NDgsOCBAQCBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwucHJvdG90eXBlID0g
ewogCiAgICAgICAgICAgICB2YXIgZW50cmllcyA9IFtdOwogICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBkYXRhRW50cmllcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIHZh
ciBrZXkgPSBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwuaWRiS2V5RnJvbUtleShkYXRhRW50
cmllc1tpXS5rZXkpOwotICAgICAgICAgICAgICAgIHZhciBwcmltYXJ5S2V5ID0gV2ViSW5zcGVj
dG9yLkluZGV4ZWREQk1vZGVsLmlkYktleUZyb21LZXkoZGF0YUVudHJpZXNbaV0ucHJpbWFyeUtl
eSk7CisgICAgICAgICAgICAgICAgdmFyIGtleSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3Qu
ZnJvbVBheWxvYWQoZGF0YUVudHJpZXNbaV0ua2V5KTsKKyAgICAgICAgICAgICAgICB2YXIgcHJp
bWFyeUtleSA9IFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QuZnJvbVBheWxvYWQoZGF0YUVudHJp
ZXNbaV0ucHJpbWFyeUtleSk7CiAgICAgICAgICAgICAgICAgdmFyIHZhbHVlID0gV2ViSW5zcGVj
dG9yLlJlbW90ZU9iamVjdC5mcm9tUGF5bG9hZChkYXRhRW50cmllc1tpXS52YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgZW50cmllcy5wdXNoKG5ldyBXZWJJbnNwZWN0b3IuSW5kZXhlZERCTW9kZWwu
RW50cnkoa2V5LCBwcmltYXJ5S2V5LCB2YWx1ZSkpOwogICAgICAgICAgICAgfQpAQCAtNDkwLDgg
KzQ2NSw4IEBAIFdlYkluc3BlY3Rvci5JbmRleGVkREJNb2RlbC5wcm90b3R5cGUgPSB7CiAKIC8q
KgogICogQGNvbnN0cnVjdG9yCi0gKiBAcGFyYW0geyp9IGtleQotICogQHBhcmFtIHsqfSBwcmlt
YXJ5S2V5CisgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5SZW1vdGVPYmplY3R9IGtleQorICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuUmVtb3RlT2JqZWN0fSBwcmltYXJ5S2V5CiAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5SZW1vdGVPYmplY3R9IHZhbHVlCiAgKi8KIFdlYkluc3BlY3Rvci5JbmRleGVk
REJNb2RlbC5FbnRyeSA9IGZ1bmN0aW9uKGtleSwgcHJpbWFyeUtleSwgdmFsdWUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9JbmRleGVkREJWaWV3cy5qcwpp
bmRleCA0MWUyZGU5ODc4M2VmNWM1ZTI0NTVjZjQxODE5YjQwYmE3Y2MzODFiLi42YjJhNzJjNjE4
N2ZjMTE0OWVhNjg5OGQ4ZGExNzk2OTQxYjZmMTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0luZGV4ZWREQlZpZXdzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSW5kZXhlZERCVmlld3MuanMKQEAgLTMzNCw4ICszMzQs
NyBAQCBXZWJJbnNwZWN0b3IuSURCRGF0YVZpZXcucHJvdG90eXBlID0gewogICAgICAgICAgICAg
ICAgIGRhdGFbInZhbHVlIl0gPSBlbnRyaWVzW2ldLnZhbHVlOwogCiAgICAgICAgICAgICAgICAg
dmFyIHByaW1hcnlLZXkgPSBKU09OLnN0cmluZ2lmeSh0aGlzLl9pc0luZGV4ID8gZW50cmllc1tp
XS5wcmltYXJ5S2V5IDogZW50cmllc1tpXS5rZXkpOwotICAgICAgICAgICAgICAgIHZhciB2YWx1
ZVRpdGxlID0gdGhpcy5fb2JqZWN0U3RvcmUubmFtZSArICJbIiArIHByaW1hcnlLZXkgKyAiXSI7
Ci0gICAgICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV2ViSW5zcGVjdG9yLklEQkRhdGFHcmlk
Tm9kZSh2YWx1ZVRpdGxlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuSURCRGF0YUdyaWROb2RlKGRhdGEpOwogICAgICAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnJvb3ROb2RlKCkuYXBwZW5kQ2hpbGQobm9kZSk7CiAgICAgICAgICAgICB9CiAK
QEAgLTM3NiwxNCArMzc1LDExIEBAIFdlYkluc3BlY3Rvci5JREJEYXRhVmlldy5wcm90b3R5cGUg
PSB7CiAvKioKICAqIEBjb25zdHJ1Y3RvcgogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5EYXRh
R3JpZE5vZGV9Ci0gKiBAcGFyYW0ge3N0cmluZ30gdmFsdWVUaXRsZQogICogQHBhcmFtIHsqfSBk
YXRhCiAgKi8KLVdlYkluc3BlY3Rvci5JREJEYXRhR3JpZE5vZGUgPSBmdW5jdGlvbih2YWx1ZVRp
dGxlLCBkYXRhKQorV2ViSW5zcGVjdG9yLklEQkRhdGFHcmlkTm9kZSA9IGZ1bmN0aW9uKGRhdGEp
CiB7CiAgICAgV2ViSW5zcGVjdG9yLkRhdGFHcmlkTm9kZS5jYWxsKHRoaXMsIGRhdGEsIGZhbHNl
KTsKLQotICAgIHRoaXMuX3ZhbHVlVGl0bGUgPSB2YWx1ZVRpdGxlOwogICAgIHRoaXMuc2VsZWN0
YWJsZSA9IGZhbHNlOwogfQogCkBAIC0zOTgsMTMgKzM5NCwxMCBAQCBXZWJJbnNwZWN0b3IuSURC
RGF0YUdyaWROb2RlLnByb3RvdHlwZSA9IHsKIAogICAgICAgICBzd2l0Y2ggKGNvbHVtbklkZW50
aWZpZXIpIHsKICAgICAgICAgY2FzZSAidmFsdWUiOgotICAgICAgICAgICAgY2VsbC5yZW1vdmVD
aGlsZHJlbigpOwotICAgICAgICAgICAgdGhpcy5fZm9ybWF0VmFsdWUoY2VsbCwgdmFsdWUpOwot
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgImtleSI6CiAgICAgICAgIGNhc2UgInBy
aW1hcnlLZXkiOgogICAgICAgICAgICAgY2VsbC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICAg
ICAgdGhpcy5fZm9ybWF0VmFsdWUoY2VsbCwgbmV3IFdlYkluc3BlY3Rvci5Mb2NhbEpTT05PYmpl
Y3QodmFsdWUpKTsKKyAgICAgICAgICAgIHRoaXMuX2Zvcm1hdFZhbHVlKGNlbGwsIHZhbHVlKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICB9CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
ZGZhOWZiOTU1OGNhZTVhNjk1ZDYyZmY0Mjg0MjJmOGU1YmNiOTkxYi4uZDZkMjU1ZjJlMWUyM2Mz
Mzg2ZWVlYzFhMmE1NzQ5MTcwYzhhMmI1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDE0IEBACiAyMDEyLTEx
LTA3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE1pZ3JhdGUgaW5zcGVjdG9yIEluZGV4ZWREQiBzdXBwb3J0IHRvIGZyb250
ZW5kIEFQSS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMTQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRhdGEuaHRtbDoKKwor
MjAxMi0xMS0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KKwogICAg
ICAgICBVbnJldmlld2VkIGluc3BlY3RvciB0ZXN0IHBvbGlzaC4KICAgICAgICAgTWFkZSBodHRw
L3Rlc3RzL2luZGV4ZWRkYi9kYXRhYmFzZS1kYXRhLmh0bWwgdGVzdCBmYXN0ZXIsIGFkZGVkIG1v
cmUgdmVyYm9zZSBlcnJvcnMgZm9yIHRlc3QgZGVidWdnaW5nLgogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1s
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvaW5kZXhlZGRiL2RhdGFiYXNlLWRh
dGEuaHRtbAppbmRleCBkN2FhZDNmMjBkNWVjMWQ4N2JiNDRjZjU1ZTg3MjQzMzFkNTJhMDgyLi4x
MzYzZjJlOTQzYTFlMzQ2YTA5ZmZhNTI3NzNjNmRkZjRhMzY1ZDNkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9pbmRleGVkZGIvZGF0YWJhc2UtZGF0YS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2luZGV4ZWRkYi9kYXRhYmFz
ZS1kYXRhLmh0bWwKQEAgLTY3LDcgKzY3LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAg
ICAgIGZ1bmN0aW9uIGR1bXBlZCh2YWx1ZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiICAgIEtleSA9ICIgKyBlbnRyeS5rZXkgKyAiLCBw
cmltYXJ5S2V5ID0gIiArIGVudHJ5LnByaW1hcnlLZXkgKyAiLCB2YWx1ZSA9ICIgKyB2YWx1ZSk7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgICBLZXkgPSAiICsg
ZW50cnkua2V5LmRlc2NyaXB0aW9uICsgIiwgcHJpbWFyeUtleSA9ICIgKyBlbnRyeS5wcmltYXJ5
S2V5LmRlc2NyaXB0aW9uICsgIiwgdmFsdWUgPSAiICsgdmFsdWUpOwogICAgICAgICAgICAgICAg
IGR1bXBFbnRyaWVzKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="187211"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
    <flag name="commit-queue"
          id="187218"
          type_id="3"
          status="-"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>