<?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>128852</bug_id>
          
          <creation_ts>2014-02-14 16:09:12 -0800</creation_ts>
          <short_desc>[Mac] All WebKit clients should encrypt WebCrypto keys automatically</short_desc>
          <delta_ts>2014-02-15 15:21:30 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>981022</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-14 16:09:12 -0800</bug_when>
    <thetext>We have a client call to get a WebCrypto master key, but most client won&apos;t implement it. WebKit should provide encryption by default.

&lt;rdar://problem/15921734&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981027</commentid>
    <comment_count>1</comment_count>
      <attachid>224262</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-14 16:18:36 -0800</bug_when>
    <thetext>Created attachment 224262
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981047</commentid>
    <comment_count>2</comment_count>
      <attachid>224267</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-14 17:33:21 -0800</bug_when>
    <thetext>Created attachment 224267
with less 10.8 build breakage</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981204</commentid>
    <comment_count>3</comment_count>
      <attachid>224267</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-15 14:52:21 -0800</bug_when>
    <thetext>Comment on attachment 224267
with less 10.8 build breakage

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

&gt; Source/WebCore/crypto/mac/SerializedCryptoKeyWrapMac.mm:60
&gt; +static NSString* masterKeyAccountNameForCurrentApplication()
&gt; +{
&gt; +    return [NSString stringWithFormat:@&quot;com.apple.WebKit.WebCrypto.master+%@&quot;, [[NSRunningApplication currentApplication] bundleIdentifier]];
&gt; +}

When building for iOS, won’t this cause an unused function warning?

&gt; Source/WebCore/crypto/mac/SerializedCryptoKeyWrapMac.mm:100
&gt; +    status = SecACLSetContents(acl, (CFArrayRef)@[(id)trustedApp.get()], (CFStringRef)localizedItemName, kSecKeychainPromptRequirePassphase);

Please add spaces inside the @[].</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981205</commentid>
    <comment_count>4</comment_count>
      <attachid>224267</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-15 14:52:48 -0800</bug_when>
    <thetext>Comment on attachment 224267
with less 10.8 build breakage

Sorry, I didn’t mean to reset the review flag. This is still r=oliver.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981206</commentid>
    <comment_count>5</comment_count>
      <attachid>224267</attachid>
    <who name="">mitz</who>
    <bug_when>2014-02-15 14:54:03 -0800</bug_when>
    <thetext>Comment on attachment 224267
with less 10.8 build breakage

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

&gt; Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm:1008
&gt; +        NSData* keyData = CallUIDelegate(m_webView, selector);

Space on the wrong side of the star.

&gt; Source/WebKit/mac/WebCoreSupport/WebChromeClient.mm:1021
&gt; +        NSData* keyData = CallUIDelegate(m_webView, selector);

Here too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981211</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-02-15 15:21:30 -0800</bug_when>
    <thetext>Committed with suggested fixes in &lt;http://trac.webkit.org/r164181&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224262</attachid>
            <date>2014-02-14 16:18:36 -0800</date>
            <delta_ts>2014-02-14 17:33:21 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>Keychain.txt</filename>
            <type>text/plain</type>
            <size>15719</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAyLTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFsbCBXZWJLaXQg
Y2xpZW50cyBzaG91bGQgZW5jcnlwdCBXZWJDcnlwdG8ga2V5cyBhdXRvbWF0aWNhbGx5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0YWxsIGEgcGVy
c2lzdGVudCBtYXN0ZXIga2V5IGluIEtleWNoYWluIG9uIGZpcnN0IHVzZSBvZiBXZWJDcnlwdG8g
a2V5IHNlcmlhbGl6YXRpb24uCisgICAgICAgIFRoZSBrZXkgaXMgcGVyIGFwcGxpY2F0aW9uLCBw
cm90ZWN0ZWQgd2l0aCBBQ0wuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3J5cHRvL1Nl
cmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg6CisgICAgICAgICogY3J5cHRvL21hYy9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hc3RlcktleUFjY291bnRO
YW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERlZmF1bHRX
ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5kU3RvcmVNYXN0
ZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1hc3RlcktleSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJDcnlwdG9N
YXN0ZXJLZXlLZXljaGFpbkxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3Rl
cktleUtleWNoYWluQ29tbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oOgorCiAyMDE0LTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IGEgZmV3IG1vcmUgQXJyYXkgcHJvdG90eXBlIGZ1bmN0aW9ucyBpbiBK
UwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2NDAyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC05NTMsNiArOTUzLDcgQEAg
X19aTjdXZWJDb3JlMjdzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZQogX19aTjdXZWJDb3JlMjhE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uMTJhZGRVc2VyU2hlZXRFTjNXVEY3UGFzc1JlZklO
U18xOFN0eWxlU2hlZXRDb250ZW50c0VFRQogX19aTjdXZWJDb3JlMjhEb2N1bWVudFN0eWxlU2hl
ZXRDb2xsZWN0aW9uMTRhZGRBdXRob3JTaGVldEVOM1dURjdQYXNzUmVmSU5TXzE4U3R5bGVTaGVl
dENvbnRlbnRzRUVFCiBfX1pON1dlYkNvcmUyOGVuY29kZVdpdGhVUkxFc2NhcGVTZXF1ZW5jZXNF
UktOM1dURjZTdHJpbmdFCitfX1pON1dlYkNvcmUyOGdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJL
ZXlFUk4zV1RGNlZlY3RvckloTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQogX19aTjdXZWJD
b3JlMjhyZW1vdmVMYW5ndWFnZUNoYW5nZU9ic2VydmVyRVB2CiBfX1pON1dlYkNvcmUyOWNvb2tp
ZVJlcXVlc3RIZWFkZXJGaWVsZFZhbHVlRVJLTlNfMjFOZXR3b3JrU3RvcmFnZVNlc3Npb25FUktO
U18zVVJMRVM1XwogX19aTjdXZWJDb3JlMjljcmVhdGVEZWZhdWx0UGFyYWdyYXBoRWxlbWVudEVS
TlNfOERvY3VtZW50RQpJbmRleDogU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6
YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ov
TG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gMTY0MDI5KQorKysgU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2
ICs0MCw5IEBACiAvKiBWaXNpYmxlIG5hbWUgb2YgdGhlIHdlYiBwcm9jZXNzLiBUaGUgYXJndW1l
bnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCiAiJUAgV2ViIENvbnRlbnQiID0gIiVAIFdl
YiBDb250ZW50IjsKIAorLyogTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8g
bWFzdGVyIGtleSBpbiBLZXljaGFpbiAqLworIiVAIFdlYkNyeXB0byBNYXN0ZXIgS2V5IiA9ICIl
QCBXZWJDcnlwdG8gTWFzdGVyIEtleSI7CisKIC8qIExhYmVsIHRvIGRlc2NyaWJlIHRoZSBudW1i
ZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVwbG9hZCBjb250cm9sIHRoYXQgYWxsb3dz
IG11bHRpcGxlIGZpbGVzICovCiAiJWQgZmlsZXMiID0gIiVkIGZpbGVzIjsKIApAQCAtNTk1LDYg
KzU5OCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAiVXNlIFN0YW5kYXJkIExpZ2F0dXJl
cyAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIlVzZSBTdGFuZGFyZCBMaWdhdHVyZXMiOwogCisvKiBE
ZXNjcmlwdGlvbiBvZiBXZWJDcnlwdG8gbWFzdGVyIGtleXMgaW4gS2V5Y2hhaW4gKi8KKyJVc2Vk
IHRvIGVuY3J5cHQgV2ViQ3J5cHRvIGtleXMgaW4gcGVyc2lzdGVudCBzdG9yYWdlLCBzdWNoIGFz
IEluZGV4ZWREQiIgPSAiVXNlZCB0byBlbmNyeXB0IFdlYkNyeXB0byBrZXlzIGluIHBlcnNpc3Rl
bnQgc3RvcmFnZSwgc3VjaCBhcyBJbmRleGVkREIiOworCiAvKiBXZWIgSW5zcGVjdG9yIHdpbmRv
dyB0aXRsZSAqLwogIldlYiBJbnNwZWN0b3Ig4oCUICVAIiA9ICJXZWIgSW5zcGVjdG9yIOKAlCAl
QCI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3Jh
cC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2NyeXB0by9TZXJpYWxpemVkQ3J5cHRv
S2V5V3JhcC5oCShyZXZpc2lvbiAxNjQwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9jcnlwdG8vU2Vy
aWFsaXplZENyeXB0b0tleVdyYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOCBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3Rlcktl
eShWZWN0b3I8dWludDhfdD4mKTsKKwogYm9vbCB3cmFwU2VyaWFsaXplZENyeXB0b0tleShjb25z
dCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBrZXks
IFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KTsKIGJvb2wgdW53cmFwU2VyaWFsaXplZENyeXB0b0tl
eShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+
JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdyYXBNYWMubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5t
bQkocmV2aXNpb24gMTY0MDI5KQorKysgU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxp
emVkQ3J5cHRvS2V5V3JhcE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjksOSArMjksMTIgQEAK
ICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAogI2luY2x1ZGUgIkNvbW1vbkNyeXB0b1V0aWxp
dGllcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3MuaCIKICNpbmNsdWRlIDxDb21tb25D
cnlwdG8vQ29tbW9uU3ltbWV0cmljS2V5d3JhcC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2
NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvQ3J5cHRv
Z3JhcGhpY1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0NSw4IEBAIGNvbnN0IE5TU3RyaW5nKiB3cmFwcGVk
S0VLS2V5ID0gQCJ3cmFwcGUKIGNvbnN0IE5TU3RyaW5nKiBlbmNyeXB0ZWRLZXlLZXkgPSBAImVu
Y3J5cHRlZEtleSI7CiBjb25zdCBOU1N0cmluZyogdGFnS2V5ID0gQCJ0YWciOwogCitjb25zdCBz
aXplX3QgbWFzdGVyS2V5U2l6ZUluQnl0ZXMgPSAxNjsKKwogaW5saW5lIFZlY3Rvcjx1aW50OF90
PiB2ZWN0b3JGcm9tTlNEYXRhKE5TRGF0YSogZGF0YSkKIHsKICAgICBWZWN0b3I8dWludDhfdD4g
cmVzdWx0OwpAQCAtNDksNiArNTQsMTA5IEBAIGlubGluZSBWZWN0b3I8dWludDhfdD4gdmVjdG9y
RnJvbU5TRGF0YSgKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgTlNTdHJpbmcqIG1h
c3RlcktleUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKCkKK3sKKyAgICByZXR1cm4g
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb20uYXBwbGUuV2ViS2l0LldlYkNyeXB0by5t
YXN0ZXIrJUAiLCBbW05TUnVubmluZ0FwcGxpY2F0aW9uIGN1cnJlbnRBcHBsaWNhdGlvbl0gYnVu
ZGxlSWRlbnRpZmllcl1dOworfQorCisjaWYgUExBVEZPUk0oSU9TKQorCitib29sIGdldERlZmF1
bHRXZWJDcnlwdG9NYXN0ZXJLZXkoVmVjdG9yPHVpbnQ4X3Q+JiBtYXN0ZXJLZXkpCit7CisgICAg
Ly8gRklYTUU6IEltcGxlbWVudC4KKyAgICBtYXN0ZXJLZXkucmVzaXplKG1hc3RlcktleVNpemVJ
bkJ5dGVzKTsKKyAgICBtZW1zZXQobWFzdGVyS2V5LmRhdGEoKSwgMCwgbWFzdGVyS2V5LnNpemUo
KSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbHNlCisKK3N0YXRpYyBib29sIGNyZWF0ZUFu
ZFN0b3JlTWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5RGF0YSkKK3sKKyAgICBt
YXN0ZXJLZXlEYXRhLnJlc2l6ZShtYXN0ZXJLZXlTaXplSW5CeXRlcyk7CisgICAgQ0NSYW5kb21D
b3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgbWFzdGVyS2V5RGF0YS5kYXRhKCksIG1hc3Rlcktl
eURhdGEuc2l6ZSgpKTsKKworICAgIE5TU3RyaW5nICpsb2NhbGl6ZWRJdGVtTmFtZSA9IHdlYkNy
eXB0b01hc3RlcktleUtleWNoYWluTGFiZWwoW1tOU1J1bm5pbmdBcHBsaWNhdGlvbiBjdXJyZW50
QXBwbGljYXRpb25dIGxvY2FsaXplZE5hbWVdKTsKKworICAgIFNlY0FjY2Vzc1JlZiBhY2Nlc3NS
ZWY7CisgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjQWNjZXNzQ3JlYXRlKChDRlN0cmluZ1JlZils
b2NhbGl6ZWRJdGVtTmFtZSwgbnVsbHB0ciwgJmFjY2Vzc1JlZik7CisgICAgaWYgKHN0YXR1cykg
eworICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSBzZWN1cml0eSBhY2Nlc3Mg
b2JqZWN0IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBlcnJvciAlZCIsIChpbnQp
c3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAgIFJldGFpblB0cjxT
ZWNBY2Nlc3NSZWY+IGFjY2VzcyA9IGFkb3B0Q0YoYWNjZXNzUmVmKTsKKworICAgIFJldGFpblB0
cjxDRkFycmF5UmVmPiBhY2xzID0gYWRvcHRDRihTZWNBY2Nlc3NDb3B5TWF0Y2hpbmdBQ0xMaXN0
KGFjY2Vzc1JlZiwga1NlY0FDTEF1dGhvcml6YXRpb25FeHBvcnRDbGVhcikpOworICAgIFNlY0FD
TFJlZiBhY2wgPSAoU2VjQUNMUmVmKUNGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoYWNscy5nZXQoKSwg
MCk7CisKKyAgICBTZWNUcnVzdGVkQXBwbGljYXRpb25SZWYgdHJ1c3RlZEFwcFJlZjsKKyAgICBz
dGF0dXMgPSBTZWNUcnVzdGVkQXBwbGljYXRpb25DcmVhdGVGcm9tUGF0aCgwLCAmdHJ1c3RlZEFw
cFJlZik7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBj
cmVhdGUgYSB0cnVzdGVkIGFwcGxpY2F0aW9uIG9iamVjdCBmb3Igc3RvcmluZyBXZWJDcnlwdG8g
bWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgIH0KKyAgICBSZXRhaW5QdHI8U2VjVHJ1c3RlZEFwcGxpY2F0aW9uUmVmPiB0cnVz
dGVkQXBwID0gYWRvcHRDRih0cnVzdGVkQXBwUmVmKTsKKworICAgIHN0YXR1cyA9IFNlY0FDTFNl
dENvbnRlbnRzKGFjbCwgKENGQXJyYXlSZWYpQFsoaWQpdHJ1c3RlZEFwcC5nZXQoKV0sIChDRlN0
cmluZ1JlZilsb2NhbGl6ZWRJdGVtTmFtZSwga1NlY0tleWNoYWluUHJvbXB0UmVxdWlyZVBhc3Nw
aGFzZSk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBz
ZXQgQUNMIGZvciBXZWJDcnlwdG8gbWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKworICAgIFZlY3RvcjxjaGFyPiBiYXNl
NjRFbmNvZGVkTWFzdGVyS2V5RGF0YTsKKyAgICBiYXNlNjRFbmNvZGUobWFzdGVyS2V5RGF0YSwg
YmFzZTY0RW5jb2RlZE1hc3RlcktleURhdGEpOworCisgICAgLy8gQ2Fubm90IHVzZSBrU2VjQ2xh
c3NLZXkgYmVjYXVzZSBvZiA8cmRhcjovL3Byb2JsZW0vMTYwNjgyMDc+LgorICAgIE5TRGljdGlv
bmFyeSAqYXR0cmlidXRlcyA9IEB7CisgICAgICAgIChpZClrU2VjQ2xhc3MgOiAoaWQpa1NlY0Ns
YXNzR2VuZXJpY1Bhc3N3b3JkLAorICAgICAgICAoaWQpa1NlY0F0dHJTeW5jaHJvbml6YWJsZSA6
IEBOTywKKyAgICAgICAgKGlkKWtTZWNBdHRySXNQZXJtYW5lbnQgOiBAWUVTLAorICAgICAgICAo
aWQpa1NlY0F0dHJBY2Nlc3MgOiAoaWQpYWNjZXNzLmdldCgpLAorICAgICAgICAoaWQpa1NlY0F0
dHJDb21tZW50IDogd2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hhaW5Db21tZW50KCksCisgICAgICAg
IChpZClrU2VjQXR0ckxhYmVsIDogbG9jYWxpemVkSXRlbU5hbWUsCisgICAgICAgIChpZClrU2Vj
QXR0ckFjY291bnQgOiBtYXN0ZXJLZXlBY2NvdW50TmFtZUZvckN1cnJlbnRBcHBsaWNhdGlvbigp
LAorICAgICAgICAoaWQpa1NlY1ZhbHVlRGF0YSA6IFtOU0RhdGEgZGF0YVdpdGhCeXRlczpiYXNl
NjRFbmNvZGVkTWFzdGVyS2V5RGF0YS5kYXRhKCkgbGVuZ3RoOmJhc2U2NEVuY29kZWRNYXN0ZXJL
ZXlEYXRhLnNpemUoKV0sCisgICAgfTsKKworICAgIHN0YXR1cyA9IFNlY0l0ZW1BZGQoKENGRGlj
dGlvbmFyeVJlZilhdHRyaWJ1dGVzLCBudWxscHRyKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAg
ICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHN0b3JlIFdlYkNyeXB0byBtYXN0ZXIga2V5LCBlcnJv
ciAlZCIsIChpbnQpc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQorICAg
IHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBmaW5kTWFzdGVyS2V5KFZlY3Rvcjx1aW50
OF90PiYgbWFzdGVyS2V5RGF0YSkKK3sKKyAgICBOU0RpY3Rpb25hcnkgKnF1ZXJ5ID0gQHsKKyAg
ICAgICAgKGlkKWtTZWNDbGFzcyA6IChpZClrU2VjQ2xhc3NHZW5lcmljUGFzc3dvcmQsCisgICAg
ICAgIChpZClrU2VjQXR0ckFjY291bnQgOiBtYXN0ZXJLZXlBY2NvdW50TmFtZUZvckN1cnJlbnRB
cHBsaWNhdGlvbigpLAorICAgICAgICAoaWQpa1NlY1JldHVybkRhdGEgOiBAWUVTLAorICAgIH07
CisKKyAgICBDRkRhdGFSZWYga2V5RGF0YVJlZjsKKyAgICBPU1N0YXR1cyBzdGF0dXMgPSBTZWNJ
dGVtQ29weU1hdGNoaW5nKChDRkRpY3Rpb25hcnlSZWYpcXVlcnksIChDRlR5cGVSZWYqKSZrZXlE
YXRhUmVmKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIGlmIChzdGF0dXMgIT0gZXJyU2Vj
SXRlbU5vdEZvdW5kICYmIHN0YXR1cyAhPSBlcnJTZWNVc2VyQ2FuY2VsZWQpCisgICAgICAgICAg
ICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIFdlYkNyeXB0byBtYXN0ZXIga2V5IGluIEtl
eWNoYWluLCBlcnJvciAlZCIsIChpbnQpc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlEYXRhID0gYWRvcHRDRihrZXlEYXRh
UmVmKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRFbmNvZGVkTWFzdGVyS2V5RGF0YSA9
IHZlY3RvckZyb21OU0RhdGEoKE5TRGF0YSAqKWtleURhdGEuZ2V0KCkpOworICAgIHJldHVybiBi
YXNlNjREZWNvZGUoKGNvbnN0IGNoYXIqKWJhc2U2NEVuY29kZWRNYXN0ZXJLZXlEYXRhLmRhdGEo
KSwgYmFzZTY0RW5jb2RlZE1hc3RlcktleURhdGEuc2l6ZSgpLCBtYXN0ZXJLZXlEYXRhKTsKK30K
KworYm9vbCBnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFz
dGVyS2V5KQoreworICAgIGlmICghZmluZE1hc3RlcktleShtYXN0ZXJLZXkpICYmICFjcmVhdGVB
bmRTdG9yZU1hc3RlcktleShtYXN0ZXJLZXkpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
UkVMRUFTRV9BU1NFUlQobWFzdGVyS2V5LnNpemUoKSA9PSBtYXN0ZXJLZXlTaXplSW5CeXRlcyk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiBib29sIHdyYXBTZXJpYWxpemVkQ3J5
cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5LCBjb25zdCBWZWN0b3I8dWlu
dDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQpCiB7CiAgICAgVmVjdG9yPHVpbnQ4
X3Q+IGtlaygxNik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJp
bmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRT
dHJpbmdzLmNwcAkocmV2aXNpb24gMTY0MDI5KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
TG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExMTgsNCArMTExOCwxNiBA
QCBTdHJpbmcgdXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51VGl0bGUoCiAgICAgcmV0dXJuIGZv
cm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJTaG93IGluIGJsb2NrZWQgcGx1Zy1p
biIsICJUaXRsZSBvZiB0aGUgY29udGV4dCBtZW51IGl0ZW0gdG8gc2hvdyB3aGVuIFBERlBsdWdp
biB3YXMgdXNlZCBpbnN0ZWFkIG9mIGEgYmxvY2tlZCBwbHVnaW4iKSk7CiB9CiAKKyNpZiBFTkFC
TEUoU1VCVExFX0NSWVBUTykKK1N0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkxhYmVs
KGNvbnN0IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25OYW1lKQoreworICAgIHJldHVybiBm
b3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygiJUAgV2ViQ3J5cHRvIE1hc3RlciBL
ZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBp
biBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5hbWUuY3JlYXRlQ0ZTdHJpbmcoKS5n
ZXQoKSk7Cit9CisKK1N0cmluZyB3ZWJDcnlwdG9NYXN0ZXJLZXlLZXljaGFpbkNvbW1lbnQoKQor
eworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJVc2VkIHRvIGVuY3J5cHQgV2ViQ3J5cHRvIGtl
eXMgaW4gcGVyc2lzdGVudCBzdG9yYWdlLCBzdWNoIGFzIEluZGV4ZWREQiIsICJEZXNjcmlwdGlv
biBvZiBXZWJDcnlwdG8gbWFzdGVyIGtleXMgaW4gS2V5Y2hhaW4iKTsKK30KKyNlbmRpZgorCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2Nh
bGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9j
YWxpemVkU3RyaW5ncy5oCShyZXZpc2lvbiAxNjQwMjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2Myw2ICsyNjMsMTEg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgU3RyaW5nIHVzZUJsb2NrZWRQbHVnSW5Db250
ZXh0TWVudVRpdGxlKCk7CiAKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKKyAgICBTdHJpbmcg
d2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hhaW5MYWJlbChjb25zdCBTdHJpbmcmIGxvY2FsaXplZEFw
cGxpY2F0aW9uTmFtZSk7CisgICAgU3RyaW5nIHdlYkNyeXB0b01hc3RlcktleUtleWNoYWluQ29t
bWVudCgpOworI2VuZGlmCisKICNkZWZpbmUgV0VCX1VJX1NUUklORyhzdHJpbmcsIGRlc2NyaXB0
aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5nKQogI2RlZmluZSBXRUJfVUlfU1RS
SU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdlYkNvcmU6OmxvY2FsaXplZFN0cmlu
ZyhrZXkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDE0MSkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE0LTAyLTE0
ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFs
bCBXZWJLaXQgY2xpZW50cyBzaG91bGQgZW5jcnlwdCBXZWJDcnlwdG8ga2V5cyBhdXRvbWF0aWNh
bGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4
NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6
OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnVud3JhcENy
eXB0b0tleSk6CisgICAgICAgIENhbGwgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaWYga2V5
IGlzIG5vdCBwcm92aWRlZCBieSBhIGNsaWVudC4KKwogMjAxNC0wMi0xNCAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBTUEkgZm9yIGF1dGhlbnRp
Y2F0aW9uIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJ
KHJldmlzaW9uIDE2NDAyOSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDgzLDI1ICs0NDgzLDI5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXYKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykK
IHZvaWQgV2ViUGFnZVByb3h5Ojp3cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
a2V5LCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSkKIHsKKyAg
ICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogICAgIFJlZlB0cjxBUEk6OkRhdGE+IGtleURh
dGEgPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS5jbGllbnQoKS5jb3B5V2ViQ3J5cHRvTWFzdGVyS2V5
KCZtX3Byb2Nlc3MtPmNvbnRleHQoKSk7Ci0gICAgaWYgKCFrZXlEYXRhKSB7CisgICAgaWYgKGtl
eURhdGEpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0
b3IoKTsKKyAgICBlbHNlIGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJL
ZXkpKSB7CiAgICAgICAgIHN1Y2NlZWRlZCA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleSA9IGtleURhdGEtPmRhdGFSZWZlcmVu
Y2UoKS52ZWN0b3IoKTsKICAgICBzdWNjZWVkZWQgPSB3cmFwU2VyaWFsaXplZENyeXB0b0tleSht
YXN0ZXJLZXksIGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojp1bndy
YXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBib29sJiBzdWNj
ZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYga2V5KQogeworICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0
ZXJLZXk7CiAgICAgUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0YSA9IG1fcHJvY2Vzcy0+Y29udGV4
dCgpLmNsaWVudCgpLmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXkoJm1fcHJvY2Vzcy0+Y29udGV4dCgp
KTsKLSAgICBpZiAoIWtleURhdGEpIHsKKyAgICBpZiAoa2V5RGF0YSkKKyAgICAgICAgbWFzdGVy
S2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOworICAgIGVsc2UgaWYgKCFn
ZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpIHsKICAgICAgICAgc3VjY2Vl
ZGVkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBWZWN0b3I8dWludDhf
dD4gbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3RvcigpOwogICAgIHN1
Y2NlZWRlZCA9IHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCB3cmFwcGVkS2V5
LCBrZXkpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNjQxNDEp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxNC0wMi0xNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
KworICAgICAgICBbTWFjXSBBbGwgV2ViS2l0IGNsaWVudHMgc2hvdWxkIGVuY3J5cHQgV2ViQ3J5
cHRvIGtleXMgYXV0b21hdGljYWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTI4ODUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW06CisgICAg
ICAgIChXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViQ2hyb21l
Q2xpZW50Ojp1bndyYXBDcnlwdG9LZXkpOgorICAgICAgICBDYWxsIHRoZSBkZWZhdWx0IGltcGxl
bWVudGF0aW9uIGlmIGtleSBpcyBub3QgcHJvdmlkZWQgYnkgYSBjbGllbnQuCisKIDIwMTQtMDIt
MTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBE
dXJpbmcgYSBjb3B5LCBwb3NpdGlvbjpmaXhlZCBnZXRzIGNvbnZlcnRlZCB0byBwb3NpdGlvbjph
YnNvbHV0ZSBldmVuIGlmIG9ubHkgcGFydCBvZiB0aGUgZG9jdW1lbnQgaXMgc2VsZWN0ZWQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVD
bGllbnQubW0JKHJldmlzaW9uIDE2NDE0MCkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMTAwMiwyNyArMTAw
MiwyNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1bGxTY3JlZW5Gb3JFCiAjaWYgRU5B
QkxFKFNVQlRMRV9DUllQVE8pCiBib29sIFdlYkNocm9tZUNsaWVudDo6d3JhcENyeXB0b0tleShj
b25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5KSBj
b25zdAogeworICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAgICAgU0VMIHNlbGVjdG9y
ID0gQHNlbGVjdG9yKHdlYkNyeXB0b01hc3RlcktleUZvcldlYlZpZXc6KTsKLSAgICBpZiAoIVtb
bV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0pCisgICAg
aWYgKFtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxlY3RvcjpzZWxlY3Rvcl0p
IHsKKyAgICAgICAgTlNEYXRhKiBrZXlEYXRhID0gQ2FsbFVJRGVsZWdhdGUobV93ZWJWaWV3LCBz
ZWxlY3Rvcik7CisgICAgICAgIG1hc3RlcktleS5hcHBlbmQoKHVpbnQ4X3QqKVtrZXlEYXRhIGJ5
dGVzXSwgW2tleURhdGEgbGVuZ3RoXSk7CisgICAgfSBlbHNlIGlmICghZ2V0RGVmYXVsdFdlYkNy
eXB0b01hc3RlcktleShtYXN0ZXJLZXkpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBO
U0RhdGEqIGtleURhdGEgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yKTsKLQot
ICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7Ci0gICAgbWFzdGVyS2V5LmFwcGVuZCgodWlu
dDhfdCopW2tleURhdGEgYnl0ZXNdLCBba2V5RGF0YSBsZW5ndGhdKTsKICAgICByZXR1cm4gd3Jh
cFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCBrZXksIHdyYXBwZWRLZXkpOwogfQogCiBi
b29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90
PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkpIGNvbnN0CiB7CisgICAgVmVjdG9y
PHVpbnQ4X3Q+IG1hc3RlcktleTsKICAgICBTRUwgc2VsZWN0b3IgPSBAc2VsZWN0b3Iod2ViQ3J5
cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopOwotICAgIGlmICghW1ttX3dlYlZpZXcgVUlEZWxlZ2F0
ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKKyAgICBpZiAoW1ttX3dlYlZpZXcgVUlE
ZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkgeworICAgICAgICBOU0RhdGEq
IGtleURhdGEgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yKTsKKyAgICAgICAg
bWFzdGVyS2V5LmFwcGVuZCgodWludDhfdCopW2tleURhdGEgYnl0ZXNdLCBba2V5RGF0YSBsZW5n
dGhdKTsKKyAgICB9IGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3Rl
cktleSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIE5TRGF0YSAqa2V5RGF0YSA9IENh
bGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IpOwotCi0gICAgVmVjdG9yPHVpbnQ4X3Q+
IG1hc3RlcktleTsKLSAgICBtYXN0ZXJLZXkuYXBwZW5kKCh1aW50OF90Kilba2V5RGF0YSBieXRl
c10sIFtrZXlEYXRhIGxlbmd0aF0pOwogICAgIHJldHVybiB1bndyYXBTZXJpYWxpemVkQ3J5cHRv
S2V5KG1hc3RlcktleSwgd3JhcHBlZEtleSwga2V5KTsKIH0KICNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224267</attachid>
            <date>2014-02-14 17:33:21 -0800</date>
            <delta_ts>2014-02-15 14:54:03 -0800</delta_ts>
            <desc>with less 10.8 build breakage</desc>
            <filename>Keychain.txt</filename>
            <type>text/plain</type>
            <size>15512</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2NDE0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDE0LTAyLTE0ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIFtNYWNdIEFsbCBXZWJLaXQg
Y2xpZW50cyBzaG91bGQgZW5jcnlwdCBXZWJDcnlwdG8ga2V5cyBhdXRvbWF0aWNhbGx5CisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg4NTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbnN0YWxsIGEgcGVy
c2lzdGVudCBtYXN0ZXIga2V5IGluIEtleWNoYWluIG9uIGZpcnN0IHVzZSBvZiBXZWJDcnlwdG8g
a2V5IHNlcmlhbGl6YXRpb24uCisgICAgICAgIFRoZSBrZXkgaXMgcGVyIGFwcGxpY2F0aW9uLCBw
cm90ZWN0ZWQgd2l0aCBBQ0wuCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxl
LnN0cmluZ3M6CisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogY3J5cHRvL1Nl
cmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmg6CisgICAgICAgICogY3J5cHRvL21hYy9TZXJpYWxpemVk
Q3J5cHRvS2V5V3JhcE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6Om1hc3RlcktleUFjY291bnRO
YW1lRm9yQ3VycmVudEFwcGxpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmdldERlZmF1bHRX
ZWJDcnlwdG9NYXN0ZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQW5kU3RvcmVNYXN0
ZXJLZXkpOgorICAgICAgICAoV2ViQ29yZTo6ZmluZE1hc3RlcktleSk6CisgICAgICAgICogcGxh
dGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3ZWJDcnlwdG9N
YXN0ZXJLZXlLZXljaGFpbkxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OndlYkNyeXB0b01hc3Rl
cktleUtleWNoYWluQ29tbWVudCk6CisgICAgICAgICogcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5n
cy5oOgorCiAyMDE0LTAyLTE0ICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgSW1wbGVtZW50IGEgZmV3IG1vcmUgQXJyYXkgcHJvdG90eXBlIGZ1bmN0aW9ucyBpbiBK
UwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDE2NDAyOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCSh3b3JraW5nIGNvcHkpCkBAIC0yNjI1LDYgKzI2MjUsNyBA
QCBfd2tDcmVhdGVNZW1vcnlTdGF0dXNQcmVzc3VyZUNyaXRpY2FsRGlzCiBfd2tDVEZvbnRUcmFu
c2Zvcm1HbHlwaHMKIF9fWk43V2ViQ29yZTIzd3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXlFUktOM1dU
RjZWZWN0b3JJaExtMEVOUzBfMTVDcmFzaE9uT3ZlcmZsb3dFRUVTNV9SUzNfCiBfX1pON1dlYkNv
cmUyNXVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXlFUktOM1dURjZWZWN0b3JJaExtMEVOUzBfMTVD
cmFzaE9uT3ZlcmZsb3dFRUVTNV9SUzNfCitfX1pON1dlYkNvcmUyOGdldERlZmF1bHRXZWJDcnlw
dG9NYXN0ZXJLZXlFUk4zV1RGNlZlY3RvckloTG0wRU5TMF8xNUNyYXNoT25PdmVyZmxvd0VFRQog
I2VuZGlmCiAKICNpZiBFTkFCTEUoM0RfUkVOREVSSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL0VuZ2xpc2gubHByb2ovTG9jYWxpemFibGUuc3RyaW5ncwkocmV2aXNpb24gMTY0MDI5
KQorKysgU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCSh3
b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw5IEBACiAvKiBWaXNpYmxlIG5hbWUgb2YgdGhlIHdl
YiBwcm9jZXNzLiBUaGUgYXJndW1lbnQgaXMgdGhlIGFwcGxpY2F0aW9uIG5hbWUuICovCiAiJUAg
V2ViIENvbnRlbnQiID0gIiVAIFdlYiBDb250ZW50IjsKIAorLyogTmFtZSBvZiBhcHBsaWNhdGlv
bidzIHNpbmdsZSBXZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiAqLworIiVAIFdlYkNy
eXB0byBNYXN0ZXIgS2V5IiA9ICIlQCBXZWJDcnlwdG8gTWFzdGVyIEtleSI7CisKIC8qIExhYmVs
IHRvIGRlc2NyaWJlIHRoZSBudW1iZXIgb2YgZmlsZXMgc2VsZWN0ZWQgaW4gYSBmaWxlIHVwbG9h
ZCBjb250cm9sIHRoYXQgYWxsb3dzIG11bHRpcGxlIGZpbGVzICovCiAiJWQgZmlsZXMiID0gIiVk
IGZpbGVzIjsKIApAQCAtNTk1LDYgKzU5OCw5IEBACiAvKiBVbmRvIGFjdGlvbiBuYW1lICovCiAi
VXNlIFN0YW5kYXJkIExpZ2F0dXJlcyAoVW5kbyBhY3Rpb24gbmFtZSkiID0gIlVzZSBTdGFuZGFy
ZCBMaWdhdHVyZXMiOwogCisvKiBEZXNjcmlwdGlvbiBvZiBXZWJDcnlwdG8gbWFzdGVyIGtleXMg
aW4gS2V5Y2hhaW4gKi8KKyJVc2VkIHRvIGVuY3J5cHQgV2ViQ3J5cHRvIGtleXMgaW4gcGVyc2lz
dGVudCBzdG9yYWdlLCBzdWNoIGFzIEluZGV4ZWREQiIgPSAiVXNlZCB0byBlbmNyeXB0IFdlYkNy
eXB0byBrZXlzIGluIHBlcnNpc3RlbnQgc3RvcmFnZSwgc3VjaCBhcyBJbmRleGVkREIiOworCiAv
KiBXZWIgSW5zcGVjdG9yIHdpbmRvdyB0aXRsZSAqLwogIldlYiBJbnNwZWN0b3Ig4oCUICVAIiA9
ICJXZWIgSW5zcGVjdG9yIOKAlCAlQCI7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9T
ZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Ny
eXB0by9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oCShyZXZpc2lvbiAxNjQwMjkpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jcnlwdG8vU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaAkod29ya2luZyBjb3B5
KQpAQCAtMzMsNiArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Jvb2wgZ2V0RGVm
YXVsdFdlYkNyeXB0b01hc3RlcktleShWZWN0b3I8dWludDhfdD4mKTsKKwogYm9vbCB3cmFwU2Vy
aWFsaXplZENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwgY29uc3Qg
VmVjdG9yPHVpbnQ4X3Q+JiBrZXksIFZlY3Rvcjx1aW50OF90PiYgcmVzdWx0KTsKIGJvb2wgdW53
cmFwU2VyaWFsaXplZENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIG1hc3RlcktleSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3cmFwcGVkS2V5LCBWZWN0b3I8dWludDhfdD4mIGtleSk7
CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2NyeXB0by9tYWMvU2VyaWFsaXplZENyeXB0b0tleVdy
YXBNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3J5cHRvL21hYy9TZXJpYWxp
emVkQ3J5cHRvS2V5V3JhcE1hYy5tbQkocmV2aXNpb24gMTY0MDI5KQorKysgU291cmNlL1dlYkNv
cmUvY3J5cHRvL21hYy9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcE1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtMjksOSArMjksMTIgQEAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKIAogI2luY2x1
ZGUgIkNvbW1vbkNyeXB0b1V0aWxpdGllcy5oIgorI2luY2x1ZGUgIkxvY2FsaXplZFN0cmluZ3Mu
aCIKICNpbmNsdWRlIDxDb21tb25DcnlwdG8vQ29tbW9uU3ltbWV0cmljS2V5d3JhcC5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0Jhc2U2NC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ICNpbmNsdWRlIDx3dGYvQ3J5cHRvZ3JhcGhpY1V0aWxpdGllcy5oPgorI2luY2x1ZGUgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw2ICs0NSw4IEBAIGNv
bnN0IE5TU3RyaW5nKiB3cmFwcGVkS0VLS2V5ID0gQCJ3cmFwcGUKIGNvbnN0IE5TU3RyaW5nKiBl
bmNyeXB0ZWRLZXlLZXkgPSBAImVuY3J5cHRlZEtleSI7CiBjb25zdCBOU1N0cmluZyogdGFnS2V5
ID0gQCJ0YWciOwogCitjb25zdCBzaXplX3QgbWFzdGVyS2V5U2l6ZUluQnl0ZXMgPSAxNjsKKwog
aW5saW5lIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3JGcm9tTlNEYXRhKE5TRGF0YSogZGF0YSkKIHsK
ICAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0OwpAQCAtNDksNiArNTQsMTA5IEBAIGlubGluZSBW
ZWN0b3I8dWludDhfdD4gdmVjdG9yRnJvbU5TRGF0YSgKICAgICByZXR1cm4gcmVzdWx0OwogfQog
CitzdGF0aWMgTlNTdHJpbmcqIG1hc3RlcktleUFjY291bnROYW1lRm9yQ3VycmVudEFwcGxpY2F0
aW9uKCkKK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJjb20uYXBw
bGUuV2ViS2l0LldlYkNyeXB0by5tYXN0ZXIrJUAiLCBbW05TUnVubmluZ0FwcGxpY2F0aW9uIGN1
cnJlbnRBcHBsaWNhdGlvbl0gYnVuZGxlSWRlbnRpZmllcl1dOworfQorCisjaWYgUExBVEZPUk0o
SU9TKQorCitib29sIGdldERlZmF1bHRXZWJDcnlwdG9NYXN0ZXJLZXkoVmVjdG9yPHVpbnQ4X3Q+
JiBtYXN0ZXJLZXkpCit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudC4KKyAgICBtYXN0ZXJLZXku
cmVzaXplKG1hc3RlcktleVNpemVJbkJ5dGVzKTsKKyAgICBtZW1zZXQobWFzdGVyS2V5LmRhdGEo
KSwgMCwgbWFzdGVyS2V5LnNpemUoKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbHNlCisK
K3N0YXRpYyBib29sIGNyZWF0ZUFuZFN0b3JlTWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFz
dGVyS2V5RGF0YSkKK3sKKyAgICBtYXN0ZXJLZXlEYXRhLnJlc2l6ZShtYXN0ZXJLZXlTaXplSW5C
eXRlcyk7CisgICAgQ0NSYW5kb21Db3B5Qnl0ZXMoa0NDUmFuZG9tRGVmYXVsdCwgbWFzdGVyS2V5
RGF0YS5kYXRhKCksIG1hc3RlcktleURhdGEuc2l6ZSgpKTsKKworICAgIE5TU3RyaW5nICpsb2Nh
bGl6ZWRJdGVtTmFtZSA9IHdlYkNyeXB0b01hc3RlcktleUtleWNoYWluTGFiZWwoW1tOU1J1bm5p
bmdBcHBsaWNhdGlvbiBjdXJyZW50QXBwbGljYXRpb25dIGxvY2FsaXplZE5hbWVdKTsKKworICAg
IFNlY0FjY2Vzc1JlZiBhY2Nlc3NSZWY7CisgICAgT1NTdGF0dXMgc3RhdHVzID0gU2VjQWNjZXNz
Q3JlYXRlKChDRlN0cmluZ1JlZilsb2NhbGl6ZWRJdGVtTmFtZSwgbnVsbHB0ciwgJmFjY2Vzc1Jl
Zik7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBXVEZMb2dBbHdheXMoIkNhbm5vdCBjcmVh
dGUgYSBzZWN1cml0eSBhY2Nlc3Mgb2JqZWN0IGZvciBzdG9yaW5nIFdlYkNyeXB0byBtYXN0ZXIg
a2V5LCBlcnJvciAlZCIsIChpbnQpc3RhdHVzKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7Cisg
ICAgfQorICAgIFJldGFpblB0cjxTZWNBY2Nlc3NSZWY+IGFjY2VzcyA9IGFkb3B0Q0YoYWNjZXNz
UmVmKTsKKworICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBhY2xzID0gYWRvcHRDRihTZWNBY2Nl
c3NDb3B5TWF0Y2hpbmdBQ0xMaXN0KGFjY2Vzc1JlZiwga1NlY0FDTEF1dGhvcml6YXRpb25FeHBv
cnRDbGVhcikpOworICAgIFNlY0FDTFJlZiBhY2wgPSAoU2VjQUNMUmVmKUNGQXJyYXlHZXRWYWx1
ZUF0SW5kZXgoYWNscy5nZXQoKSwgMCk7CisKKyAgICBTZWNUcnVzdGVkQXBwbGljYXRpb25SZWYg
dHJ1c3RlZEFwcFJlZjsKKyAgICBzdGF0dXMgPSBTZWNUcnVzdGVkQXBwbGljYXRpb25DcmVhdGVG
cm9tUGF0aCgwLCAmdHJ1c3RlZEFwcFJlZik7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkNhbm5vdCBjcmVhdGUgYSB0cnVzdGVkIGFwcGxpY2F0aW9uIG9iamVjdCBm
b3Igc3RvcmluZyBXZWJDcnlwdG8gbWFzdGVyIGtleSwgZXJyb3IgJWQiLCAoaW50KXN0YXR1cyk7
CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICBSZXRhaW5QdHI8U2VjVHJ1c3Rl
ZEFwcGxpY2F0aW9uUmVmPiB0cnVzdGVkQXBwID0gYWRvcHRDRih0cnVzdGVkQXBwUmVmKTsKKwor
ICAgIHN0YXR1cyA9IFNlY0FDTFNldENvbnRlbnRzKGFjbCwgKENGQXJyYXlSZWYpQFsoaWQpdHJ1
c3RlZEFwcC5nZXQoKV0sIChDRlN0cmluZ1JlZilsb2NhbGl6ZWRJdGVtTmFtZSwga1NlY0tleWNo
YWluUHJvbXB0UmVxdWlyZVBhc3NwaGFzZSk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBX
VEZMb2dBbHdheXMoIkNhbm5vdCBzZXQgQUNMIGZvciBXZWJDcnlwdG8gbWFzdGVyIGtleSwgZXJy
b3IgJWQiLCAoaW50KXN0YXR1cyk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKwor
ICAgIFZlY3RvcjxjaGFyPiBiYXNlNjRFbmNvZGVkTWFzdGVyS2V5RGF0YTsKKyAgICBiYXNlNjRF
bmNvZGUobWFzdGVyS2V5RGF0YSwgYmFzZTY0RW5jb2RlZE1hc3RlcktleURhdGEpOworCisgICAg
Ly8gQ2Fubm90IHVzZSBrU2VjQ2xhc3NLZXkgYmVjYXVzZSBvZiA8cmRhcjovL3Byb2JsZW0vMTYw
NjgyMDc+LgorICAgIE5TRGljdGlvbmFyeSAqYXR0cmlidXRlcyA9IEB7CisgICAgICAgIChpZClr
U2VjQ2xhc3MgOiAoaWQpa1NlY0NsYXNzR2VuZXJpY1Bhc3N3b3JkLAorICAgICAgICAoaWQpa1Nl
Y0F0dHJTeW5jaHJvbml6YWJsZSA6IEBOTywKKyAgICAgICAgKGlkKWtTZWNBdHRySXNQZXJtYW5l
bnQgOiBAWUVTLAorICAgICAgICAoaWQpa1NlY0F0dHJBY2Nlc3MgOiAoaWQpYWNjZXNzLmdldCgp
LAorICAgICAgICAoaWQpa1NlY0F0dHJDb21tZW50IDogd2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hh
aW5Db21tZW50KCksCisgICAgICAgIChpZClrU2VjQXR0ckxhYmVsIDogbG9jYWxpemVkSXRlbU5h
bWUsCisgICAgICAgIChpZClrU2VjQXR0ckFjY291bnQgOiBtYXN0ZXJLZXlBY2NvdW50TmFtZUZv
ckN1cnJlbnRBcHBsaWNhdGlvbigpLAorICAgICAgICAoaWQpa1NlY1ZhbHVlRGF0YSA6IFtOU0Rh
dGEgZGF0YVdpdGhCeXRlczpiYXNlNjRFbmNvZGVkTWFzdGVyS2V5RGF0YS5kYXRhKCkgbGVuZ3Ro
OmJhc2U2NEVuY29kZWRNYXN0ZXJLZXlEYXRhLnNpemUoKV0sCisgICAgfTsKKworICAgIHN0YXR1
cyA9IFNlY0l0ZW1BZGQoKENGRGljdGlvbmFyeVJlZilhdHRyaWJ1dGVzLCBudWxscHRyKTsKKyAg
ICBpZiAoc3RhdHVzKSB7CisgICAgICAgIFdURkxvZ0Fsd2F5cygiQ2Fubm90IHN0b3JlIFdlYkNy
eXB0byBtYXN0ZXIga2V5LCBlcnJvciAlZCIsIChpbnQpc3RhdHVzKTsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBmaW5k
TWFzdGVyS2V5KFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5RGF0YSkKK3sKKyAgICBOU0RpY3Rp
b25hcnkgKnF1ZXJ5ID0gQHsKKyAgICAgICAgKGlkKWtTZWNDbGFzcyA6IChpZClrU2VjQ2xhc3NH
ZW5lcmljUGFzc3dvcmQsCisgICAgICAgIChpZClrU2VjQXR0ckFjY291bnQgOiBtYXN0ZXJLZXlB
Y2NvdW50TmFtZUZvckN1cnJlbnRBcHBsaWNhdGlvbigpLAorICAgICAgICAoaWQpa1NlY1JldHVy
bkRhdGEgOiBAWUVTLAorICAgIH07CisKKyAgICBDRkRhdGFSZWYga2V5RGF0YVJlZjsKKyAgICBP
U1N0YXR1cyBzdGF0dXMgPSBTZWNJdGVtQ29weU1hdGNoaW5nKChDRkRpY3Rpb25hcnlSZWYpcXVl
cnksIChDRlR5cGVSZWYqKSZrZXlEYXRhUmVmKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAg
IGlmIChzdGF0dXMgIT0gZXJyU2VjSXRlbU5vdEZvdW5kICYmIHN0YXR1cyAhPSBlcnJTZWNVc2Vy
Q2FuY2VsZWQpCisgICAgICAgICAgICBXVEZMb2dBbHdheXMoIkNvdWxkIG5vdCBmaW5kIFdlYkNy
eXB0byBtYXN0ZXIga2V5IGluIEtleWNoYWluLCBlcnJvciAlZCIsIChpbnQpc3RhdHVzKTsKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBrZXlE
YXRhID0gYWRvcHRDRihrZXlEYXRhUmVmKTsKKworICAgIFZlY3Rvcjx1aW50OF90PiBiYXNlNjRF
bmNvZGVkTWFzdGVyS2V5RGF0YSA9IHZlY3RvckZyb21OU0RhdGEoKE5TRGF0YSAqKWtleURhdGEu
Z2V0KCkpOworICAgIHJldHVybiBiYXNlNjREZWNvZGUoKGNvbnN0IGNoYXIqKWJhc2U2NEVuY29k
ZWRNYXN0ZXJLZXlEYXRhLmRhdGEoKSwgYmFzZTY0RW5jb2RlZE1hc3RlcktleURhdGEuc2l6ZSgp
LCBtYXN0ZXJLZXlEYXRhKTsKK30KKworYm9vbCBnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5
KFZlY3Rvcjx1aW50OF90PiYgbWFzdGVyS2V5KQoreworICAgIGlmICghZmluZE1hc3RlcktleSht
YXN0ZXJLZXkpICYmICFjcmVhdGVBbmRTdG9yZU1hc3RlcktleShtYXN0ZXJLZXkpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgUkVMRUFTRV9BU1NFUlQobWFzdGVyS2V5LnNpemUoKSA9PSBt
YXN0ZXJLZXlTaXplSW5CeXRlcyk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNlbmRpZgorCiBi
b29sIHdyYXBTZXJpYWxpemVkQ3J5cHRvS2V5KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWFzdGVy
S2V5LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVpbnQ4X3Q+JiByZXN1bHQp
CiB7CiAgICAgVmVjdG9yPHVpbnQ4X3Q+IGtlaygxNik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmNwcAkocmV2aXNpb24gMTY0MDI5KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTExMTgsNCArMTExOCwxNiBAQCBTdHJpbmcgdXNlQmxvY2tlZFBsdWdJbkNvbnRleHRNZW51
VGl0bGUoCiAgICAgcmV0dXJuIGZvcm1hdExvY2FsaXplZFN0cmluZyhXRUJfVUlfU1RSSU5HKCJT
aG93IGluIGJsb2NrZWQgcGx1Zy1pbiIsICJUaXRsZSBvZiB0aGUgY29udGV4dCBtZW51IGl0ZW0g
dG8gc2hvdyB3aGVuIFBERlBsdWdpbiB3YXMgdXNlZCBpbnN0ZWFkIG9mIGEgYmxvY2tlZCBwbHVn
aW4iKSk7CiB9CiAKKyNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKK1N0cmluZyB3ZWJDcnlwdG9N
YXN0ZXJLZXlLZXljaGFpbkxhYmVsKGNvbnN0IFN0cmluZyYgbG9jYWxpemVkQXBwbGljYXRpb25O
YW1lKQoreworICAgIHJldHVybiBmb3JtYXRMb2NhbGl6ZWRTdHJpbmcoV0VCX1VJX1NUUklORygi
JUAgV2ViQ3J5cHRvIE1hc3RlciBLZXkiLCAiTmFtZSBvZiBhcHBsaWNhdGlvbidzIHNpbmdsZSBX
ZWJDcnlwdG8gbWFzdGVyIGtleSBpbiBLZXljaGFpbiIpLCBsb2NhbGl6ZWRBcHBsaWNhdGlvbk5h
bWUuY3JlYXRlQ0ZTdHJpbmcoKS5nZXQoKSk7Cit9CisKK1N0cmluZyB3ZWJDcnlwdG9NYXN0ZXJL
ZXlLZXljaGFpbkNvbW1lbnQoKQoreworICAgIHJldHVybiBXRUJfVUlfU1RSSU5HKCJVc2VkIHRv
IGVuY3J5cHQgV2ViQ3J5cHRvIGtleXMgaW4gcGVyc2lzdGVudCBzdG9yYWdlLCBzdWNoIGFzIElu
ZGV4ZWREQiIsICJEZXNjcmlwdGlvbiBvZiBXZWJDcnlwdG8gbWFzdGVyIGtleXMgaW4gS2V5Y2hh
aW4iKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTG9jYWxpemVkU3RyaW5ncy5oCShyZXZpc2lvbiAxNjQwMjkpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Mb2NhbGl6ZWRTdHJpbmdzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI2Myw2ICsyNjMsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgU3RyaW5n
IHVzZUJsb2NrZWRQbHVnSW5Db250ZXh0TWVudVRpdGxlKCk7CiAKKyNpZiBFTkFCTEUoU1VCVExF
X0NSWVBUTykKKyAgICBTdHJpbmcgd2ViQ3J5cHRvTWFzdGVyS2V5S2V5Y2hhaW5MYWJlbChjb25z
dCBTdHJpbmcmIGxvY2FsaXplZEFwcGxpY2F0aW9uTmFtZSk7CisgICAgU3RyaW5nIHdlYkNyeXB0
b01hc3RlcktleUtleWNoYWluQ29tbWVudCgpOworI2VuZGlmCisKICNkZWZpbmUgV0VCX1VJX1NU
UklORyhzdHJpbmcsIGRlc2NyaXB0aW9uKSBXZWJDb3JlOjpsb2NhbGl6ZWRTdHJpbmcoc3RyaW5n
KQogI2RlZmluZSBXRUJfVUlfU1RSSU5HX0tFWShzdHJpbmcsIGtleSwgZGVzY3JpcHRpb24pIFdl
YkNvcmU6OmxvY2FsaXplZFN0cmluZyhrZXkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2
NDE0MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDE1IEBACisyMDE0LTAyLTE0ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29t
PgorCisgICAgICAgIFtNYWNdIEFsbCBXZWJLaXQgY2xpZW50cyBzaG91bGQgZW5jcnlwdCBXZWJD
cnlwdG8ga2V5cyBhdXRvbWF0aWNhbGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjg4NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OndyYXBDcnlwdG9LZXkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OnVud3JhcENyeXB0b0tleSk6CisgICAgICAgIENhbGwgdGhlIGRlZmF1bHQg
aW1wbGVtZW50YXRpb24gaWYga2V5IGlzIG5vdCBwcm92aWRlZCBieSBhIGNsaWVudC4KKwogMjAx
NC0wMi0xNCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkZCBTUEkgZm9yIGF1dGhlbnRpY2F0aW9uIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDE2NDAyOSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDgzLDI1ICs0
NDgzLDI5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXRTY3JvbGxQaW5uaW5nQmVoYXYKICNpZiBF
TkFCTEUoU1VCVExFX0NSWVBUTykKIHZvaWQgV2ViUGFnZVByb3h5Ojp3cmFwQ3J5cHRvS2V5KGNv
bnN0IFZlY3Rvcjx1aW50OF90PiYga2V5LCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90
PiYgd3JhcHBlZEtleSkKIHsKKyAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5OwogICAgIFJl
ZlB0cjxBUEk6OkRhdGE+IGtleURhdGEgPSBtX3Byb2Nlc3MtPmNvbnRleHQoKS5jbGllbnQoKS5j
b3B5V2ViQ3J5cHRvTWFzdGVyS2V5KCZtX3Byb2Nlc3MtPmNvbnRleHQoKSk7Ci0gICAgaWYgKCFr
ZXlEYXRhKSB7CisgICAgaWYgKGtleURhdGEpCisgICAgICAgIG1hc3RlcktleSA9IGtleURhdGEt
PmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKKyAgICBlbHNlIGlmICghZ2V0RGVmYXVsdFdlYkNy
eXB0b01hc3RlcktleShtYXN0ZXJLZXkpKSB7CiAgICAgICAgIHN1Y2NlZWRlZCA9IGZhbHNlOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleSA9
IGtleURhdGEtPmRhdGFSZWZlcmVuY2UoKS52ZWN0b3IoKTsKICAgICBzdWNjZWVkZWQgPSB3cmFw
U2VyaWFsaXplZENyeXB0b0tleShtYXN0ZXJLZXksIGtleSwgd3JhcHBlZEtleSk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5Ojp1bndyYXBDcnlwdG9LZXkoY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiB3
cmFwcGVkS2V5LCBib29sJiBzdWNjZWVkZWQsIFZlY3Rvcjx1aW50OF90PiYga2V5KQogeworICAg
IFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7CiAgICAgUmVmUHRyPEFQSTo6RGF0YT4ga2V5RGF0
YSA9IG1fcHJvY2Vzcy0+Y29udGV4dCgpLmNsaWVudCgpLmNvcHlXZWJDcnlwdG9NYXN0ZXJLZXko
Jm1fcHJvY2Vzcy0+Y29udGV4dCgpKTsKLSAgICBpZiAoIWtleURhdGEpIHsKKyAgICBpZiAoa2V5
RGF0YSkKKyAgICAgICAgbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5jZSgpLnZlY3Rv
cigpOworICAgIGVsc2UgaWYgKCFnZXREZWZhdWx0V2ViQ3J5cHRvTWFzdGVyS2V5KG1hc3Rlcktl
eSkpIHsKICAgICAgICAgc3VjY2VlZGVkID0gZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBWZWN0b3I8dWludDhfdD4gbWFzdGVyS2V5ID0ga2V5RGF0YS0+ZGF0YVJlZmVyZW5j
ZSgpLnZlY3RvcigpOwogICAgIHN1Y2NlZWRlZCA9IHVud3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXko
bWFzdGVyS2V5LCB3cmFwcGVkS2V5LCBrZXkpOwogfQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxNjQxNDEpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxNC0wMi0xNCAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBbTWFjXSBBbGwgV2ViS2l0IGNsaWVudHMg
c2hvdWxkIGVuY3J5cHQgV2ViQ3J5cHRvIGtleXMgYXV0b21hdGljYWxseQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4ODUyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW06CisgICAgICAgIChXZWJDaHJvbWVDbGllbnQ6OndyYXBDcnlwdG9LZXkp
OgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojp1bndyYXBDcnlwdG9LZXkpOgorICAgICAgICBD
YWxsIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGlmIGtleSBpcyBub3QgcHJvdmlkZWQgYnkg
YSBjbGllbnQuCisKIDIwMTQtMDItMTMgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBEdXJpbmcgYSBjb3B5LCBwb3NpdGlvbjpmaXhlZCBnZXRzIGNv
bnZlcnRlZCB0byBwb3NpdGlvbjphYnNvbHV0ZSBldmVuIGlmIG9ubHkgcGFydCBvZiB0aGUgZG9j
dW1lbnQgaXMgc2VsZWN0ZWQKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkNocm9tZUNsaWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0JKHJldmlzaW9uIDE2NDE0MCkKKysrIFNvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQkod29ya2luZyBj
b3B5KQpAQCAtMTAwMiwyNyArMTAwMiwyNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhpdEZ1
bGxTY3JlZW5Gb3JFCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQVE8pCiBib29sIFdlYkNocm9tZUNs
aWVudDo6d3JhcENyeXB0b0tleShjb25zdCBWZWN0b3I8dWludDhfdD4mIGtleSwgVmVjdG9yPHVp
bnQ4X3Q+JiB3cmFwcGVkS2V5KSBjb25zdAogeworICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJL
ZXk7CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9yKHdlYkNyeXB0b01hc3RlcktleUZvcldl
YlZpZXc6KTsKLSAgICBpZiAoIVtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRzVG9TZWxl
Y3RvcjpzZWxlY3Rvcl0pCisgICAgaWYgKFtbbV93ZWJWaWV3IFVJRGVsZWdhdGVdIHJlc3BvbmRz
VG9TZWxlY3RvcjpzZWxlY3Rvcl0pIHsKKyAgICAgICAgTlNEYXRhKiBrZXlEYXRhID0gQ2FsbFVJ
RGVsZWdhdGUobV93ZWJWaWV3LCBzZWxlY3Rvcik7CisgICAgICAgIG1hc3RlcktleS5hcHBlbmQo
KHVpbnQ4X3QqKVtrZXlEYXRhIGJ5dGVzXSwgW2tleURhdGEgbGVuZ3RoXSk7CisgICAgfSBlbHNl
IGlmICghZ2V0RGVmYXVsdFdlYkNyeXB0b01hc3RlcktleShtYXN0ZXJLZXkpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICBOU0RhdGEqIGtleURhdGEgPSBDYWxsVUlEZWxlZ2F0ZShtX3dl
YlZpZXcsIHNlbGVjdG9yKTsKLQotICAgIFZlY3Rvcjx1aW50OF90PiBtYXN0ZXJLZXk7Ci0gICAg
bWFzdGVyS2V5LmFwcGVuZCgodWludDhfdCopW2tleURhdGEgYnl0ZXNdLCBba2V5RGF0YSBsZW5n
dGhdKTsKICAgICByZXR1cm4gd3JhcFNlcmlhbGl6ZWRDcnlwdG9LZXkobWFzdGVyS2V5LCBrZXks
IHdyYXBwZWRLZXkpOwogfQogCiBib29sIFdlYkNocm9tZUNsaWVudDo6dW53cmFwQ3J5cHRvS2V5
KGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgd3JhcHBlZEtleSwgVmVjdG9yPHVpbnQ4X3Q+JiBrZXkp
IGNvbnN0CiB7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleTsKICAgICBTRUwgc2VsZWN0
b3IgPSBAc2VsZWN0b3Iod2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzopOwotICAgIGlmICgh
W1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9yXSkKKyAg
ICBpZiAoW1ttX3dlYlZpZXcgVUlEZWxlZ2F0ZV0gcmVzcG9uZHNUb1NlbGVjdG9yOnNlbGVjdG9y
XSkgeworICAgICAgICBOU0RhdGEqIGtleURhdGEgPSBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcs
IHNlbGVjdG9yKTsKKyAgICAgICAgbWFzdGVyS2V5LmFwcGVuZCgodWludDhfdCopW2tleURhdGEg
Ynl0ZXNdLCBba2V5RGF0YSBsZW5ndGhdKTsKKyAgICB9IGVsc2UgaWYgKCFnZXREZWZhdWx0V2Vi
Q3J5cHRvTWFzdGVyS2V5KG1hc3RlcktleSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IE5TRGF0YSAqa2V5RGF0YSA9IENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IpOwot
Ci0gICAgVmVjdG9yPHVpbnQ4X3Q+IG1hc3RlcktleTsKLSAgICBtYXN0ZXJLZXkuYXBwZW5kKCh1
aW50OF90Kilba2V5RGF0YSBieXRlc10sIFtrZXlEYXRhIGxlbmd0aF0pOwogICAgIHJldHVybiB1
bndyYXBTZXJpYWxpemVkQ3J5cHRvS2V5KG1hc3RlcktleSwgd3JhcHBlZEtleSwga2V5KTsKIH0K
ICNlbmRpZgo=
</data>
<flag name="review"
          id="248353"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>