<?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>73534</bug_id>
          
          <creation_ts>2011-11-30 23:58:44 -0800</creation_ts>
          <short_desc>upstream BlackBerry porting of MIMETypeRegistry/KeyboardEvent</short_desc>
          <delta_ts>2011-12-08 20:38:01 -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>Platform</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>73144</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Mary Wu">mawu</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dbates</cc>
    
    <cc>leo.yang</cc>
    
    <cc>staikos</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>512549</commentid>
    <comment_count>0</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-11-30 23:58:44 -0800</bug_when>
    <thetext>add two files MIMETypeRegistryBlackBerry.cpp and PlatformKeyboardEventBlackBerry.cpp to WebCore/platform/blackberry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512582</commentid>
    <comment_count>1</comment_count>
      <attachid>117370</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-01 00:35:56 -0800</bug_when>
    <thetext>Created attachment 117370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>512638</commentid>
    <comment_count>2</comment_count>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-12-01 02:03:57 -0800</bug_when>
    <thetext>Please capitalise the first character of the bug title.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514844</commentid>
    <comment_count>3</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-04 20:02:10 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Please capitalise the first character of the bug title.

ok, will update...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514846</commentid>
    <comment_count>4</comment_count>
      <attachid>117827</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-04 20:08:55 -0800</bug_when>
    <thetext>Created attachment 117827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514862</commentid>
    <comment_count>5</comment_count>
      <attachid>117827</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-12-04 20:38:26 -0800</bug_when>
    <thetext>Comment on attachment 117827
Patch

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

&gt; Source/WebCore/ChangeLog:18
&gt; +        Initial upstream, no new tests.
&gt; +
&gt; +
&gt; +        * platform/blackberry/MIMETypeRegistryBlackBerry.cpp: Added.

extra new line.

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:135
&gt; +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&amp; mimeType)

Either do

bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&amp; /*mimeType*/)

or add a UNUSED_PARAM(mimeType) line.

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:2
&gt; + * Copyright (C) 2009, 2010 Research In Motion Limited. All rights reserved.

2011?

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:485
&gt; +void PlatformKeyboardEvent::getCurrentModifierState(bool&amp; shiftKey, bool&amp; ctrlKey, bool&amp; altKey, bool&amp; metaKey)

UNNEEDED_PARAM(xxx)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>514880</commentid>
    <comment_count>6</comment_count>
      <attachid>117836</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-04 21:14:17 -0800</bug_when>
    <thetext>Created attachment 117836
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517189</commentid>
    <comment_count>7</comment_count>
      <attachid>117836</attachid>
    <who name="Leo Yang">leo.yang</who>
    <bug_when>2011-12-07 22:10:24 -0800</bug_when>
    <thetext>Comment on attachment 117836
Patch

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

Informal review.

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:107
&gt; +String MIMETypeRegistry::getMIMETypeForExtension(const String &amp;ext)
&gt; +{
&gt; +    String s = ext.lower();
&gt; +

ext--&gt; extension?
s--&gt; lowerExtension?

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:113
&gt; +    const ExtensionMap* e = extensionMap;
&gt; +    while (e-&gt;extension) {
&gt; +        if (s == e-&gt;extension)
&gt; +            return e-&gt;mimeType;
&gt; +        ++e;
&gt; +    }

e --&gt; extensionMap?

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:123
&gt; +    String s = type.lower();

s --&gt; lowerMIMEType?

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:130
&gt; +    const ExtensionMap* e = extensionMap;
&gt; +    while (e-&gt;mimeType) {
&gt; +        if (s == e-&gt;mimeType)
&gt; +            return e-&gt;extension;
&gt; +        ++e;
&gt; +    }

e --&gt; extensionMap?

&gt; Source/WebCore/platform/blackberry/MIMETypeRegistryBlackBerry.cpp:136
&gt; +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&amp; /*mimeType*/)
&gt; +{

remove the comment

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:22
&gt; +#include &quot;BlackBerryPlatformLog.h&quot;

Use angle brackets for BlackBerryPlatformLog.h and move it down after #include &lt;BlackBerryPlatformKeyboardEvent.h&gt;

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:427
&gt; +static inline WebCore::PlatformKeyboardEvent::Type toWebCorePlatformKeyboardEventType(const BlackBerry::Platform::KeyboardEvent::Type type)
&gt; +{

Is namespace WebCore necessary here?

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:435
&gt; +    default:
&gt; +        return WebCore::PlatformKeyboardEvent::Char;

Ditto.

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:457
&gt; +    m_type = toWebCorePlatformKeyboardEventType(event.type());
&gt; +    m_unmodifiedCharacter = event.character();
&gt; +    m_keyIdentifier = keyIdentifierForBlackBerryCharacter(event.character());
&gt; +    m_windowsVirtualKeyCode = windowsKeyCodeForBlackBerryCharacter(event.character());
&gt; +    unsigned short character = adjustCharacterFromOS(event.character());
&gt; +    m_text = String(&amp;character, 1);
&gt; +    m_unmodifiedText = m_text;
&gt; +
&gt; +    if (event.character() == KEYCODE_BACK_TAB)
&gt; +        m_shiftKey = true; // BackTab should be treated as Shift + Tab.
&gt; +

Why can&apos;t all these data members be initialised in the initialisation list of the constructor?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517254</commentid>
    <comment_count>8</comment_count>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 01:50:32 -0800</bug_when>
    <thetext>accept most part, thanks for your comments, Leo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517258</commentid>
    <comment_count>9</comment_count>
      <attachid>118348</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 02:01:17 -0800</bug_when>
    <thetext>Created attachment 118348
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>517393</commentid>
    <comment_count>10</comment_count>
      <attachid>118348</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-08 07:15:28 -0800</bug_when>
    <thetext>Comment on attachment 118348
Patch

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

Almost done, but since this needs cq+ the nit needs to be fixed first.

&gt; Source/WebCore/platform/blackberry/PlatformKeyboardEventBlackBerry.cpp:482
&gt; +void PlatformKeyboardEvent::getCurrentModifierState(bool&amp; shiftKey, bool&amp; ctrlKey, bool&amp; altKey, bool&amp; metaKey)

The parameter names can be best removed or marked as unused.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518035</commentid>
    <comment_count>11</comment_count>
      <attachid>118516</attachid>
    <who name="Mary Wu">mawu</who>
    <bug_when>2011-12-08 19:16:52 -0800</bug_when>
    <thetext>Created attachment 118516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518047</commentid>
    <comment_count>12</comment_count>
      <attachid>118516</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2011-12-08 19:35:57 -0800</bug_when>
    <thetext>Comment on attachment 118516
Patch

Looks good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518076</commentid>
    <comment_count>13</comment_count>
      <attachid>118516</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 20:37:56 -0800</bug_when>
    <thetext>Comment on attachment 118516
Patch

Clearing flags on attachment: 118516

Committed r102426: &lt;http://trac.webkit.org/changeset/102426&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>518077</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-08 20:38:01 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117370</attachid>
            <date>2011-12-01 00:35:56 -0800</date>
            <delta_ts>2011-12-04 20:08:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73534-20111201163553.patch</filename>
            <type>text/plain</type>
            <size>19294</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4OTMyYjc1ZDNkZjgz
NDgyOTY5OWVmMTYxZTRmNzkwNzRhNjk1NS4uMWFlZmUwYmYwYmQzOGM4MWU2MDQ0NmZlNzVlNmEy
NmJlMTRiMjJmNCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDExLTEyLTAxICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgdXBzdHJlYW0gQmxh
Y2tCZXJyeSBwb3J0aW5nIG9mIE1JTUVUeXBlUmVnaXN0cnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MzUzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vYmxhY2tiZXJyeS9NSU1FVHlwZVJlZ2lzdHJ5QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24p
OgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5z
aW9uRm9yTUlNRVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6TUlNRVR5cGVSZWdpc3RyeTo6aXNB
cHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OmtleUlkZW50aWZpZXJGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OndpbmRvd3NLZXlDb2RlRm9yQmxhY2tCZXJyeUNoYXJhY3Rlcik6CisgICAgICAgIChX
ZWJDb3JlOjphZGp1c3RDaGFyYWN0ZXJGcm9tT1MpOgorICAgICAgICAoV2ViQ29yZTo6dG9XZWJD
b3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRDYXBzTG9ja1N0YXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRlS2V5RG93bkV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1v
ZGlmaWVyU3RhdGUpOgorCiAyMDExLTExLTMwICBKZWZmIFRpbWFudXMgIDx0d2l6QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBBbHRlciBhbiBlYXJseSByZXR1cm4gdGhhdCB3YXMgcHJldmVudGlu
ZyBIVE1MQ2FudmFzRWxlbWVudDo6ZGlkRHJhdyBub3RpZmljYXRpb25zCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFja0Jl
cnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTUlNRVR5cGVSZWdp
c3RyeUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxN2IyYTE1MDRmMmZkNDkyMWI3YWEwY2Jm
ZTkzMWYxZWJmYjFhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDE0
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2luIDx6YWNrQGtkZS5vcmc+
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5kL29y
IGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVUeXBlUmVnaXN0cnkuaCIK
KworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
c3RydWN0IEV4dGVuc2lvbk1hcCB7CisgICAgY29uc3QgY2hhciogZXh0ZW5zaW9uOworICAgIGNv
bnN0IGNoYXIqIG1pbWVUeXBlOworfTsKKworc3RhdGljIGNvbnN0IEV4dGVuc2lvbk1hcCBleHRl
bnNpb25NYXBbXSA9IHsKKyAgICB7ICJibXAiLCAiaW1hZ2UvYm1wIiB9LAorICAgIHsgImNzcyIs
ICJ0ZXh0L2NzcyIgfSwKKyAgICB7ICJnaWYiLCAiaW1hZ2UvZ2lmIiB9LAorICAgIHsgImh0bWwi
LCAidGV4dC9odG1sIiB9LAorICAgIHsgImh0bSIsICJ0ZXh0L2h0bWwiIH0sCisgICAgeyAiaWNv
IiwgImltYWdlL3gtaWNvbiIgfSwKKyAgICB7ICJqcGciLCAiaW1hZ2UvanBlZyIgfSwKKyAgICB7
ICJqcGVnIiwgImltYWdlL2pwZWciIH0sCisgICAgeyAianMiLCAiYXBwbGljYXRpb24veC1qYXZh
c2NyaXB0IiB9LAorICAgIHsgIm1uZyIsICJ2aWRlby94LW1uZyIgfSwKKyAgICB7ICJwYm0iLCAi
aW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCisgICAgeyAicGdtIiwgImltYWdlL3gtcG9ydGFi
bGUtZ3JheW1hcCIgfSwKKyAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24vcGRmIiB9LAorICAgIHsg
InBuZyIsICJpbWFnZS9wbmciIH0sCisgICAgeyAicHBtIiwgImltYWdlL3gtcG9ydGFibGUtcGl4
bWFwIiB9LAorICAgIHsgInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1sIiB9LAorICAgIHsgInN2
ZyIsICJpbWFnZS9zdmcreG1sIiB9LAorICAgIHsgInN2Z3oiLCAiaW1hZ2Uvc3ZnK3htbCIgfSwK
KyAgICB7ICJ0eHQiLCAidGV4dC9wbGFpbiIgfSwKKyAgICB7ICJ0ZXh0IiwgInRleHQvcGxhaW4i
IH0sCisgICAgeyAidGlmZiIsICJpbWFnZS90aWZmIiB9LAorICAgIHsgInRpZiIsICJpbWFnZS90
aWZmIiB9LAorICAgIHsgInhibSIsICJpbWFnZS94LXhiaXRtYXAiIH0sCisgICAgeyAieG1sIiwg
InRleHQveG1sIiB9LAorICAgIHsgInhwbSIsICJpbWFnZS94LXhwbSIgfSwKKyAgICB7ICJ4c2wi
LCAidGV4dC94c2wiIH0sCisgICAgeyAieGh0bWwiLCAiYXBwbGljYXRpb24veGh0bWwreG1sIiB9
LAorICAgIHsgIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIiB9LAorICAgIHsgIndtbGMiLCAiYXBw
bGljYXRpb24vdm5kLndhcC53bWxjIiB9LAorICAgIHsgIm00YSIsICJhdWRpby9tNGEiIH0sCisg
ICAgeyAibWlkaSIsICJhdWRpby9taWRpIiB9LAorICAgIHsgIm1pZCIsICJhdWRpby9taWQiIH0s
CisgICAgeyAibXAzIiwgImF1ZGlvL21wMyIgfSwKKyAgICB7ICJ3bWEiLCAiYXVkaW8veC1tcy13
bWEiIH0sCisgICAgeyAiM2dwIiwgInZpZGVvLzNncHAiIH0sCisgICAgeyAiM2dwcCIsICJ2aWRl
by8zZ3BwIiB9LAorICAgIHsgIjNncHAyIiwgInZpZGVvLzNncHAyIiB9LAorICAgIHsgIjNnMiIs
ICJ2aWRlby8zZ3BwMiIgfSwKKyAgICB7ICIzZ3AyIiwgInZpZGVvLzNncHAyIiB9LAorICAgIHsg
Im1wNCIsICJ2aWRlby9tcDQiIH0sCisgICAgeyAibTR2IiwgInZpZGVvL200diIgfSwKKyAgICB7
ICJhdmkiLCAidmlkZW8veC1tc3ZpZGVvIiB9LAorICAgIHsgIm1vdiIsICJ2aWRlby9xdWlja3Rp
bWUiIH0sCisgICAgeyAiZGl2eCIsICJ2aWRlby9kaXZ4IiB9LAorICAgIHsgIm1wZWciLCAidmlk
ZW8vbXBlZyIgfSwKKyAgICB7ICJzYnYiLCAidmlkZW8vc2J2IiB9LAorICAgIHsgImFzZiIsICJ2
aWRlby94LW1zLWFzZiIgfSwKKyAgICB7ICJ3bSIsICJ2aWRlby94LW1zLXdtIiB9LAorICAgIHsg
IndtdiIsICJ2aWRlby94LW1zLXdtdiIgfSwKKyAgICB7ICJ3bXgiLCAidmlkZW8veC1tcy13bXgi
IH0sCisgICAgeyAid2F2IiwgImF1ZGlvL3gtd2F2IiB9LAorICAgIHsgImFtciIsICJhdWRpby9h
bXIiIH0sCisgICAgeyAiYWFjIiwgImF1ZGlvL2FhYyIgfSwKKyAgICB7ICJ4LWdzbSIsICJhdWRp
by94LWdzbSIgfSwKKyAgICB7ICJzd2YiLCAiYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2gi
fSwKKyAgICB7ICJtM3U4IiwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIn0sCisgICAg
eyAibTN1cmwiLCAiYXVkaW8vbXBlZ3VybCJ9LAorICAgIHsgIm0zdSIsICJhdWRpby9tcGVndXJs
In0sCisgICAgLy8gRklYTUU6IHdpbmNlIGFsc28gbWFwcyB0dGYgYW5kIG90ZiB0byB0ZXh0L3Bs
YWluLiBTaG91bGQgd2UgZG8gdGhhdCB0b28/CisgICAgeyAwLCAwIH0KK307CisKK1N0cmluZyBN
SU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihjb25zdCBTdHJpbmcgJmV4
dCkKK3sKKyAgICBTdHJpbmcgcyA9IGV4dC5sb3dlcigpOworCisgICAgY29uc3QgRXh0ZW5zaW9u
TWFwKiBlID0gZXh0ZW5zaW9uTWFwOworICAgIHdoaWxlIChlLT5leHRlbnNpb24pIHsKKyAgICAg
ICAgaWYgKHMgPT0gZS0+ZXh0ZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJuIGUtPm1pbWVUeXBl
OworICAgICAgICArK2U7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitTdHJp
bmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0UHJlZmVycmVkRXh0ZW5zaW9uRm9yTUlNRVR5cGUoY29u
c3QgU3RyaW5nJiB0eXBlKQoreworICAgIGlmICh0eXBlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0
dXJuIFN0cmluZygpOworCisgICAgU3RyaW5nIHMgPSB0eXBlLmxvd2VyKCk7CisKKyAgICBjb25z
dCBFeHRlbnNpb25NYXAqIGUgPSBleHRlbnNpb25NYXA7CisgICAgd2hpbGUgKGUtPm1pbWVUeXBl
KSB7CisgICAgICAgIGlmIChzID09IGUtPm1pbWVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGUt
PmV4dGVuc2lvbjsKKyAgICAgICAgKytlOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworYm9vbCBNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1Z2luTUlNRVR5cGUo
Y29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJy
eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uN2VkYjVlNWMyYTRjMmZlMGIxNTExM2RmMGFmOTEwYmY0ODUxOTE3
YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
UGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSw0OTAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJl
ZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgorCisjaW5jbHVkZSAi
QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmgiCisjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNp
bmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5nIGtleUlkZW50aWZpZXJGb3JCbGFj
a0JlcnJ5Q2hhcmFjdGVyKHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlcikKK3sKKyAgICBzd2l0Y2gg
KGNoYXJhY3RlcikgeworICAgIGNhc2UgS0VZQ09ERV9SRVRVUk46CisgICAgY2FzZSBLRVlDT0RF
X0tQX0VOVEVSOgorICAgICAgICByZXR1cm4gIkVudGVyIjsKKyAgICBjYXNlIEtFWUNPREVfQkFD
S1NQQUNFOgorICAgICAgICByZXR1cm4gIlUrMDAwOCI7CisgICAgY2FzZSBLRVlDT0RFX0RFTEVU
RToKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgIGNhc2UgS0VZQ09ERV9FU0NBUEU6Cisg
ICAgICAgIHJldHVybiAiRXNjYXBlIjsKKyAgICBjYXNlIEtFWUNPREVfUEFVU0U6CisgICAgICAg
IHJldHVybiAiUGF1c2UiOworICAgIGNhc2UgS0VZQ09ERV9QUklOVDoKKyAgICAgICAgcmV0dXJu
ICJQcmludFNjcmVlbiI7CisgICAgY2FzZSBLRVlDT0RFX1RBQjoKKyAgICBjYXNlIEtFWUNPREVf
QkFDS19UQUI6CisgICAgICAgIHJldHVybiAiVSswMDA5IjsKKyAgICBjYXNlIEtFWUNPREVfTEVG
VDoKKyAgICBjYXNlIEtFWUNPREVfS1BfTEVGVDoKKyAgICAgICAgcmV0dXJuICJMZWZ0IjsKKyAg
ICBjYXNlIEtFWUNPREVfUklHSFQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX1JJR0hUOgorICAgICAg
ICByZXR1cm4gIlJpZ2h0IjsKKyAgICBjYXNlIEtFWUNPREVfVVA6CisgICAgY2FzZSBLRVlDT0RF
X0tQX1VQOgorICAgICAgICByZXR1cm4gIlVwIjsKKyAgICBjYXNlIEtFWUNPREVfRE9XTjoKKyAg
ICBjYXNlIEtFWUNPREVfS1BfRE9XTjoKKyAgICAgICAgcmV0dXJuICJEb3duIjsKKyAgICBjYXNl
IEtFWUNPREVfS1BfREVMRVRFOgorICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgY2FzZSBL
RVlDT0RFX01FTlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQUxUOgorICAgIGNhc2UgS0VZQ09E
RV9SSUdIVF9BTFQ6CisgICAgICAgIHJldHVybiAiQWx0IjsKKyAgICBjYXNlIEtFWUNPREVfSE9N
RToKKyAgICBjYXNlIEtFWUNPREVfS1BfSE9NRToKKyAgICAgICAgcmV0dXJuICJIb21lIjsKKyAg
ICBjYXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9JTlNFUlQ6CisgICAg
ICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICBjYXNlIEtFWUNPREVfUEdfVVA6CisgICAgY2FzZSBL
RVlDT0RFX0tQX1BHX1VQOgorICAgICAgICByZXR1cm4gIlBhZ2VEb3duIjsKKyAgICBjYXNlIEtF
WUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfUEdfRE9XTjoKKyAgICAgICAgcmV0
dXJuICJQYWdlVXAiOworICAgIGNhc2UgS0VZQ09ERV9FTkQ6CisgICAgY2FzZSBLRVlDT0RFX0tQ
X0VORDoKKyAgICAgICAgcmV0dXJuICJFbmQiOworICAgIGNhc2UgS0VZQ09ERV9GMToKKyAgICAg
ICAgcmV0dXJuICJGMSI7CisgICAgY2FzZSBLRVlDT0RFX0YyOgorICAgICAgICByZXR1cm4gIkYy
IjsKKyAgICBjYXNlIEtFWUNPREVfRjM6CisgICAgICAgIHJldHVybiAiRjMiOworICAgIGNhc2Ug
S0VZQ09ERV9GNDoKKyAgICAgICAgcmV0dXJuICJGNCI7CisgICAgY2FzZSBLRVlDT0RFX0Y1Ogor
ICAgICAgICByZXR1cm4gIkY1IjsKKyAgICBjYXNlIEtFWUNPREVfRjY6CisgICAgICAgIHJldHVy
biAiRjYiOworICAgIGNhc2UgS0VZQ09ERV9GNzoKKyAgICAgICAgcmV0dXJuICJGNyI7CisgICAg
Y2FzZSBLRVlDT0RFX0Y4OgorICAgICAgICByZXR1cm4gIkY4IjsKKyAgICBjYXNlIEtFWUNPREVf
Rjk6CisgICAgICAgIHJldHVybiAiRjkiOworICAgIGNhc2UgS0VZQ09ERV9GMTA6CisgICAgICAg
IHJldHVybiAiRjEwIjsKKyAgICBjYXNlIEtFWUNPREVfRjExOgorICAgICAgICByZXR1cm4gIkYx
MSI7CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAgICAgICAgcmV0dXJuICJGMTIiOworICAgIGRl
ZmF1bHQ6CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiVSslMDRYIiwgV1RGOjp0b0FT
Q0lJVXBwZXIoY2hhcmFjdGVyKSk7CisgICAgfQorfQorCitzdGF0aWMgaW50IHdpbmRvd3NLZXlD
b2RlRm9yQmxhY2tCZXJyeUNoYXJhY3Rlcih1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIpCit7Cisg
ICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAgICBjYXNlIEtFWUNPREVfUkVUVVJOOgorICAgIGNh
c2UgS0VZQ09ERV9LUF9FTlRFUjoKKyAgICAgICAgcmV0dXJuIFZLX1JFVFVSTjsgLy8gKDBEKSBS
ZXR1cm4ga2V5CisgICAgY2FzZSBLRVlDT0RFX0JBQ0tTUEFDRToKKyAgICAgICAgcmV0dXJuIFZL
X0JBQ0s7IC8vICgwOCkgQkFDS1NQQUNFIGtleQorICAgIGNhc2UgS0VZQ09ERV9ERUxFVEU6Cisg
ICAgICAgIHJldHVybiBWS19ERUxFVEU7IC8vICgyRSkgREVMIGtleQorICAgIGNhc2UgS0VZQ09E
RV9FU0NBUEU6CisgICAgICAgIHJldHVybiBWS19FU0NBUEU7CisgICAgY2FzZSBLRVlDT0RFX1NQ
QUNFOgorICAgICAgICByZXR1cm4gVktfU1BBQ0U7CisgICAgY2FzZSAnMCc6CisgICAgY2FzZSAn
KSc6CisgICAgICAgIHJldHVybiBWS18wOworICAgIGNhc2UgJzEnOgorICAgIGNhc2UgJyEnOgor
ICAgICAgICByZXR1cm4gVktfMTsKKyAgICBjYXNlICcyJzoKKyAgICBjYXNlICdAJzoKKyAgICAg
ICAgcmV0dXJuIFZLXzI7CisgICAgY2FzZSAnMyc6CisgICAgY2FzZSAnIyc6CisgICAgICAgIHJl
dHVybiBWS18zOworICAgIGNhc2UgJzQnOgorICAgIGNhc2UgJyQnOgorICAgICAgICByZXR1cm4g
VktfNDsKKyAgICBjYXNlICc1JzoKKyAgICBjYXNlICclJzoKKyAgICAgICAgcmV0dXJuIFZLXzU7
CisgICAgY2FzZSAnNic6CisgICAgY2FzZSAnXic6CisgICAgICAgIHJldHVybiBWS182OworICAg
IGNhc2UgJzcnOgorICAgIGNhc2UgJyYnOgorICAgICAgICByZXR1cm4gVktfNzsKKyAgICBjYXNl
ICc4JzoKKyAgICBjYXNlICcqJzoKKyAgICAgICAgcmV0dXJuIFZLXzg7CisgICAgY2FzZSAnOSc6
CisgICAgY2FzZSAnKCc6CisgICAgICAgIHJldHVybiBWS185OworICAgIGNhc2UgJ2EnOgorICAg
IGNhc2UgJ0EnOgorICAgICAgICByZXR1cm4gVktfQTsKKyAgICBjYXNlICdiJzoKKyAgICBjYXNl
ICdCJzoKKyAgICAgICAgcmV0dXJuIFZLX0I7CisgICAgY2FzZSAnYyc6CisgICAgY2FzZSAnQyc6
CisgICAgICAgIHJldHVybiBWS19DOworICAgIGNhc2UgJ2QnOgorICAgIGNhc2UgJ0QnOgorICAg
ICAgICByZXR1cm4gVktfRDsKKyAgICBjYXNlICdlJzoKKyAgICBjYXNlICdFJzoKKyAgICAgICAg
cmV0dXJuIFZLX0U7CisgICAgY2FzZSAnZic6CisgICAgY2FzZSAnRic6CisgICAgICAgIHJldHVy
biBWS19GOworICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cnOgorICAgICAgICByZXR1cm4gVktf
RzsKKyAgICBjYXNlICdoJzoKKyAgICBjYXNlICdIJzoKKyAgICAgICAgcmV0dXJuIFZLX0g7Cisg
ICAgY2FzZSAnaSc6CisgICAgY2FzZSAnSSc6CisgICAgICAgIHJldHVybiBWS19JOworICAgIGNh
c2UgJ2onOgorICAgIGNhc2UgJ0onOgorICAgICAgICByZXR1cm4gVktfSjsKKyAgICBjYXNlICdr
JzoKKyAgICBjYXNlICdLJzoKKyAgICAgICAgcmV0dXJuIFZLX0s7CisgICAgY2FzZSAnbCc6Cisg
ICAgY2FzZSAnTCc6CisgICAgICAgIHJldHVybiBWS19MOworICAgIGNhc2UgJ20nOgorICAgIGNh
c2UgJ00nOgorICAgICAgICByZXR1cm4gVktfTTsKKyAgICBjYXNlICduJzoKKyAgICBjYXNlICdO
JzoKKyAgICAgICAgcmV0dXJuIFZLX047CisgICAgY2FzZSAnbyc6CisgICAgY2FzZSAnTyc6Cisg
ICAgICAgIHJldHVybiBWS19POworICAgIGNhc2UgJ3AnOgorICAgIGNhc2UgJ1AnOgorICAgICAg
ICByZXR1cm4gVktfUDsKKyAgICBjYXNlICdxJzoKKyAgICBjYXNlICdRJzoKKyAgICAgICAgcmV0
dXJuIFZLX1E7CisgICAgY2FzZSAncic6CisgICAgY2FzZSAnUic6CisgICAgICAgIHJldHVybiBW
S19SOworICAgIGNhc2UgJ3MnOgorICAgIGNhc2UgJ1MnOgorICAgICAgICByZXR1cm4gVktfUzsK
KyAgICBjYXNlICd0JzoKKyAgICBjYXNlICdUJzoKKyAgICAgICAgcmV0dXJuIFZLX1Q7CisgICAg
Y2FzZSAndSc6CisgICAgY2FzZSAnVSc6CisgICAgICAgIHJldHVybiBWS19VOworICAgIGNhc2Ug
J3YnOgorICAgIGNhc2UgJ1YnOgorICAgICAgICByZXR1cm4gVktfVjsKKyAgICBjYXNlICd3JzoK
KyAgICBjYXNlICdXJzoKKyAgICAgICAgcmV0dXJuIFZLX1c7CisgICAgY2FzZSAneCc6CisgICAg
Y2FzZSAnWCc6CisgICAgICAgIHJldHVybiBWS19YOworICAgIGNhc2UgJ3knOgorICAgIGNhc2Ug
J1knOgorICAgICAgICByZXR1cm4gVktfWTsKKyAgICBjYXNlICd6JzoKKyAgICBjYXNlICdaJzoK
KyAgICAgICAgcmV0dXJuIFZLX1o7CisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAnPSc6CisgICAg
ICAgIHJldHVybiBWS19PRU1fUExVUzsKKyAgICBjYXNlICctJzoKKyAgICBjYXNlICdfJzoKKyAg
ICAgICAgcmV0dXJuIFZLX09FTV9NSU5VUzsKKyAgICBjYXNlICc8JzoKKyAgICBjYXNlICcsJzoK
KyAgICAgICAgcmV0dXJuIFZLX09FTV9DT01NQTsKKyAgICBjYXNlICc+JzoKKyAgICBjYXNlICcu
JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7CisgICAgY2FzZSAnOic6CisgICAgY2Fz
ZSAnOyc6CisgICAgICAgIHJldHVybiBWS19PRU1fMTsKKyAgICBjYXNlICcvJzoKKyAgICBjYXNl
ICc/JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV8yOworICAgIGNhc2UgJ34nOgorICAgIGNhc2Ug
J2AnOgorICAgICAgICByZXR1cm4gVktfT0VNXzM7CisgICAgY2FzZSAneyc6CisgICAgY2FzZSAn
Wyc6CisgICAgICAgIHJldHVybiBWS19PRU1fNDsKKyAgICBjYXNlICd8JzoKKyAgICBjYXNlICdc
XCc6CisgICAgICAgIHJldHVybiBWS19PRU1fNTsKKyAgICBjYXNlICd9JzoKKyAgICBjYXNlICdd
JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV82OworICAgIGNhc2UgJyInOgorICAgIGNhc2UgJ1wn
JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV83OworICAgIGNhc2UgS0VZQ09ERV9QQVVTRToKKyAg
ICAgICAgcmV0dXJuIFZLX1BBVVNFOworICAgIGNhc2UgS0VZQ09ERV9QUklOVDoKKyAgICAgICAg
cmV0dXJuIFZLX1BSSU5UOworICAgIGNhc2UgS0VZQ09ERV9TQ1JPTExfTE9DSzoKKyAgICAgICAg
cmV0dXJuIFZLX1NDUk9MTDsKKyAgICBjYXNlIEtFWUNPREVfVEFCOgorICAgIGNhc2UgS0VZQ09E
RV9CQUNLX1RBQjoKKyAgICAgICAgcmV0dXJuIFZLX1RBQjsKKyAgICBjYXNlIEtFWUNPREVfTEVG
VDoKKyAgICBjYXNlIEtFWUNPREVfS1BfTEVGVDoKKyAgICAgICAgcmV0dXJuIFZLX0xFRlQ7Cisg
ICAgY2FzZSBLRVlDT0RFX1JJR0hUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9SSUdIVDoKKyAgICAg
ICAgcmV0dXJuIFZLX1JJR0hUOworICAgIGNhc2UgS0VZQ09ERV9VUDoKKyAgICBjYXNlIEtFWUNP
REVfS1BfVVA6CisgICAgICAgIHJldHVybiBWS19VUDsKKyAgICBjYXNlIEtFWUNPREVfRE9XTjoK
KyAgICBjYXNlIEtFWUNPREVfS1BfRE9XTjoKKyAgICAgICAgcmV0dXJuIFZLX0RPV047CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0RFTEVURToKKyAgICAgICAgcmV0dXJuIFZLX0RFTEVURTsKKyAgICBj
YXNlIEtFWUNPREVfTUVOVToKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9BTFQ6CisgICAgY2FzZSBL
RVlDT0RFX1JJR0hUX0FMVDoKKyAgICAgICAgcmV0dXJuIFZLX01FTlU7CisgICAgY2FzZSBLRVlD
T0RFX0hPTUU6CisgICAgY2FzZSBLRVlDT0RFX0tQX0hPTUU6CisgICAgICAgIHJldHVybiBWS19I
T01FOworICAgIGNhc2UgS0VZQ09ERV9JTlNFUlQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0lOU0VS
VDoKKyAgICAgICAgcmV0dXJuIFZLX0lOU0VSVDsKKyAgICBjYXNlIEtFWUNPREVfUEdfVVA6Cisg
ICAgY2FzZSBLRVlDT0RFX0tQX1BHX1VQOgorICAgICAgICByZXR1cm4gVktfTkVYVDsKKyAgICBj
YXNlIEtFWUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfUEdfRE9XTjoKKyAgICAg
ICAgcmV0dXJuIFZLX1BSSU9SOworICAgIGNhc2UgS0VZQ09ERV9FTkQ6CisgICAgY2FzZSBLRVlD
T0RFX0tQX0VORDoKKyAgICAgICAgcmV0dXJuIFZLX0VORDsKKyAgICBjYXNlIEtFWUNPREVfQ0FQ
U19MT0NLOgorICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsKKyAgICBjYXNlIEtFWUNPREVfTEVG
VF9TSElGVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfU0hJRlQ6CisgICAgICAgIHJldHVybiBW
S19TSElGVDsKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9DVFJMOgorICAgIGNhc2UgS0VZQ09ERV9S
SUdIVF9DVFJMOgorICAgICAgICByZXR1cm4gVktfQ09OVFJPTDsKKyAgICBjYXNlIEtFWUNPREVf
TlVNX0xPQ0s6CisgICAgICAgIHJldHVybiBWS19OVU1MT0NLOworICAgIGNhc2UgS0VZQ09ERV9L
UF9QTFVTOgorICAgICAgICByZXR1cm4gVktfQUREOworICAgIGNhc2UgS0VZQ09ERV9LUF9NSU5V
UzoKKyAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOworICAgIGNhc2UgS0VZQ09ERV9LUF9NVUxU
SVBMWToKKyAgICAgICAgcmV0dXJuIFZLX01VTFRJUExZOworICAgIGNhc2UgS0VZQ09ERV9LUF9E
SVZJREU6CisgICAgICAgIHJldHVybiBWS19ESVZJREU7CisgICAgY2FzZSBLRVlDT0RFX0tQX0ZJ
VkU6CisgICAgICAgIHJldHVybiBWS19OVU1QQUQ1OworICAgIGNhc2UgS0VZQ09ERV9GMToKKyAg
ICAgICAgcmV0dXJuIFZLX0YxOworICAgIGNhc2UgS0VZQ09ERV9GMjoKKyAgICAgICAgcmV0dXJu
IFZLX0YyOworICAgIGNhc2UgS0VZQ09ERV9GMzoKKyAgICAgICAgcmV0dXJuIFZLX0YzOworICAg
IGNhc2UgS0VZQ09ERV9GNDoKKyAgICAgICAgcmV0dXJuIFZLX0Y0OworICAgIGNhc2UgS0VZQ09E
RV9GNToKKyAgICAgICAgcmV0dXJuIFZLX0Y1OworICAgIGNhc2UgS0VZQ09ERV9GNjoKKyAgICAg
ICAgcmV0dXJuIFZLX0Y2OworICAgIGNhc2UgS0VZQ09ERV9GNzoKKyAgICAgICAgcmV0dXJuIFZL
X0Y3OworICAgIGNhc2UgS0VZQ09ERV9GODoKKyAgICAgICAgcmV0dXJuIFZLX0Y4OworICAgIGNh
c2UgS0VZQ09ERV9GOToKKyAgICAgICAgcmV0dXJuIFZLX0Y5OworICAgIGNhc2UgS0VZQ09ERV9G
MTA6CisgICAgICAgIHJldHVybiBWS19GMTA7CisgICAgY2FzZSBLRVlDT0RFX0YxMToKKyAgICAg
ICAgcmV0dXJuIFZLX0YxMTsKKyAgICBjYXNlIEtFWUNPREVfRjEyOgorICAgICAgICByZXR1cm4g
VktfRjEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKwordW5z
aWduZWQgc2hvcnQgYWRqdXN0Q2hhcmFjdGVyRnJvbU9TKHVuc2lnbmVkIHNob3J0IGNoYXJhY3Rl
cikKK3sKKyAgICAvLyBVc2Ugd2luZG93cyBrZXkgY2hhcmFjdGVyIGFzIEFTQ0lJIHZhbHVlIHdo
ZW4gcG9zc2libGUgdG8gZW5oYW5jZSByZWFkYWJpbGl0eS4KKyAgICBzd2l0Y2ggKGNoYXJhY3Rl
cikgeworICAgIGNhc2UgS0VZQ09ERV9CQUNLU1BBQ0U6CisgICAgICAgIHJldHVybiBWS19CQUNL
OworICAgIGNhc2UgS0VZQ09ERV9LUF9ERUxFVEU6CisgICAgY2FzZSBLRVlDT0RFX0RFTEVURToK
KyAgICAgICAgcmV0dXJuIDB4N2Y7CisgICAgY2FzZSBLRVlDT0RFX0VTQ0FQRToKKyAgICAgICAg
cmV0dXJuIFZLX0VTQ0FQRTsKKyAgICBjYXNlIEtFWUNPREVfUkVUVVJOOgorICAgIGNhc2UgS0VZ
Q09ERV9LUF9FTlRFUjoKKyAgICAgICAgcmV0dXJuIFZLX1JFVFVSTjsKKyAgICBjYXNlIEtFWUNP
REVfS1BfUExVUzoKKyAgICAgICAgcmV0dXJuIFZLX0FERDsKKyAgICBjYXNlIEtFWUNPREVfS1Bf
TUlOVVM6CisgICAgICAgIHJldHVybiBWS19TVUJUUkFDVDsKKyAgICBjYXNlIEtFWUNPREVfS1Bf
TVVMVElQTFk6CisgICAgICAgIHJldHVybiBWS19NVUxUSVBMWTsKKyAgICBjYXNlIEtFWUNPREVf
S1BfRElWSURFOgorICAgICAgICByZXR1cm4gVktfRElWSURFOworICAgIGNhc2UgS0VZQ09ERV9L
UF9GSVZFOgorICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAgIGNhc2UgS0VZQ09ERV9LUF9IT01F
OgorICAgIGNhc2UgS0VZQ09ERV9FTkQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0VORDoKKyAgICBj
YXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9JTlNFUlQ6CisgICAgY2Fz
ZSBLRVlDT0RFX1BHX1VQOgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19VUDoKKyAgICBjYXNlIEtF
WUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfUEdfRE9XTjoKKyAgICBjYXNlIEtF
WUNPREVfTUVOVToKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9BTFQ6CisgICAgY2FzZSBLRVlDT0RF
X1JJR0hUX0FMVDoKKyAgICBjYXNlIEtFWUNPREVfQ0FQU19MT0NLOgorICAgIGNhc2UgS0VZQ09E
RV9MRUZUX1NISUZUOgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9TSElGVDoKKyAgICBjYXNlIEtF
WUNPREVfTEVGVF9DVFJMOgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9DVFJMOgorICAgIGNhc2Ug
S0VZQ09ERV9OVU1fTE9DSzoKKyAgICBjYXNlIEtFWUNPREVfUFJJTlQ6CisgICAgY2FzZSBLRVlD
T0RFX1NDUk9MTF9MT0NLOgorICAgIGNhc2UgS0VZQ09ERV9QQVVTRToKKyAgICBjYXNlIEtFWUNP
REVfRjE6CisgICAgY2FzZSBLRVlDT0RFX0YyOgorICAgIGNhc2UgS0VZQ09ERV9GMzoKKyAgICBj
YXNlIEtFWUNPREVfRjQ6CisgICAgY2FzZSBLRVlDT0RFX0Y1OgorICAgIGNhc2UgS0VZQ09ERV9G
NjoKKyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAgY2FzZSBLRVlDT0RFX0Y4OgorICAgIGNhc2Ug
S0VZQ09ERV9GOToKKyAgICBjYXNlIEtFWUNPREVfRjEwOgorICAgIGNhc2UgS0VZQ09ERV9GMTE6
CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAgICBjYXNlIEtFWUNPREVfTEVGVDoKKyAgICBjYXNl
IEtFWUNPREVfUklHSFQ6CisgICAgY2FzZSBLRVlDT0RFX1VQOgorICAgIGNhc2UgS0VZQ09ERV9E
T1dOOgorICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgcmV0dXJuIGNoYXJhY3RlcjsKK30KKworc3RhdGljIGlubGluZSBXZWJDb3JlOjpQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50
VHlwZShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBl
KQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OktleWJvYXJkRXZlbnQ6OktleURvd246CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
S2V5Ym9hcmRFdmVudDo6S2V5VXA6CisgICAgICAgIHJldHVybiBXZWJDb3JlOjpQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQ6OktleVVwOworICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJv
YXJkRXZlbnQ6OktleUNoYXI6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFdlYkNvcmU6
OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICB9Cit9CisKK1BsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXli
b2FyZEV2ZW50IGV2ZW50KQorICAgIDogbV9hdXRvUmVwZWF0KGZhbHNlKQorICAgICwgbV9pc0tl
eXBhZChmYWxzZSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQuc2hpZnRBY3RpdmUoKSkKKyAgICAs
IG1fY3RybEtleShldmVudC5jdHJsQWN0aXZlKCkpCisgICAgLCBtX2FsdEtleShldmVudC5hbHRB
Y3RpdmUoKSkKKyAgICAsIG1fbWV0YUtleShmYWxzZSkKK3sKKyAgICBtX3R5cGUgPSB0b1dlYkNv
cmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSk7CisgICAgbV91bm1vZGlm
aWVkQ2hhcmFjdGVyID0gZXZlbnQuY2hhcmFjdGVyKCk7CisgICAgbV9rZXlJZGVudGlmaWVyID0g
a2V5SWRlbnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkpOwor
ICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gd2luZG93c0tleUNvZGVGb3JCbGFja0JlcnJ5
Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKTsKKyAgICB1bnNpZ25lZCBzaG9ydCBjaGFyYWN0
ZXIgPSBhZGp1c3RDaGFyYWN0ZXJGcm9tT1MoZXZlbnQuY2hhcmFjdGVyKCkpOworICAgIG1fdGV4
dCA9IFN0cmluZygmY2hhcmFjdGVyLCAxKTsKKyAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0
OworCisgICAgaWYgKGV2ZW50LmNoYXJhY3RlcigpID09IEtFWUNPREVfQkFDS19UQUIpCisgICAg
ICAgIG1fc2hpZnRLZXkgPSB0cnVlOyAvLyBCYWNrVGFiIHNob3VsZCBiZSB0cmVhdGVkIGFzIFNo
aWZ0ICsgVGFiLgorCisgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiS2V5Ym9hcmQgZXZlbnQgcmVjZWl2ZWQgdGV4dD0lbGMs
IGtleUlkZW50aWZpZXI9JXMsIHdpbmRvd3NWaXJ0dWFsS2V5Q29kZT0lZCIsIGV2ZW50LmNoYXJh
Y3RlcigpLCBtX2tleUlkZW50aWZpZXIubGF0aW4xKCkuZGF0YSgpLCBtX3dpbmRvd3NWaXJ0dWFs
S2V5Q29kZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xv
Y2tTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQo
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmls
aXR5TW9kZSkKK3sKKyAgICAvLyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8g
UmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252
ZXJzaW9ucy4KKyAgICBBU1NFUlQobV90eXBlID09IEtleURvd24pOworICAgIG1fdHlwZSA9IHR5
cGU7CisKKyAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgeworICAgICAgICBtX3RleHQgPSBTdHJp
bmcoKTsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOworICAgIH0gZWxzZSB7
CisgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygpOworICAgICAgICBtX3dpbmRvd3NW
aXJ0dWFsS2V5Q29kZSA9IDA7CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgc2hpZnRLZXksIGJvb2wmIGN0cmxLZXks
IGJvb2wmIGFsdEtleSwgYm9vbCYgbWV0YUtleSkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117827</attachid>
            <date>2011-12-04 20:08:55 -0800</date>
            <delta_ts>2011-12-04 21:14:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73534-20111205120853.patch</filename>
            <type>text/plain</type>
            <size>19592</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4OTMyYjc1ZDNkZjgz
NDgyOTY5OWVmMTYxZTRmNzkwNzRhNjk1NS4uOGU2M2YxZDFiM2VmMTZhMjdlZWM0ZjA2Njg1ZmQ1
ODQyYmFjNmVmMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDExLTEyLTA0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gQmxh
Y2tCZXJyeSBwb3J0aW5nIG9mIE1JTUVUeXBlUmVnaXN0cnkvS2V5Ym9hcmRFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlciBtYWluIGNvbnRy
aWJ1dG9yczoKKyAgICAgICAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorICAgICAg
ICBKb2UgTWFzb24gIDxqbWFzb25AcmltLmNvbT4KKyAgICAgICAgTWF4IEZlaWwgIDxtZmVpbEBx
bnguY29tPgorICAgICAgICBMdWthcyBTeWRvcm93c2tpIDxsc3lkb3Jvd3NraUByaW0uY29tPgor
ICAgICAgICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KKworICAgICAgICBJbml0
aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKworICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1J
TUVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRp
b25QbHVnaW5NSU1FVHlwZSk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9y
bUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpr
ZXlJZGVudGlmaWVyRm9yQmxhY2tCZXJyeUNoYXJhY3Rlcik6CisgICAgICAgIChXZWJDb3JlOjp3
aW5kb3dzS2V5Q29kZUZvckJsYWNrQmVycnlDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
YWRqdXN0Q2hhcmFjdGVyRnJvbU9TKToKKyAgICAgICAgKFdlYkNvcmU6OnRvV2ViQ29yZVBsYXRm
b3JtS2V5Ym9hcmRFdmVudFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0
YXRlKToKKwogMjAxMS0xMS0zMCAgSmVmZiBUaW1hbnVzICA8dHdpekBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgQWx0ZXIgYW4gZWFybHkgcmV0dXJuIHRoYXQgd2FzIHByZXZlbnRpbmcgSFRNTENh
bnZhc0VsZW1lbnQ6OmRpZERyYXcgbm90aWZpY2F0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9NSU1FVHlwZVJlZ2lzdHJ5QmxhY2tCZXJyeS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFj
a0JlcnJ5LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZjIwN2FkODY5YTk4M2JkNjdkYjZiMjQyNjFiYzQwMDgx
ZWNjNGZhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9NSU1FVHlwZVJlZ2lzdHJ5QmxhY2tCZXJyeS5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgWmFjayBSdXNpbiA8emFja0BrZGUub3JnPgorICogQ29w
eXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICogQ29weXJpZ2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vi
c2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIFJl
c2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5LmgiCisKKyNpbmNs
dWRlICJOb3RJbXBsZW1lbnRlZC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBF
eHRlbnNpb25NYXAgeworICAgIGNvbnN0IGNoYXIqIGV4dGVuc2lvbjsKKyAgICBjb25zdCBjaGFy
KiBtaW1lVHlwZTsKK307CisKK3N0YXRpYyBjb25zdCBFeHRlbnNpb25NYXAgZXh0ZW5zaW9uTWFw
W10gPSB7CisgICAgeyAiYm1wIiwgImltYWdlL2JtcCIgfSwKKyAgICB7ICJjc3MiLCAidGV4dC9j
c3MiIH0sCisgICAgeyAiZ2lmIiwgImltYWdlL2dpZiIgfSwKKyAgICB7ICJodG1sIiwgInRleHQv
aHRtbCIgfSwKKyAgICB7ICJodG0iLCAidGV4dC9odG1sIiB9LAorICAgIHsgImljbyIsICJpbWFn
ZS94LWljb24iIH0sCisgICAgeyAianBnIiwgImltYWdlL2pwZWciIH0sCisgICAgeyAianBlZyIs
ICJpbWFnZS9qcGVnIiB9LAorICAgIHsgImpzIiwgImFwcGxpY2F0aW9uL3gtamF2YXNjcmlwdCIg
fSwKKyAgICB7ICJtbmciLCAidmlkZW8veC1tbmciIH0sCisgICAgeyAicGJtIiwgImltYWdlL3gt
cG9ydGFibGUtYml0bWFwIiB9LAorICAgIHsgInBnbSIsICJpbWFnZS94LXBvcnRhYmxlLWdyYXlt
YXAiIH0sCisgICAgeyAicGRmIiwgImFwcGxpY2F0aW9uL3BkZiIgfSwKKyAgICB7ICJwbmciLCAi
aW1hZ2UvcG5nIiB9LAorICAgIHsgInBwbSIsICJpbWFnZS94LXBvcnRhYmxlLXBpeG1hcCIgfSwK
KyAgICB7ICJyc3MiLCAiYXBwbGljYXRpb24vcnNzK3htbCIgfSwKKyAgICB7ICJzdmciLCAiaW1h
Z2Uvc3ZnK3htbCIgfSwKKyAgICB7ICJzdmd6IiwgImltYWdlL3N2Zyt4bWwiIH0sCisgICAgeyAi
dHh0IiwgInRleHQvcGxhaW4iIH0sCisgICAgeyAidGV4dCIsICJ0ZXh0L3BsYWluIiB9LAorICAg
IHsgInRpZmYiLCAiaW1hZ2UvdGlmZiIgfSwKKyAgICB7ICJ0aWYiLCAiaW1hZ2UvdGlmZiIgfSwK
KyAgICB7ICJ4Ym0iLCAiaW1hZ2UveC14Yml0bWFwIiB9LAorICAgIHsgInhtbCIsICJ0ZXh0L3ht
bCIgfSwKKyAgICB7ICJ4cG0iLCAiaW1hZ2UveC14cG0iIH0sCisgICAgeyAieHNsIiwgInRleHQv
eHNsIiB9LAorICAgIHsgInhodG1sIiwgImFwcGxpY2F0aW9uL3hodG1sK3htbCIgfSwKKyAgICB7
ICJ3bWwiLCAidGV4dC92bmQud2FwLndtbCIgfSwKKyAgICB7ICJ3bWxjIiwgImFwcGxpY2F0aW9u
L3ZuZC53YXAud21sYyIgfSwKKyAgICB7ICJtNGEiLCAiYXVkaW8vbTRhIiB9LAorICAgIHsgIm1p
ZGkiLCAiYXVkaW8vbWlkaSIgfSwKKyAgICB7ICJtaWQiLCAiYXVkaW8vbWlkIiB9LAorICAgIHsg
Im1wMyIsICJhdWRpby9tcDMiIH0sCisgICAgeyAid21hIiwgImF1ZGlvL3gtbXMtd21hIiB9LAor
ICAgIHsgIjNncCIsICJ2aWRlby8zZ3BwIiB9LAorICAgIHsgIjNncHAiLCAidmlkZW8vM2dwcCIg
fSwKKyAgICB7ICIzZ3BwMiIsICJ2aWRlby8zZ3BwMiIgfSwKKyAgICB7ICIzZzIiLCAidmlkZW8v
M2dwcDIiIH0sCisgICAgeyAiM2dwMiIsICJ2aWRlby8zZ3BwMiIgfSwKKyAgICB7ICJtcDQiLCAi
dmlkZW8vbXA0IiB9LAorICAgIHsgIm00diIsICJ2aWRlby9tNHYiIH0sCisgICAgeyAiYXZpIiwg
InZpZGVvL3gtbXN2aWRlbyIgfSwKKyAgICB7ICJtb3YiLCAidmlkZW8vcXVpY2t0aW1lIiB9LAor
ICAgIHsgImRpdngiLCAidmlkZW8vZGl2eCIgfSwKKyAgICB7ICJtcGVnIiwgInZpZGVvL21wZWci
IH0sCisgICAgeyAic2J2IiwgInZpZGVvL3NidiIgfSwKKyAgICB7ICJhc2YiLCAidmlkZW8veC1t
cy1hc2YiIH0sCisgICAgeyAid20iLCAidmlkZW8veC1tcy13bSIgfSwKKyAgICB7ICJ3bXYiLCAi
dmlkZW8veC1tcy13bXYiIH0sCisgICAgeyAid214IiwgInZpZGVvL3gtbXMtd214IiB9LAorICAg
IHsgIndhdiIsICJhdWRpby94LXdhdiIgfSwKKyAgICB7ICJhbXIiLCAiYXVkaW8vYW1yIiB9LAor
ICAgIHsgImFhYyIsICJhdWRpby9hYWMiIH0sCisgICAgeyAieC1nc20iLCAiYXVkaW8veC1nc20i
IH0sCisgICAgeyAic3dmIiwgImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIn0sCisgICAg
eyAibTN1OCIsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUubXBlZ3VybCJ9LAorICAgIHsgIm0zdXJs
IiwgImF1ZGlvL21wZWd1cmwifSwKKyAgICB7ICJtM3UiLCAiYXVkaW8vbXBlZ3VybCJ9LAorICAg
IC8vIEZJWE1FOiB3aW5jZSBhbHNvIG1hcHMgdHRmIGFuZCBvdGYgdG8gdGV4dC9wbGFpbi4gU2hv
dWxkIHdlIGRvIHRoYXQgdG9vPworICAgIHsgMCwgMCB9Cit9OworCitTdHJpbmcgTUlNRVR5cGVS
ZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNpb24oY29uc3QgU3RyaW5nICZleHQpCit7Cisg
ICAgU3RyaW5nIHMgPSBleHQubG93ZXIoKTsKKworICAgIGNvbnN0IEV4dGVuc2lvbk1hcCogZSA9
IGV4dGVuc2lvbk1hcDsKKyAgICB3aGlsZSAoZS0+ZXh0ZW5zaW9uKSB7CisgICAgICAgIGlmIChz
ID09IGUtPmV4dGVuc2lvbikKKyAgICAgICAgICAgIHJldHVybiBlLT5taW1lVHlwZTsKKyAgICAg
ICAgKytlOworICAgIH0KKworICAgIHJldHVybiBTdHJpbmcoKTsKK30KKworU3RyaW5nIE1JTUVU
eXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lvbkZvck1JTUVUeXBlKGNvbnN0IFN0cmlu
ZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKKworICAgIFN0cmluZyBzID0gdHlwZS5sb3dlcigpOworCisgICAgY29uc3QgRXh0ZW5z
aW9uTWFwKiBlID0gZXh0ZW5zaW9uTWFwOworICAgIHdoaWxlIChlLT5taW1lVHlwZSkgeworICAg
ICAgICBpZiAocyA9PSBlLT5taW1lVHlwZSkKKyAgICAgICAgICAgIHJldHVybiBlLT5leHRlbnNp
b247CisgICAgICAgICsrZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK2Jv
b2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKGNvbnN0IFN0
cmluZyYgbWltZVR5cGUpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRF
dmVudEJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlZGI1ZTVjMmE0YzJmZTBiMTUxMTNkZjBh
ZjkxMGJmNDg1MTkxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAg
KzEsNDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIFJlc2VhcmNoIEluIE1v
dGlvbiBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAq
IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp
dGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0
aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisg
KiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3Jp
dGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIK
KworI2luY2x1ZGUgIkJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oIgorI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKworI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9D
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBrZXlJZGVu
dGlmaWVyRm9yQmxhY2tCZXJyeUNoYXJhY3Rlcih1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIpCit7
CisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAgICBjYXNlIEtFWUNPREVfUkVUVVJOOgorICAg
IGNhc2UgS0VZQ09ERV9LUF9FTlRFUjoKKyAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgY2Fz
ZSBLRVlDT0RFX0JBQ0tTUEFDRToKKyAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgIGNhc2Ug
S0VZQ09ERV9ERUxFVEU6CisgICAgICAgIHJldHVybiAiVSswMDdGIjsKKyAgICBjYXNlIEtFWUNP
REVfRVNDQVBFOgorICAgICAgICByZXR1cm4gIkVzY2FwZSI7CisgICAgY2FzZSBLRVlDT0RFX1BB
VVNFOgorICAgICAgICByZXR1cm4gIlBhdXNlIjsKKyAgICBjYXNlIEtFWUNPREVfUFJJTlQ6Cisg
ICAgICAgIHJldHVybiAiUHJpbnRTY3JlZW4iOworICAgIGNhc2UgS0VZQ09ERV9UQUI6CisgICAg
Y2FzZSBLRVlDT0RFX0JBQ0tfVEFCOgorICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgY2Fz
ZSBLRVlDT0RFX0xFRlQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0xFRlQ6CisgICAgICAgIHJldHVy
biAiTGVmdCI7CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9S
SUdIVDoKKyAgICAgICAgcmV0dXJuICJSaWdodCI7CisgICAgY2FzZSBLRVlDT0RFX1VQOgorICAg
IGNhc2UgS0VZQ09ERV9LUF9VUDoKKyAgICAgICAgcmV0dXJuICJVcCI7CisgICAgY2FzZSBLRVlD
T0RFX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX0RPV046CisgICAgICAgIHJldHVybiAiRG93
biI7CisgICAgY2FzZSBLRVlDT0RFX0tQX0RFTEVURToKKyAgICAgICAgcmV0dXJuICJVKzAwN0Yi
OworICAgIGNhc2UgS0VZQ09ERV9NRU5VOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUX0FMVDoKKyAg
ICBjYXNlIEtFWUNPREVfUklHSFRfQUxUOgorICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgY2Fz
ZSBLRVlDT0RFX0hPTUU6CisgICAgY2FzZSBLRVlDT0RFX0tQX0hPTUU6CisgICAgICAgIHJldHVy
biAiSG9tZSI7CisgICAgY2FzZSBLRVlDT0RFX0lOU0VSVDoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
SU5TRVJUOgorICAgICAgICByZXR1cm4gIkluc2VydCI7CisgICAgY2FzZSBLRVlDT0RFX1BHX1VQ
OgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19VUDoKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biI7
CisgICAgY2FzZSBLRVlDT0RFX1BHX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX0RPV046
CisgICAgICAgIHJldHVybiAiUGFnZVVwIjsKKyAgICBjYXNlIEtFWUNPREVfRU5EOgorICAgIGNh
c2UgS0VZQ09ERV9LUF9FTkQ6CisgICAgICAgIHJldHVybiAiRW5kIjsKKyAgICBjYXNlIEtFWUNP
REVfRjE6CisgICAgICAgIHJldHVybiAiRjEiOworICAgIGNhc2UgS0VZQ09ERV9GMjoKKyAgICAg
ICAgcmV0dXJuICJGMiI7CisgICAgY2FzZSBLRVlDT0RFX0YzOgorICAgICAgICByZXR1cm4gIkYz
IjsKKyAgICBjYXNlIEtFWUNPREVfRjQ6CisgICAgICAgIHJldHVybiAiRjQiOworICAgIGNhc2Ug
S0VZQ09ERV9GNToKKyAgICAgICAgcmV0dXJuICJGNSI7CisgICAgY2FzZSBLRVlDT0RFX0Y2Ogor
ICAgICAgICByZXR1cm4gIkY2IjsKKyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAgICAgIHJldHVy
biAiRjciOworICAgIGNhc2UgS0VZQ09ERV9GODoKKyAgICAgICAgcmV0dXJuICJGOCI7CisgICAg
Y2FzZSBLRVlDT0RFX0Y5OgorICAgICAgICByZXR1cm4gIkY5IjsKKyAgICBjYXNlIEtFWUNPREVf
RjEwOgorICAgICAgICByZXR1cm4gIkYxMCI7CisgICAgY2FzZSBLRVlDT0RFX0YxMToKKyAgICAg
ICAgcmV0dXJuICJGMTEiOworICAgIGNhc2UgS0VZQ09ERV9GMTI6CisgICAgICAgIHJldHVybiAi
RjEyIjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlUrJTA0
WCIsIFdURjo6dG9BU0NJSVVwcGVyKGNoYXJhY3RlcikpOworICAgIH0KK30KKworc3RhdGljIGlu
dCB3aW5kb3dzS2V5Q29kZUZvckJsYWNrQmVycnlDaGFyYWN0ZXIodW5zaWduZWQgc2hvcnQgY2hh
cmFjdGVyKQoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAgY2FzZSBLRVlDT0RFX1JF
VFVSTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfRU5URVI6CisgICAgICAgIHJldHVybiBWS19SRVRV
Uk47IC8vICgwRCkgUmV0dXJuIGtleQorICAgIGNhc2UgS0VZQ09ERV9CQUNLU1BBQ0U6CisgICAg
ICAgIHJldHVybiBWS19CQUNLOyAvLyAoMDgpIEJBQ0tTUEFDRSBrZXkKKyAgICBjYXNlIEtFWUNP
REVfREVMRVRFOgorICAgICAgICByZXR1cm4gVktfREVMRVRFOyAvLyAoMkUpIERFTCBrZXkKKyAg
ICBjYXNlIEtFWUNPREVfRVNDQVBFOgorICAgICAgICByZXR1cm4gVktfRVNDQVBFOworICAgIGNh
c2UgS0VZQ09ERV9TUEFDRToKKyAgICAgICAgcmV0dXJuIFZLX1NQQUNFOworICAgIGNhc2UgJzAn
OgorICAgIGNhc2UgJyknOgorICAgICAgICByZXR1cm4gVktfMDsKKyAgICBjYXNlICcxJzoKKyAg
ICBjYXNlICchJzoKKyAgICAgICAgcmV0dXJuIFZLXzE7CisgICAgY2FzZSAnMic6CisgICAgY2Fz
ZSAnQCc6CisgICAgICAgIHJldHVybiBWS18yOworICAgIGNhc2UgJzMnOgorICAgIGNhc2UgJyMn
OgorICAgICAgICByZXR1cm4gVktfMzsKKyAgICBjYXNlICc0JzoKKyAgICBjYXNlICckJzoKKyAg
ICAgICAgcmV0dXJuIFZLXzQ7CisgICAgY2FzZSAnNSc6CisgICAgY2FzZSAnJSc6CisgICAgICAg
IHJldHVybiBWS181OworICAgIGNhc2UgJzYnOgorICAgIGNhc2UgJ14nOgorICAgICAgICByZXR1
cm4gVktfNjsKKyAgICBjYXNlICc3JzoKKyAgICBjYXNlICcmJzoKKyAgICAgICAgcmV0dXJuIFZL
Xzc7CisgICAgY2FzZSAnOCc6CisgICAgY2FzZSAnKic6CisgICAgICAgIHJldHVybiBWS184Owor
ICAgIGNhc2UgJzknOgorICAgIGNhc2UgJygnOgorICAgICAgICByZXR1cm4gVktfOTsKKyAgICBj
YXNlICdhJzoKKyAgICBjYXNlICdBJzoKKyAgICAgICAgcmV0dXJuIFZLX0E7CisgICAgY2FzZSAn
Yic6CisgICAgY2FzZSAnQic6CisgICAgICAgIHJldHVybiBWS19COworICAgIGNhc2UgJ2MnOgor
ICAgIGNhc2UgJ0MnOgorICAgICAgICByZXR1cm4gVktfQzsKKyAgICBjYXNlICdkJzoKKyAgICBj
YXNlICdEJzoKKyAgICAgICAgcmV0dXJuIFZLX0Q7CisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAn
RSc6CisgICAgICAgIHJldHVybiBWS19FOworICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgor
ICAgICAgICByZXR1cm4gVktfRjsKKyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICAg
ICAgcmV0dXJuIFZLX0c7CisgICAgY2FzZSAnaCc6CisgICAgY2FzZSAnSCc6CisgICAgICAgIHJl
dHVybiBWS19IOworICAgIGNhc2UgJ2knOgorICAgIGNhc2UgJ0knOgorICAgICAgICByZXR1cm4g
VktfSTsKKyAgICBjYXNlICdqJzoKKyAgICBjYXNlICdKJzoKKyAgICAgICAgcmV0dXJuIFZLX0o7
CisgICAgY2FzZSAnayc6CisgICAgY2FzZSAnSyc6CisgICAgICAgIHJldHVybiBWS19LOworICAg
IGNhc2UgJ2wnOgorICAgIGNhc2UgJ0wnOgorICAgICAgICByZXR1cm4gVktfTDsKKyAgICBjYXNl
ICdtJzoKKyAgICBjYXNlICdNJzoKKyAgICAgICAgcmV0dXJuIFZLX007CisgICAgY2FzZSAnbic6
CisgICAgY2FzZSAnTic6CisgICAgICAgIHJldHVybiBWS19OOworICAgIGNhc2UgJ28nOgorICAg
IGNhc2UgJ08nOgorICAgICAgICByZXR1cm4gVktfTzsKKyAgICBjYXNlICdwJzoKKyAgICBjYXNl
ICdQJzoKKyAgICAgICAgcmV0dXJuIFZLX1A7CisgICAgY2FzZSAncSc6CisgICAgY2FzZSAnUSc6
CisgICAgICAgIHJldHVybiBWS19ROworICAgIGNhc2UgJ3InOgorICAgIGNhc2UgJ1InOgorICAg
ICAgICByZXR1cm4gVktfUjsKKyAgICBjYXNlICdzJzoKKyAgICBjYXNlICdTJzoKKyAgICAgICAg
cmV0dXJuIFZLX1M7CisgICAgY2FzZSAndCc6CisgICAgY2FzZSAnVCc6CisgICAgICAgIHJldHVy
biBWS19UOworICAgIGNhc2UgJ3UnOgorICAgIGNhc2UgJ1UnOgorICAgICAgICByZXR1cm4gVktf
VTsKKyAgICBjYXNlICd2JzoKKyAgICBjYXNlICdWJzoKKyAgICAgICAgcmV0dXJuIFZLX1Y7Cisg
ICAgY2FzZSAndyc6CisgICAgY2FzZSAnVyc6CisgICAgICAgIHJldHVybiBWS19XOworICAgIGNh
c2UgJ3gnOgorICAgIGNhc2UgJ1gnOgorICAgICAgICByZXR1cm4gVktfWDsKKyAgICBjYXNlICd5
JzoKKyAgICBjYXNlICdZJzoKKyAgICAgICAgcmV0dXJuIFZLX1k7CisgICAgY2FzZSAneic6Cisg
ICAgY2FzZSAnWic6CisgICAgICAgIHJldHVybiBWS19aOworICAgIGNhc2UgJysnOgorICAgIGNh
c2UgJz0nOgorICAgICAgICByZXR1cm4gVktfT0VNX1BMVVM7CisgICAgY2FzZSAnLSc6CisgICAg
Y2FzZSAnXyc6CisgICAgICAgIHJldHVybiBWS19PRU1fTUlOVVM7CisgICAgY2FzZSAnPCc6Cisg
ICAgY2FzZSAnLCc6CisgICAgICAgIHJldHVybiBWS19PRU1fQ09NTUE7CisgICAgY2FzZSAnPic6
CisgICAgY2FzZSAnLic6CisgICAgICAgIHJldHVybiBWS19PRU1fUEVSSU9EOworICAgIGNhc2Ug
JzonOgorICAgIGNhc2UgJzsnOgorICAgICAgICByZXR1cm4gVktfT0VNXzE7CisgICAgY2FzZSAn
Lyc6CisgICAgY2FzZSAnPyc6CisgICAgICAgIHJldHVybiBWS19PRU1fMjsKKyAgICBjYXNlICd+
JzoKKyAgICBjYXNlICdgJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV8zOworICAgIGNhc2UgJ3sn
OgorICAgIGNhc2UgJ1snOgorICAgICAgICByZXR1cm4gVktfT0VNXzQ7CisgICAgY2FzZSAnfCc6
CisgICAgY2FzZSAnXFwnOgorICAgICAgICByZXR1cm4gVktfT0VNXzU7CisgICAgY2FzZSAnfSc6
CisgICAgY2FzZSAnXSc6CisgICAgICAgIHJldHVybiBWS19PRU1fNjsKKyAgICBjYXNlICciJzoK
KyAgICBjYXNlICdcJyc6CisgICAgICAgIHJldHVybiBWS19PRU1fNzsKKyAgICBjYXNlIEtFWUNP
REVfUEFVU0U6CisgICAgICAgIHJldHVybiBWS19QQVVTRTsKKyAgICBjYXNlIEtFWUNPREVfUFJJ
TlQ6CisgICAgICAgIHJldHVybiBWS19QUklOVDsKKyAgICBjYXNlIEtFWUNPREVfU0NST0xMX0xP
Q0s6CisgICAgICAgIHJldHVybiBWS19TQ1JPTEw7CisgICAgY2FzZSBLRVlDT0RFX1RBQjoKKyAg
ICBjYXNlIEtFWUNPREVfQkFDS19UQUI6CisgICAgICAgIHJldHVybiBWS19UQUI7CisgICAgY2Fz
ZSBLRVlDT0RFX0xFRlQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0xFRlQ6CisgICAgICAgIHJldHVy
biBWS19MRUZUOworICAgIGNhc2UgS0VZQ09ERV9SSUdIVDoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
UklHSFQ6CisgICAgICAgIHJldHVybiBWS19SSUdIVDsKKyAgICBjYXNlIEtFWUNPREVfVVA6Cisg
ICAgY2FzZSBLRVlDT0RFX0tQX1VQOgorICAgICAgICByZXR1cm4gVktfVVA7CisgICAgY2FzZSBL
RVlDT0RFX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX0RPV046CisgICAgICAgIHJldHVybiBW
S19ET1dOOworICAgIGNhc2UgS0VZQ09ERV9LUF9ERUxFVEU6CisgICAgICAgIHJldHVybiBWS19E
RUxFVEU7CisgICAgY2FzZSBLRVlDT0RFX01FTlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQUxU
OgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9BTFQ6CisgICAgICAgIHJldHVybiBWS19NRU5VOwor
ICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAgIGNhc2UgS0VZQ09ERV9LUF9IT01FOgorICAgICAg
ICByZXR1cm4gVktfSE9NRTsKKyAgICBjYXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZ
Q09ERV9LUF9JTlNFUlQ6CisgICAgICAgIHJldHVybiBWS19JTlNFUlQ7CisgICAgY2FzZSBLRVlD
T0RFX1BHX1VQOgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19VUDoKKyAgICAgICAgcmV0dXJuIFZL
X05FWFQ7CisgICAgY2FzZSBLRVlDT0RFX1BHX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BH
X0RPV046CisgICAgICAgIHJldHVybiBWS19QUklPUjsKKyAgICBjYXNlIEtFWUNPREVfRU5EOgor
ICAgIGNhc2UgS0VZQ09ERV9LUF9FTkQ6CisgICAgICAgIHJldHVybiBWS19FTkQ7CisgICAgY2Fz
ZSBLRVlDT0RFX0NBUFNfTE9DSzoKKyAgICAgICAgcmV0dXJuIFZLX0NBUElUQUw7CisgICAgY2Fz
ZSBLRVlDT0RFX0xFRlRfU0hJRlQ6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX1NISUZUOgorICAg
ICAgICByZXR1cm4gVktfU0hJRlQ7CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQ1RSTDoKKyAgICBj
YXNlIEtFWUNPREVfUklHSFRfQ1RSTDoKKyAgICAgICAgcmV0dXJuIFZLX0NPTlRST0w7CisgICAg
Y2FzZSBLRVlDT0RFX05VTV9MT0NLOgorICAgICAgICByZXR1cm4gVktfTlVNTE9DSzsKKyAgICBj
YXNlIEtFWUNPREVfS1BfUExVUzoKKyAgICAgICAgcmV0dXJuIFZLX0FERDsKKyAgICBjYXNlIEtF
WUNPREVfS1BfTUlOVVM6CisgICAgICAgIHJldHVybiBWS19TVUJUUkFDVDsKKyAgICBjYXNlIEtF
WUNPREVfS1BfTVVMVElQTFk6CisgICAgICAgIHJldHVybiBWS19NVUxUSVBMWTsKKyAgICBjYXNl
IEtFWUNPREVfS1BfRElWSURFOgorICAgICAgICByZXR1cm4gVktfRElWSURFOworICAgIGNhc2Ug
S0VZQ09ERV9LUF9GSVZFOgorICAgICAgICByZXR1cm4gVktfTlVNUEFENTsKKyAgICBjYXNlIEtF
WUNPREVfRjE6CisgICAgICAgIHJldHVybiBWS19GMTsKKyAgICBjYXNlIEtFWUNPREVfRjI6Cisg
ICAgICAgIHJldHVybiBWS19GMjsKKyAgICBjYXNlIEtFWUNPREVfRjM6CisgICAgICAgIHJldHVy
biBWS19GMzsKKyAgICBjYXNlIEtFWUNPREVfRjQ6CisgICAgICAgIHJldHVybiBWS19GNDsKKyAg
ICBjYXNlIEtFWUNPREVfRjU6CisgICAgICAgIHJldHVybiBWS19GNTsKKyAgICBjYXNlIEtFWUNP
REVfRjY6CisgICAgICAgIHJldHVybiBWS19GNjsKKyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAg
ICAgIHJldHVybiBWS19GNzsKKyAgICBjYXNlIEtFWUNPREVfRjg6CisgICAgICAgIHJldHVybiBW
S19GODsKKyAgICBjYXNlIEtFWUNPREVfRjk6CisgICAgICAgIHJldHVybiBWS19GOTsKKyAgICBj
YXNlIEtFWUNPREVfRjEwOgorICAgICAgICByZXR1cm4gVktfRjEwOworICAgIGNhc2UgS0VZQ09E
RV9GMTE6CisgICAgICAgIHJldHVybiBWS19GMTE7CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAg
ICAgICAgcmV0dXJuIFZLX0YxMjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAg
ICB9Cit9CisKK3Vuc2lnbmVkIHNob3J0IGFkanVzdENoYXJhY3RlckZyb21PUyh1bnNpZ25lZCBz
aG9ydCBjaGFyYWN0ZXIpCit7CisgICAgLy8gVXNlIHdpbmRvd3Mga2V5IGNoYXJhY3RlciBhcyBB
U0NJSSB2YWx1ZSB3aGVuIHBvc3NpYmxlIHRvIGVuaGFuY2UgcmVhZGFiaWxpdHkuCisgICAgc3dp
dGNoIChjaGFyYWN0ZXIpIHsKKyAgICBjYXNlIEtFWUNPREVfQkFDS1NQQUNFOgorICAgICAgICBy
ZXR1cm4gVktfQkFDSzsKKyAgICBjYXNlIEtFWUNPREVfS1BfREVMRVRFOgorICAgIGNhc2UgS0VZ
Q09ERV9ERUxFVEU6CisgICAgICAgIHJldHVybiAweDdmOworICAgIGNhc2UgS0VZQ09ERV9FU0NB
UEU6CisgICAgICAgIHJldHVybiBWS19FU0NBUEU7CisgICAgY2FzZSBLRVlDT0RFX1JFVFVSTjoK
KyAgICBjYXNlIEtFWUNPREVfS1BfRU5URVI6CisgICAgICAgIHJldHVybiBWS19SRVRVUk47Cisg
ICAgY2FzZSBLRVlDT0RFX0tQX1BMVVM6CisgICAgICAgIHJldHVybiBWS19BREQ7CisgICAgY2Fz
ZSBLRVlDT0RFX0tQX01JTlVTOgorICAgICAgICByZXR1cm4gVktfU1VCVFJBQ1Q7CisgICAgY2Fz
ZSBLRVlDT0RFX0tQX01VTFRJUExZOgorICAgICAgICByZXR1cm4gVktfTVVMVElQTFk7CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0RJVklERToKKyAgICAgICAgcmV0dXJuIFZLX0RJVklERTsKKyAgICBj
YXNlIEtFWUNPREVfS1BfRklWRToKKyAgICBjYXNlIEtFWUNPREVfSE9NRToKKyAgICBjYXNlIEtF
WUNPREVfS1BfSE9NRToKKyAgICBjYXNlIEtFWUNPREVfRU5EOgorICAgIGNhc2UgS0VZQ09ERV9L
UF9FTkQ6CisgICAgY2FzZSBLRVlDT0RFX0lOU0VSVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfSU5T
RVJUOgorICAgIGNhc2UgS0VZQ09ERV9QR19VUDoKKyAgICBjYXNlIEtFWUNPREVfS1BfUEdfVVA6
CisgICAgY2FzZSBLRVlDT0RFX1BHX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX0RPV046
CisgICAgY2FzZSBLRVlDT0RFX01FTlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQUxUOgorICAg
IGNhc2UgS0VZQ09ERV9SSUdIVF9BTFQ6CisgICAgY2FzZSBLRVlDT0RFX0NBUFNfTE9DSzoKKyAg
ICBjYXNlIEtFWUNPREVfTEVGVF9TSElGVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfU0hJRlQ6
CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQ1RSTDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfQ1RS
TDoKKyAgICBjYXNlIEtFWUNPREVfTlVNX0xPQ0s6CisgICAgY2FzZSBLRVlDT0RFX1BSSU5UOgor
ICAgIGNhc2UgS0VZQ09ERV9TQ1JPTExfTE9DSzoKKyAgICBjYXNlIEtFWUNPREVfUEFVU0U6Cisg
ICAgY2FzZSBLRVlDT0RFX0YxOgorICAgIGNhc2UgS0VZQ09ERV9GMjoKKyAgICBjYXNlIEtFWUNP
REVfRjM6CisgICAgY2FzZSBLRVlDT0RFX0Y0OgorICAgIGNhc2UgS0VZQ09ERV9GNToKKyAgICBj
YXNlIEtFWUNPREVfRjY6CisgICAgY2FzZSBLRVlDT0RFX0Y3OgorICAgIGNhc2UgS0VZQ09ERV9G
ODoKKyAgICBjYXNlIEtFWUNPREVfRjk6CisgICAgY2FzZSBLRVlDT0RFX0YxMDoKKyAgICBjYXNl
IEtFWUNPREVfRjExOgorICAgIGNhc2UgS0VZQ09ERV9GMTI6CisgICAgY2FzZSBLRVlDT0RFX0xF
RlQ6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUOgorICAgIGNhc2UgS0VZQ09ERV9VUDoKKyAgICBj
YXNlIEtFWUNPREVfRE9XTjoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBjaGFyYWN0ZXI7Cit9CisKK3N0YXRpYyBpbmxp
bmUgV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHRvV2ViQ29yZVBsYXRmb3Jt
S2V5Ym9hcmRFdmVudFR5cGUoY29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZl
bnQ6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEJsYWNrQmVy
cnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duOgorICAgICAgICByZXR1cm4gV2Vi
Q29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgIGNhc2UgQmxhY2tCZXJy
eTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleVVwOgorICAgICAgICByZXR1cm4gV2ViQ29y
ZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyOgorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgfQorfQorCitQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCBldmVudCkKKyAgICA6IG1fYXV0b1JlcGVhdChmYWxzZSkK
KyAgICAsIG1faXNLZXlwYWQoZmFsc2UpCisgICAgLCBtX3NoaWZ0S2V5KGV2ZW50LnNoaWZ0QWN0
aXZlKCkpCisgICAgLCBtX2N0cmxLZXkoZXZlbnQuY3RybEFjdGl2ZSgpKQorICAgICwgbV9hbHRL
ZXkoZXZlbnQuYWx0QWN0aXZlKCkpCisgICAgLCBtX21ldGFLZXkoZmFsc2UpCit7CisgICAgbV90
eXBlID0gdG9XZWJDb3JlUGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShldmVudC50eXBlKCkpOwor
ICAgIG1fdW5tb2RpZmllZENoYXJhY3RlciA9IGV2ZW50LmNoYXJhY3RlcigpOworICAgIG1fa2V5
SWRlbnRpZmllciA9IGtleUlkZW50aWZpZXJGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNo
YXJhY3RlcigpKTsKKyAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IHdpbmRvd3NLZXlDb2Rl
Rm9yQmxhY2tCZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0ZXIoKSk7CisgICAgdW5zaWduZWQg
c2hvcnQgY2hhcmFjdGVyID0gYWRqdXN0Q2hhcmFjdGVyRnJvbU9TKGV2ZW50LmNoYXJhY3Rlcigp
KTsKKyAgICBtX3RleHQgPSBTdHJpbmcoJmNoYXJhY3RlciwgMSk7CisgICAgbV91bm1vZGlmaWVk
VGV4dCA9IG1fdGV4dDsKKworICAgIGlmIChldmVudC5jaGFyYWN0ZXIoKSA9PSBLRVlDT0RFX0JB
Q0tfVEFCKQorICAgICAgICBtX3NoaWZ0S2V5ID0gdHJ1ZTsgLy8gQmFja1RhYiBzaG91bGQgYmUg
dHJlYXRlZCBhcyBTaGlmdCArIFRhYi4KKworICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2co
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIktleWJvYXJkIGV2ZW50IHJlY2Vp
dmVkIHRleHQ9JWxjLCBrZXlJZGVudGlmaWVyPSVzLCB3aW5kb3dzVmlydHVhbEtleUNvZGU9JWQi
LCBldmVudC5jaGFyYWN0ZXIoKSwgbV9rZXlJZGVudGlmaWVyLmxhdGluMSgpLmRhdGEoKSwgbV93
aW5kb3dzVmlydHVhbEtleUNvZGUpOworfQorCitib29sIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6
Y3VycmVudENhcHNMb2NrU3RhdGUoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0
dXJuIGZhbHNlOworfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6ZGlzYW1iaWd1YXRl
S2V5RG93bkV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlLCBib29sIGJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUpCit7CisgICAgLy8gQ2FuIG9ubHkgY2hhbmdlIHR5cGUgZnJv
bSBLZXlEb3duIHRvIFJhd0tleURvd24gb3IgQ2hhciwgYXMgd2UgbGFjayBpbmZvcm1hdGlvbiBm
b3Igb3RoZXIgY29udmVyc2lvbnMuCisgICAgQVNTRVJUKG1fdHlwZSA9PSBLZXlEb3duKTsKKyAg
ICBtX3R5cGUgPSB0eXBlOworCisgICAgaWYgKGJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmICh0eXBlID09IFJhd0tleURvd24pIHsKKyAgICAgICAg
bV90ZXh0ID0gU3RyaW5nKCk7CisgICAgICAgIG1fdW5tb2RpZmllZFRleHQgPSBTdHJpbmcoKTsK
KyAgICB9IGVsc2UgeworICAgICAgICBtX2tleUlkZW50aWZpZXIgPSBTdHJpbmcoKTsKKyAgICAg
ICAgbV93aW5kb3dzVmlydHVhbEtleUNvZGUgPSAwOworICAgIH0KK30KKwordm9pZCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQ6OmdldEN1cnJlbnRNb2RpZmllclN0YXRlKGJvb2wmIHNoaWZ0S2V5LCBi
b29sJiBjdHJsS2V5LCBib29sJiBhbHRLZXksIGJvb2wmIG1ldGFLZXkpCit7CisgICAgbm90SW1w
bGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>117836</attachid>
            <date>2011-12-04 21:14:17 -0800</date>
            <delta_ts>2011-12-08 02:01:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73534-20111205131415.patch</filename>
            <type>text/plain</type>
            <size>19616</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAxNTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODg4OTMyYjc1ZDNkZjgz
NDgyOTY5OWVmMTYxZTRmNzkwNzRhNjk1NS4uODJkNDRiMTNmYmU0N2EwODVjNzM2MzYwY2Y3NWVl
NzU4ZDg4OTdiNiAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTEyLTA0ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gQmxh
Y2tCZXJyeSBwb3J0aW5nIG9mIE1JTUVUeXBlUmVnaXN0cnkvS2V5Ym9hcmRFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlciBtYWluIGNvbnRy
aWJ1dG9yczoKKyAgICAgICAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorICAgICAg
ICBKb2UgTWFzb24gIDxqbWFzb25AcmltLmNvbT4KKyAgICAgICAgTWF4IEZlaWwgIDxtZmVpbEBx
bnguY29tPgorICAgICAgICBMdWthcyBTeWRvcm93c2tpIDxsc3lkb3Jvd3NraUByaW0uY29tPgor
ICAgICAgICBDcnlzdGFsIFpoYW5nICA8aGFpemhhbmdAcmltLmNvbT4KKworICAgICAgICBJbml0
aWFsIHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2Jl
cnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1F
VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9u
UGx1Z2luTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1L
ZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6a2V5
SWRlbnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6d2lu
ZG93c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
anVzdENoYXJhY3RlckZyb21PUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYkNvcmVQbGF0Zm9y
bUtleWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRF
dmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3Jt
S2V5Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0
ZSk6CisKIDIwMTEtMTEtMzAgIEplZmYgVGltYW51cyAgPHR3aXpAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIEFsdGVyIGFuIGVhcmx5IHJldHVybiB0aGF0IHdhcyBwcmV2ZW50aW5nIEhUTUxDYW52
YXNFbGVtZW50OjpkaWREcmF3IG5vdGlmaWNhdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9NSU1FVHlwZVJlZ2lzdHJ5QmxhY2tC
ZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uODQ0NzY0ODM5MWE5NDE0MjY0OGIzMGJmMjk1ZWZkMTU0Zjc4
NmFhYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IFphY2sgUnVzaW4gPHphY2tAa2RlLm9yZz4KKyAqIENvcHly
aWdodCAoQykgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNp
ZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorCisjaW5jbHVk
ZSAiTm90SW1wbGVtZW50ZWQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgRXh0
ZW5zaW9uTWFwIHsKKyAgICBjb25zdCBjaGFyKiBleHRlbnNpb247CisgICAgY29uc3QgY2hhciog
bWltZVR5cGU7Cit9OworCitzdGF0aWMgY29uc3QgRXh0ZW5zaW9uTWFwIGV4dGVuc2lvbk1hcFtd
ID0geworICAgIHsgImJtcCIsICJpbWFnZS9ibXAiIH0sCisgICAgeyAiY3NzIiwgInRleHQvY3Nz
IiB9LAorICAgIHsgImdpZiIsICJpbWFnZS9naWYiIH0sCisgICAgeyAiaHRtbCIsICJ0ZXh0L2h0
bWwiIH0sCisgICAgeyAiaHRtIiwgInRleHQvaHRtbCIgfSwKKyAgICB7ICJpY28iLCAiaW1hZ2Uv
eC1pY29uIiB9LAorICAgIHsgImpwZyIsICJpbWFnZS9qcGVnIiB9LAorICAgIHsgImpwZWciLCAi
aW1hZ2UvanBlZyIgfSwKKyAgICB7ICJqcyIsICJhcHBsaWNhdGlvbi94LWphdmFzY3JpcHQiIH0s
CisgICAgeyAibW5nIiwgInZpZGVvL3gtbW5nIiB9LAorICAgIHsgInBibSIsICJpbWFnZS94LXBv
cnRhYmxlLWJpdG1hcCIgfSwKKyAgICB7ICJwZ20iLCAiaW1hZ2UveC1wb3J0YWJsZS1ncmF5bWFw
IiB9LAorICAgIHsgInBkZiIsICJhcHBsaWNhdGlvbi9wZGYiIH0sCisgICAgeyAicG5nIiwgImlt
YWdlL3BuZyIgfSwKKyAgICB7ICJwcG0iLCAiaW1hZ2UveC1wb3J0YWJsZS1waXhtYXAiIH0sCisg
ICAgeyAicnNzIiwgImFwcGxpY2F0aW9uL3Jzcyt4bWwiIH0sCisgICAgeyAic3ZnIiwgImltYWdl
L3N2Zyt4bWwiIH0sCisgICAgeyAic3ZneiIsICJpbWFnZS9zdmcreG1sIiB9LAorICAgIHsgInR4
dCIsICJ0ZXh0L3BsYWluIiB9LAorICAgIHsgInRleHQiLCAidGV4dC9wbGFpbiIgfSwKKyAgICB7
ICJ0aWZmIiwgImltYWdlL3RpZmYiIH0sCisgICAgeyAidGlmIiwgImltYWdlL3RpZmYiIH0sCisg
ICAgeyAieGJtIiwgImltYWdlL3gteGJpdG1hcCIgfSwKKyAgICB7ICJ4bWwiLCAidGV4dC94bWwi
IH0sCisgICAgeyAieHBtIiwgImltYWdlL3gteHBtIiB9LAorICAgIHsgInhzbCIsICJ0ZXh0L3hz
bCIgfSwKKyAgICB7ICJ4aHRtbCIsICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiIH0sCisgICAgeyAi
d21sIiwgInRleHQvdm5kLndhcC53bWwiIH0sCisgICAgeyAid21sYyIsICJhcHBsaWNhdGlvbi92
bmQud2FwLndtbGMiIH0sCisgICAgeyAibTRhIiwgImF1ZGlvL200YSIgfSwKKyAgICB7ICJtaWRp
IiwgImF1ZGlvL21pZGkiIH0sCisgICAgeyAibWlkIiwgImF1ZGlvL21pZCIgfSwKKyAgICB7ICJt
cDMiLCAiYXVkaW8vbXAzIiB9LAorICAgIHsgIndtYSIsICJhdWRpby94LW1zLXdtYSIgfSwKKyAg
ICB7ICIzZ3AiLCAidmlkZW8vM2dwcCIgfSwKKyAgICB7ICIzZ3BwIiwgInZpZGVvLzNncHAiIH0s
CisgICAgeyAiM2dwcDIiLCAidmlkZW8vM2dwcDIiIH0sCisgICAgeyAiM2cyIiwgInZpZGVvLzNn
cHAyIiB9LAorICAgIHsgIjNncDIiLCAidmlkZW8vM2dwcDIiIH0sCisgICAgeyAibXA0IiwgInZp
ZGVvL21wNCIgfSwKKyAgICB7ICJtNHYiLCAidmlkZW8vbTR2IiB9LAorICAgIHsgImF2aSIsICJ2
aWRlby94LW1zdmlkZW8iIH0sCisgICAgeyAibW92IiwgInZpZGVvL3F1aWNrdGltZSIgfSwKKyAg
ICB7ICJkaXZ4IiwgInZpZGVvL2RpdngiIH0sCisgICAgeyAibXBlZyIsICJ2aWRlby9tcGVnIiB9
LAorICAgIHsgInNidiIsICJ2aWRlby9zYnYiIH0sCisgICAgeyAiYXNmIiwgInZpZGVvL3gtbXMt
YXNmIiB9LAorICAgIHsgIndtIiwgInZpZGVvL3gtbXMtd20iIH0sCisgICAgeyAid212IiwgInZp
ZGVvL3gtbXMtd212IiB9LAorICAgIHsgIndteCIsICJ2aWRlby94LW1zLXdteCIgfSwKKyAgICB7
ICJ3YXYiLCAiYXVkaW8veC13YXYiIH0sCisgICAgeyAiYW1yIiwgImF1ZGlvL2FtciIgfSwKKyAg
ICB7ICJhYWMiLCAiYXVkaW8vYWFjIiB9LAorICAgIHsgIngtZ3NtIiwgImF1ZGlvL3gtZ3NtIiB9
LAorICAgIHsgInN3ZiIsICJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCJ9LAorICAgIHsg
Im0zdTgiLCAiYXBwbGljYXRpb24vdm5kLmFwcGxlLm1wZWd1cmwifSwKKyAgICB7ICJtM3VybCIs
ICJhdWRpby9tcGVndXJsIn0sCisgICAgeyAibTN1IiwgImF1ZGlvL21wZWd1cmwifSwKKyAgICAv
LyBGSVhNRTogd2luY2UgYWxzbyBtYXBzIHR0ZiBhbmQgb3RmIHRvIHRleHQvcGxhaW4uIFNob3Vs
ZCB3ZSBkbyB0aGF0IHRvbz8KKyAgICB7IDAsIDAgfQorfTsKKworU3RyaW5nIE1JTUVUeXBlUmVn
aXN0cnk6OmdldE1JTUVUeXBlRm9yRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyAmZXh0KQoreworICAg
IFN0cmluZyBzID0gZXh0Lmxvd2VyKCk7CisKKyAgICBjb25zdCBFeHRlbnNpb25NYXAqIGUgPSBl
eHRlbnNpb25NYXA7CisgICAgd2hpbGUgKGUtPmV4dGVuc2lvbikgeworICAgICAgICBpZiAocyA9
PSBlLT5leHRlbnNpb24pCisgICAgICAgICAgICByZXR1cm4gZS0+bWltZVR5cGU7CisgICAgICAg
ICsrZTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKK1N0cmluZyBNSU1FVHlw
ZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcm
IHR5cGUpCit7CisgICAgaWYgKHR5cGUuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5n
KCk7CisKKyAgICBTdHJpbmcgcyA9IHR5cGUubG93ZXIoKTsKKworICAgIGNvbnN0IEV4dGVuc2lv
bk1hcCogZSA9IGV4dGVuc2lvbk1hcDsKKyAgICB3aGlsZSAoZS0+bWltZVR5cGUpIHsKKyAgICAg
ICAgaWYgKHMgPT0gZS0+bWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gZS0+ZXh0ZW5zaW9u
OworICAgICAgICArK2U7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCitib29s
IE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShjb25zdCBTdHJp
bmcmIC8qbWltZVR5cGUqLykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIHJldHVybiBm
YWxzZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50QmxhY2tCZXJyeS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzU4ZWZkMmMyZWFkMzYzOGI4ODk4ZjFi
OGE1YmZjZjI5OTZiMzhjMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAKQEAgLTAs
MCArMSw0OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYg
bm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNB
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRF
dmVudC5oIgorCisjaW5jbHVkZSAiQmxhY2tCZXJyeVBsYXRmb3JtTG9nLmgiCisjaW5jbHVkZSAi
Tm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgorCisj
aW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdGF0aWMgU3RyaW5n
IGtleUlkZW50aWZpZXJGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKHVuc2lnbmVkIHNob3J0IGNoYXJh
Y3RlcikKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2UgS0VZQ09ERV9SRVRV
Uk46CisgICAgY2FzZSBLRVlDT0RFX0tQX0VOVEVSOgorICAgICAgICByZXR1cm4gIkVudGVyIjsK
KyAgICBjYXNlIEtFWUNPREVfQkFDS1NQQUNFOgorICAgICAgICByZXR1cm4gIlUrMDAwOCI7Cisg
ICAgY2FzZSBLRVlDT0RFX0RFTEVURToKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgIGNh
c2UgS0VZQ09ERV9FU0NBUEU6CisgICAgICAgIHJldHVybiAiRXNjYXBlIjsKKyAgICBjYXNlIEtF
WUNPREVfUEFVU0U6CisgICAgICAgIHJldHVybiAiUGF1c2UiOworICAgIGNhc2UgS0VZQ09ERV9Q
UklOVDoKKyAgICAgICAgcmV0dXJuICJQcmludFNjcmVlbiI7CisgICAgY2FzZSBLRVlDT0RFX1RB
QjoKKyAgICBjYXNlIEtFWUNPREVfQkFDS19UQUI6CisgICAgICAgIHJldHVybiAiVSswMDA5IjsK
KyAgICBjYXNlIEtFWUNPREVfTEVGVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfTEVGVDoKKyAgICAg
ICAgcmV0dXJuICJMZWZ0IjsKKyAgICBjYXNlIEtFWUNPREVfUklHSFQ6CisgICAgY2FzZSBLRVlD
T0RFX0tQX1JJR0hUOgorICAgICAgICByZXR1cm4gIlJpZ2h0IjsKKyAgICBjYXNlIEtFWUNPREVf
VVA6CisgICAgY2FzZSBLRVlDT0RFX0tQX1VQOgorICAgICAgICByZXR1cm4gIlVwIjsKKyAgICBj
YXNlIEtFWUNPREVfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfRE9XTjoKKyAgICAgICAgcmV0
dXJuICJEb3duIjsKKyAgICBjYXNlIEtFWUNPREVfS1BfREVMRVRFOgorICAgICAgICByZXR1cm4g
IlUrMDA3RiI7CisgICAgY2FzZSBLRVlDT0RFX01FTlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRf
QUxUOgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9BTFQ6CisgICAgICAgIHJldHVybiAiQWx0IjsK
KyAgICBjYXNlIEtFWUNPREVfSE9NRToKKyAgICBjYXNlIEtFWUNPREVfS1BfSE9NRToKKyAgICAg
ICAgcmV0dXJuICJIb21lIjsKKyAgICBjYXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZ
Q09ERV9LUF9JTlNFUlQ6CisgICAgICAgIHJldHVybiAiSW5zZXJ0IjsKKyAgICBjYXNlIEtFWUNP
REVfUEdfVVA6CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX1VQOgorICAgICAgICByZXR1cm4gIlBh
Z2VEb3duIjsKKyAgICBjYXNlIEtFWUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
UEdfRE9XTjoKKyAgICAgICAgcmV0dXJuICJQYWdlVXAiOworICAgIGNhc2UgS0VZQ09ERV9FTkQ6
CisgICAgY2FzZSBLRVlDT0RFX0tQX0VORDoKKyAgICAgICAgcmV0dXJuICJFbmQiOworICAgIGNh
c2UgS0VZQ09ERV9GMToKKyAgICAgICAgcmV0dXJuICJGMSI7CisgICAgY2FzZSBLRVlDT0RFX0Yy
OgorICAgICAgICByZXR1cm4gIkYyIjsKKyAgICBjYXNlIEtFWUNPREVfRjM6CisgICAgICAgIHJl
dHVybiAiRjMiOworICAgIGNhc2UgS0VZQ09ERV9GNDoKKyAgICAgICAgcmV0dXJuICJGNCI7Cisg
ICAgY2FzZSBLRVlDT0RFX0Y1OgorICAgICAgICByZXR1cm4gIkY1IjsKKyAgICBjYXNlIEtFWUNP
REVfRjY6CisgICAgICAgIHJldHVybiAiRjYiOworICAgIGNhc2UgS0VZQ09ERV9GNzoKKyAgICAg
ICAgcmV0dXJuICJGNyI7CisgICAgY2FzZSBLRVlDT0RFX0Y4OgorICAgICAgICByZXR1cm4gIkY4
IjsKKyAgICBjYXNlIEtFWUNPREVfRjk6CisgICAgICAgIHJldHVybiAiRjkiOworICAgIGNhc2Ug
S0VZQ09ERV9GMTA6CisgICAgICAgIHJldHVybiAiRjEwIjsKKyAgICBjYXNlIEtFWUNPREVfRjEx
OgorICAgICAgICByZXR1cm4gIkYxMSI7CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAgICAgICAg
cmV0dXJuICJGMTIiOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiVSslMDRYIiwgV1RGOjp0b0FTQ0lJVXBwZXIoY2hhcmFjdGVyKSk7CisgICAgfQorfQorCitz
dGF0aWMgaW50IHdpbmRvd3NLZXlDb2RlRm9yQmxhY2tCZXJyeUNoYXJhY3Rlcih1bnNpZ25lZCBz
aG9ydCBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAgICBjYXNlIEtF
WUNPREVfUkVUVVJOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9FTlRFUjoKKyAgICAgICAgcmV0dXJu
IFZLX1JFVFVSTjsgLy8gKDBEKSBSZXR1cm4ga2V5CisgICAgY2FzZSBLRVlDT0RFX0JBQ0tTUEFD
RToKKyAgICAgICAgcmV0dXJuIFZLX0JBQ0s7IC8vICgwOCkgQkFDS1NQQUNFIGtleQorICAgIGNh
c2UgS0VZQ09ERV9ERUxFVEU6CisgICAgICAgIHJldHVybiBWS19ERUxFVEU7IC8vICgyRSkgREVM
IGtleQorICAgIGNhc2UgS0VZQ09ERV9FU0NBUEU6CisgICAgICAgIHJldHVybiBWS19FU0NBUEU7
CisgICAgY2FzZSBLRVlDT0RFX1NQQUNFOgorICAgICAgICByZXR1cm4gVktfU1BBQ0U7CisgICAg
Y2FzZSAnMCc6CisgICAgY2FzZSAnKSc6CisgICAgICAgIHJldHVybiBWS18wOworICAgIGNhc2Ug
JzEnOgorICAgIGNhc2UgJyEnOgorICAgICAgICByZXR1cm4gVktfMTsKKyAgICBjYXNlICcyJzoK
KyAgICBjYXNlICdAJzoKKyAgICAgICAgcmV0dXJuIFZLXzI7CisgICAgY2FzZSAnMyc6CisgICAg
Y2FzZSAnIyc6CisgICAgICAgIHJldHVybiBWS18zOworICAgIGNhc2UgJzQnOgorICAgIGNhc2Ug
JyQnOgorICAgICAgICByZXR1cm4gVktfNDsKKyAgICBjYXNlICc1JzoKKyAgICBjYXNlICclJzoK
KyAgICAgICAgcmV0dXJuIFZLXzU7CisgICAgY2FzZSAnNic6CisgICAgY2FzZSAnXic6CisgICAg
ICAgIHJldHVybiBWS182OworICAgIGNhc2UgJzcnOgorICAgIGNhc2UgJyYnOgorICAgICAgICBy
ZXR1cm4gVktfNzsKKyAgICBjYXNlICc4JzoKKyAgICBjYXNlICcqJzoKKyAgICAgICAgcmV0dXJu
IFZLXzg7CisgICAgY2FzZSAnOSc6CisgICAgY2FzZSAnKCc6CisgICAgICAgIHJldHVybiBWS185
OworICAgIGNhc2UgJ2EnOgorICAgIGNhc2UgJ0EnOgorICAgICAgICByZXR1cm4gVktfQTsKKyAg
ICBjYXNlICdiJzoKKyAgICBjYXNlICdCJzoKKyAgICAgICAgcmV0dXJuIFZLX0I7CisgICAgY2Fz
ZSAnYyc6CisgICAgY2FzZSAnQyc6CisgICAgICAgIHJldHVybiBWS19DOworICAgIGNhc2UgJ2Qn
OgorICAgIGNhc2UgJ0QnOgorICAgICAgICByZXR1cm4gVktfRDsKKyAgICBjYXNlICdlJzoKKyAg
ICBjYXNlICdFJzoKKyAgICAgICAgcmV0dXJuIFZLX0U7CisgICAgY2FzZSAnZic6CisgICAgY2Fz
ZSAnRic6CisgICAgICAgIHJldHVybiBWS19GOworICAgIGNhc2UgJ2cnOgorICAgIGNhc2UgJ0cn
OgorICAgICAgICByZXR1cm4gVktfRzsKKyAgICBjYXNlICdoJzoKKyAgICBjYXNlICdIJzoKKyAg
ICAgICAgcmV0dXJuIFZLX0g7CisgICAgY2FzZSAnaSc6CisgICAgY2FzZSAnSSc6CisgICAgICAg
IHJldHVybiBWS19JOworICAgIGNhc2UgJ2onOgorICAgIGNhc2UgJ0onOgorICAgICAgICByZXR1
cm4gVktfSjsKKyAgICBjYXNlICdrJzoKKyAgICBjYXNlICdLJzoKKyAgICAgICAgcmV0dXJuIFZL
X0s7CisgICAgY2FzZSAnbCc6CisgICAgY2FzZSAnTCc6CisgICAgICAgIHJldHVybiBWS19MOwor
ICAgIGNhc2UgJ20nOgorICAgIGNhc2UgJ00nOgorICAgICAgICByZXR1cm4gVktfTTsKKyAgICBj
YXNlICduJzoKKyAgICBjYXNlICdOJzoKKyAgICAgICAgcmV0dXJuIFZLX047CisgICAgY2FzZSAn
byc6CisgICAgY2FzZSAnTyc6CisgICAgICAgIHJldHVybiBWS19POworICAgIGNhc2UgJ3AnOgor
ICAgIGNhc2UgJ1AnOgorICAgICAgICByZXR1cm4gVktfUDsKKyAgICBjYXNlICdxJzoKKyAgICBj
YXNlICdRJzoKKyAgICAgICAgcmV0dXJuIFZLX1E7CisgICAgY2FzZSAncic6CisgICAgY2FzZSAn
Uic6CisgICAgICAgIHJldHVybiBWS19SOworICAgIGNhc2UgJ3MnOgorICAgIGNhc2UgJ1MnOgor
ICAgICAgICByZXR1cm4gVktfUzsKKyAgICBjYXNlICd0JzoKKyAgICBjYXNlICdUJzoKKyAgICAg
ICAgcmV0dXJuIFZLX1Q7CisgICAgY2FzZSAndSc6CisgICAgY2FzZSAnVSc6CisgICAgICAgIHJl
dHVybiBWS19VOworICAgIGNhc2UgJ3YnOgorICAgIGNhc2UgJ1YnOgorICAgICAgICByZXR1cm4g
VktfVjsKKyAgICBjYXNlICd3JzoKKyAgICBjYXNlICdXJzoKKyAgICAgICAgcmV0dXJuIFZLX1c7
CisgICAgY2FzZSAneCc6CisgICAgY2FzZSAnWCc6CisgICAgICAgIHJldHVybiBWS19YOworICAg
IGNhc2UgJ3knOgorICAgIGNhc2UgJ1knOgorICAgICAgICByZXR1cm4gVktfWTsKKyAgICBjYXNl
ICd6JzoKKyAgICBjYXNlICdaJzoKKyAgICAgICAgcmV0dXJuIFZLX1o7CisgICAgY2FzZSAnKyc6
CisgICAgY2FzZSAnPSc6CisgICAgICAgIHJldHVybiBWS19PRU1fUExVUzsKKyAgICBjYXNlICct
JzoKKyAgICBjYXNlICdfJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV9NSU5VUzsKKyAgICBjYXNl
ICc8JzoKKyAgICBjYXNlICcsJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV9DT01NQTsKKyAgICBj
YXNlICc+JzoKKyAgICBjYXNlICcuJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV9QRVJJT0Q7Cisg
ICAgY2FzZSAnOic6CisgICAgY2FzZSAnOyc6CisgICAgICAgIHJldHVybiBWS19PRU1fMTsKKyAg
ICBjYXNlICcvJzoKKyAgICBjYXNlICc/JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV8yOworICAg
IGNhc2UgJ34nOgorICAgIGNhc2UgJ2AnOgorICAgICAgICByZXR1cm4gVktfT0VNXzM7CisgICAg
Y2FzZSAneyc6CisgICAgY2FzZSAnWyc6CisgICAgICAgIHJldHVybiBWS19PRU1fNDsKKyAgICBj
YXNlICd8JzoKKyAgICBjYXNlICdcXCc6CisgICAgICAgIHJldHVybiBWS19PRU1fNTsKKyAgICBj
YXNlICd9JzoKKyAgICBjYXNlICddJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV82OworICAgIGNh
c2UgJyInOgorICAgIGNhc2UgJ1wnJzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV83OworICAgIGNh
c2UgS0VZQ09ERV9QQVVTRToKKyAgICAgICAgcmV0dXJuIFZLX1BBVVNFOworICAgIGNhc2UgS0VZ
Q09ERV9QUklOVDoKKyAgICAgICAgcmV0dXJuIFZLX1BSSU5UOworICAgIGNhc2UgS0VZQ09ERV9T
Q1JPTExfTE9DSzoKKyAgICAgICAgcmV0dXJuIFZLX1NDUk9MTDsKKyAgICBjYXNlIEtFWUNPREVf
VEFCOgorICAgIGNhc2UgS0VZQ09ERV9CQUNLX1RBQjoKKyAgICAgICAgcmV0dXJuIFZLX1RBQjsK
KyAgICBjYXNlIEtFWUNPREVfTEVGVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfTEVGVDoKKyAgICAg
ICAgcmV0dXJuIFZLX0xFRlQ7CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUOgorICAgIGNhc2UgS0VZ
Q09ERV9LUF9SSUdIVDoKKyAgICAgICAgcmV0dXJuIFZLX1JJR0hUOworICAgIGNhc2UgS0VZQ09E
RV9VUDoKKyAgICBjYXNlIEtFWUNPREVfS1BfVVA6CisgICAgICAgIHJldHVybiBWS19VUDsKKyAg
ICBjYXNlIEtFWUNPREVfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1BfRE9XTjoKKyAgICAgICAg
cmV0dXJuIFZLX0RPV047CisgICAgY2FzZSBLRVlDT0RFX0tQX0RFTEVURToKKyAgICAgICAgcmV0
dXJuIFZLX0RFTEVURTsKKyAgICBjYXNlIEtFWUNPREVfTUVOVToKKyAgICBjYXNlIEtFWUNPREVf
TEVGVF9BTFQ6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX0FMVDoKKyAgICAgICAgcmV0dXJuIFZL
X01FTlU7CisgICAgY2FzZSBLRVlDT0RFX0hPTUU6CisgICAgY2FzZSBLRVlDT0RFX0tQX0hPTUU6
CisgICAgICAgIHJldHVybiBWS19IT01FOworICAgIGNhc2UgS0VZQ09ERV9JTlNFUlQ6CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0lOU0VSVDoKKyAgICAgICAgcmV0dXJuIFZLX0lOU0VSVDsKKyAgICBj
YXNlIEtFWUNPREVfUEdfVVA6CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX1VQOgorICAgICAgICBy
ZXR1cm4gVktfTkVYVDsKKyAgICBjYXNlIEtFWUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNP
REVfS1BfUEdfRE9XTjoKKyAgICAgICAgcmV0dXJuIFZLX1BSSU9SOworICAgIGNhc2UgS0VZQ09E
RV9FTkQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0VORDoKKyAgICAgICAgcmV0dXJuIFZLX0VORDsK
KyAgICBjYXNlIEtFWUNPREVfQ0FQU19MT0NLOgorICAgICAgICByZXR1cm4gVktfQ0FQSVRBTDsK
KyAgICBjYXNlIEtFWUNPREVfTEVGVF9TSElGVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfU0hJ
RlQ6CisgICAgICAgIHJldHVybiBWS19TSElGVDsKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9DVFJM
OgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9DVFJMOgorICAgICAgICByZXR1cm4gVktfQ09OVFJP
TDsKKyAgICBjYXNlIEtFWUNPREVfTlVNX0xPQ0s6CisgICAgICAgIHJldHVybiBWS19OVU1MT0NL
OworICAgIGNhc2UgS0VZQ09ERV9LUF9QTFVTOgorICAgICAgICByZXR1cm4gVktfQUREOworICAg
IGNhc2UgS0VZQ09ERV9LUF9NSU5VUzoKKyAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOworICAg
IGNhc2UgS0VZQ09ERV9LUF9NVUxUSVBMWToKKyAgICAgICAgcmV0dXJuIFZLX01VTFRJUExZOwor
ICAgIGNhc2UgS0VZQ09ERV9LUF9ESVZJREU6CisgICAgICAgIHJldHVybiBWS19ESVZJREU7Cisg
ICAgY2FzZSBLRVlDT0RFX0tQX0ZJVkU6CisgICAgICAgIHJldHVybiBWS19OVU1QQUQ1OworICAg
IGNhc2UgS0VZQ09ERV9GMToKKyAgICAgICAgcmV0dXJuIFZLX0YxOworICAgIGNhc2UgS0VZQ09E
RV9GMjoKKyAgICAgICAgcmV0dXJuIFZLX0YyOworICAgIGNhc2UgS0VZQ09ERV9GMzoKKyAgICAg
ICAgcmV0dXJuIFZLX0YzOworICAgIGNhc2UgS0VZQ09ERV9GNDoKKyAgICAgICAgcmV0dXJuIFZL
X0Y0OworICAgIGNhc2UgS0VZQ09ERV9GNToKKyAgICAgICAgcmV0dXJuIFZLX0Y1OworICAgIGNh
c2UgS0VZQ09ERV9GNjoKKyAgICAgICAgcmV0dXJuIFZLX0Y2OworICAgIGNhc2UgS0VZQ09ERV9G
NzoKKyAgICAgICAgcmV0dXJuIFZLX0Y3OworICAgIGNhc2UgS0VZQ09ERV9GODoKKyAgICAgICAg
cmV0dXJuIFZLX0Y4OworICAgIGNhc2UgS0VZQ09ERV9GOToKKyAgICAgICAgcmV0dXJuIFZLX0Y5
OworICAgIGNhc2UgS0VZQ09ERV9GMTA6CisgICAgICAgIHJldHVybiBWS19GMTA7CisgICAgY2Fz
ZSBLRVlDT0RFX0YxMToKKyAgICAgICAgcmV0dXJuIFZLX0YxMTsKKyAgICBjYXNlIEtFWUNPREVf
RjEyOgorICAgICAgICByZXR1cm4gVktfRjEyOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biAwOworICAgIH0KK30KKwordW5zaWduZWQgc2hvcnQgYWRqdXN0Q2hhcmFjdGVyRnJvbU9TKHVu
c2lnbmVkIHNob3J0IGNoYXJhY3RlcikKK3sKKyAgICAvLyBVc2Ugd2luZG93cyBrZXkgY2hhcmFj
dGVyIGFzIEFTQ0lJIHZhbHVlIHdoZW4gcG9zc2libGUgdG8gZW5oYW5jZSByZWFkYWJpbGl0eS4K
KyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2UgS0VZQ09ERV9CQUNLU1BBQ0U6Cisg
ICAgICAgIHJldHVybiBWS19CQUNLOworICAgIGNhc2UgS0VZQ09ERV9LUF9ERUxFVEU6CisgICAg
Y2FzZSBLRVlDT0RFX0RFTEVURToKKyAgICAgICAgcmV0dXJuIDB4N2Y7CisgICAgY2FzZSBLRVlD
T0RFX0VTQ0FQRToKKyAgICAgICAgcmV0dXJuIFZLX0VTQ0FQRTsKKyAgICBjYXNlIEtFWUNPREVf
UkVUVVJOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9FTlRFUjoKKyAgICAgICAgcmV0dXJuIFZLX1JF
VFVSTjsKKyAgICBjYXNlIEtFWUNPREVfS1BfUExVUzoKKyAgICAgICAgcmV0dXJuIFZLX0FERDsK
KyAgICBjYXNlIEtFWUNPREVfS1BfTUlOVVM6CisgICAgICAgIHJldHVybiBWS19TVUJUUkFDVDsK
KyAgICBjYXNlIEtFWUNPREVfS1BfTVVMVElQTFk6CisgICAgICAgIHJldHVybiBWS19NVUxUSVBM
WTsKKyAgICBjYXNlIEtFWUNPREVfS1BfRElWSURFOgorICAgICAgICByZXR1cm4gVktfRElWSURF
OworICAgIGNhc2UgS0VZQ09ERV9LUF9GSVZFOgorICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAg
IGNhc2UgS0VZQ09ERV9LUF9IT01FOgorICAgIGNhc2UgS0VZQ09ERV9FTkQ6CisgICAgY2FzZSBL
RVlDT0RFX0tQX0VORDoKKyAgICBjYXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZQ09E
RV9LUF9JTlNFUlQ6CisgICAgY2FzZSBLRVlDT0RFX1BHX1VQOgorICAgIGNhc2UgS0VZQ09ERV9L
UF9QR19VUDoKKyAgICBjYXNlIEtFWUNPREVfUEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
UEdfRE9XTjoKKyAgICBjYXNlIEtFWUNPREVfTUVOVToKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9B
TFQ6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX0FMVDoKKyAgICBjYXNlIEtFWUNPREVfQ0FQU19M
T0NLOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUX1NISUZUOgorICAgIGNhc2UgS0VZQ09ERV9SSUdI
VF9TSElGVDoKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9DVFJMOgorICAgIGNhc2UgS0VZQ09ERV9S
SUdIVF9DVFJMOgorICAgIGNhc2UgS0VZQ09ERV9OVU1fTE9DSzoKKyAgICBjYXNlIEtFWUNPREVf
UFJJTlQ6CisgICAgY2FzZSBLRVlDT0RFX1NDUk9MTF9MT0NLOgorICAgIGNhc2UgS0VZQ09ERV9Q
QVVTRToKKyAgICBjYXNlIEtFWUNPREVfRjE6CisgICAgY2FzZSBLRVlDT0RFX0YyOgorICAgIGNh
c2UgS0VZQ09ERV9GMzoKKyAgICBjYXNlIEtFWUNPREVfRjQ6CisgICAgY2FzZSBLRVlDT0RFX0Y1
OgorICAgIGNhc2UgS0VZQ09ERV9GNjoKKyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAgY2FzZSBL
RVlDT0RFX0Y4OgorICAgIGNhc2UgS0VZQ09ERV9GOToKKyAgICBjYXNlIEtFWUNPREVfRjEwOgor
ICAgIGNhc2UgS0VZQ09ERV9GMTE6CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAgICBjYXNlIEtF
WUNPREVfTEVGVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFQ6CisgICAgY2FzZSBLRVlDT0RFX1VQ
OgorICAgIGNhc2UgS0VZQ09ERV9ET1dOOgorICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0
OgorICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIGNoYXJhY3RlcjsKK30KKworc3Rh
dGljIGlubGluZSBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlR5cGUgdG9XZWJDb3Jl
UGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5
Ym9hcmRFdmVudDo6VHlwZSB0eXBlKQoreworICAgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2Ug
QmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleURvd246CisgICAgICAgIHJl
dHVybiBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleURvd247CisgICAgY2FzZSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5VXA6CisgICAgICAgIHJldHVy
biBXZWJDb3JlOjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OktleVVwOworICAgIGNhc2UgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleUNoYXI6CisgICAgZGVmYXVsdDoKKyAg
ICAgICAgcmV0dXJuIFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Q2hhcjsKKyAgICB9
Cit9CisKK1BsYXRmb3JtS2V5Ym9hcmRFdmVudDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50IGV2ZW50KQorICAgIDogbV9hdXRvUmVwZWF0
KGZhbHNlKQorICAgICwgbV9pc0tleXBhZChmYWxzZSkKKyAgICAsIG1fc2hpZnRLZXkoZXZlbnQu
c2hpZnRBY3RpdmUoKSkKKyAgICAsIG1fY3RybEtleShldmVudC5jdHJsQWN0aXZlKCkpCisgICAg
LCBtX2FsdEtleShldmVudC5hbHRBY3RpdmUoKSkKKyAgICAsIG1fbWV0YUtleShmYWxzZSkKK3sK
KyAgICBtX3R5cGUgPSB0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50LnR5
cGUoKSk7CisgICAgbV91bm1vZGlmaWVkQ2hhcmFjdGVyID0gZXZlbnQuY2hhcmFjdGVyKCk7Cisg
ICAgbV9rZXlJZGVudGlmaWVyID0ga2V5SWRlbnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIo
ZXZlbnQuY2hhcmFjdGVyKCkpOworICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gd2luZG93
c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3RlcigpKTsKKyAgICB1
bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIgPSBhZGp1c3RDaGFyYWN0ZXJGcm9tT1MoZXZlbnQuY2hh
cmFjdGVyKCkpOworICAgIG1fdGV4dCA9IFN0cmluZygmY2hhcmFjdGVyLCAxKTsKKyAgICBtX3Vu
bW9kaWZpZWRUZXh0ID0gbV90ZXh0OworCisgICAgaWYgKGV2ZW50LmNoYXJhY3RlcigpID09IEtF
WUNPREVfQkFDS19UQUIpCisgICAgICAgIG1fc2hpZnRLZXkgPSB0cnVlOyAvLyBCYWNrVGFiIHNo
b3VsZCBiZSB0cmVhdGVkIGFzIFNoaWZ0ICsgVGFiLgorCisgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiS2V5Ym9hcmQgZXZl
bnQgcmVjZWl2ZWQgdGV4dD0lbGMsIGtleUlkZW50aWZpZXI9JXMsIHdpbmRvd3NWaXJ0dWFsS2V5
Q29kZT0lZCIsIGV2ZW50LmNoYXJhY3RlcigpLCBtX2tleUlkZW50aWZpZXIubGF0aW4xKCkuZGF0
YSgpLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSk7Cit9CisKK2Jvb2wgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpkaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUsIGJv
b2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKK3sKKyAgICAvLyBDYW4gb25seSBjaGFuZ2Ug
dHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFyLCBhcyB3ZSBsYWNrIGluZm9y
bWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KKyAgICBBU1NFUlQobV90eXBlID09IEtleURv
d24pOworICAgIG1fdHlwZSA9IHR5cGU7CisKKyAgICBpZiAoYmFja3dhcmRDb21wYXRpYmlsaXR5
TW9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHR5cGUgPT0gUmF3S2V5RG93bikgewor
ICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgbV91bm1vZGlmaWVkVGV4dCA9IFN0
cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fa2V5SWRlbnRpZmllciA9IFN0cmluZygp
OworICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IDA7CisgICAgfQorfQorCit2b2lk
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlmaWVyU3RhdGUoYm9vbCYgLypz
aGlmdEtleSovLCBib29sJiAvKmN0cmxLZXkqLywgYm9vbCYgLyphbHRLZXkqLywgYm9vbCYgLypt
ZXRhS2V5Ki8pCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118348</attachid>
            <date>2011-12-08 02:01:17 -0800</date>
            <delta_ts>2011-12-08 19:16:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73534-20111208180109.patch</filename>
            <type>text/plain</type>
            <size>19557</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uN2Q2Y2QyMDg4YTFjNGZhY2JkZjY3Njk1OTQ5MmYx
NDkxYWIxOWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTEyLTA4ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gQmxh
Y2tCZXJyeSBwb3J0aW5nIG9mIE1JTUVUeXBlUmVnaXN0cnkvS2V5Ym9hcmRFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlciBtYWluIGNvbnRy
aWJ1dG9yczoKKyAgICAgICAgTWlrZSBGZW50b24gPG1pZmVudG9uQHJpbS5jb20+CisgICAgICAg
IEpvZSBNYXNvbiA8am1hc29uQHJpbS5jb20+CisgICAgICAgIE1heCBGZWlsIDxtZmVpbEBxbngu
Y29tPgorICAgICAgICBMdWthcyBTeWRvcm93c2tpIDxsc3lkb3Jvd3NraUByaW0uY29tPgorICAg
ICAgICBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFs
IHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1
Z2luTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXli
b2FyZEV2ZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRl
bnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93
c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVz
dENoYXJhY3RlckZyb21PUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYkNvcmVQbGF0Zm9ybUtl
eWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZSk6
CisKIDIwMTEtMTItMDcgIE1hcnkgV3UgIDxtYXJ5Lnd1QHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBVcHN0cmVhbSA0IGZpbGVzIGludG8gV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBl
UmVnaXN0cnlCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM2NWM2NzViNDVl
YTgyMGFhM2Y4YmE2OTdjNzE0ZjE5OTBhNzIzYWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNw
cApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RydWN0IEV4dGVuc2lvbk1hcCB7CisgICAgY29uc3QgY2hhciogZXh0
ZW5zaW9uOworICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlOworfTsKKworc3RhdGljIGNvbnN0IEV4
dGVuc2lvbk1hcCBleHRlbnNpb25NYXBbXSA9IHsKKyAgICB7ICJibXAiLCAiaW1hZ2UvYm1wIiB9
LAorICAgIHsgImNzcyIsICJ0ZXh0L2NzcyIgfSwKKyAgICB7ICJnaWYiLCAiaW1hZ2UvZ2lmIiB9
LAorICAgIHsgImh0bWwiLCAidGV4dC9odG1sIiB9LAorICAgIHsgImh0bSIsICJ0ZXh0L2h0bWwi
IH0sCisgICAgeyAiaWNvIiwgImltYWdlL3gtaWNvbiIgfSwKKyAgICB7ICJqcGciLCAiaW1hZ2Uv
anBlZyIgfSwKKyAgICB7ICJqcGVnIiwgImltYWdlL2pwZWciIH0sCisgICAgeyAianMiLCAiYXBw
bGljYXRpb24veC1qYXZhc2NyaXB0IiB9LAorICAgIHsgIm1uZyIsICJ2aWRlby94LW1uZyIgfSwK
KyAgICB7ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCisgICAgeyAicGdtIiwg
ImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCIgfSwKKyAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIiB9LAorICAgIHsgInBuZyIsICJpbWFnZS9wbmciIH0sCisgICAgeyAicHBtIiwgImltYWdl
L3gtcG9ydGFibGUtcGl4bWFwIiB9LAorICAgIHsgInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1s
IiB9LAorICAgIHsgInN2ZyIsICJpbWFnZS9zdmcreG1sIiB9LAorICAgIHsgInN2Z3oiLCAiaW1h
Z2Uvc3ZnK3htbCIgfSwKKyAgICB7ICJ0eHQiLCAidGV4dC9wbGFpbiIgfSwKKyAgICB7ICJ0ZXh0
IiwgInRleHQvcGxhaW4iIH0sCisgICAgeyAidGlmZiIsICJpbWFnZS90aWZmIiB9LAorICAgIHsg
InRpZiIsICJpbWFnZS90aWZmIiB9LAorICAgIHsgInhibSIsICJpbWFnZS94LXhiaXRtYXAiIH0s
CisgICAgeyAieG1sIiwgInRleHQveG1sIiB9LAorICAgIHsgInhwbSIsICJpbWFnZS94LXhwbSIg
fSwKKyAgICB7ICJ4c2wiLCAidGV4dC94c2wiIH0sCisgICAgeyAieGh0bWwiLCAiYXBwbGljYXRp
b24veGh0bWwreG1sIiB9LAorICAgIHsgIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIiB9LAorICAg
IHsgIndtbGMiLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiB9LAorICAgIHsgIm00YSIsICJh
dWRpby9tNGEiIH0sCisgICAgeyAibWlkaSIsICJhdWRpby9taWRpIiB9LAorICAgIHsgIm1pZCIs
ICJhdWRpby9taWQiIH0sCisgICAgeyAibXAzIiwgImF1ZGlvL21wMyIgfSwKKyAgICB7ICJ3bWEi
LCAiYXVkaW8veC1tcy13bWEiIH0sCisgICAgeyAiM2dwIiwgInZpZGVvLzNncHAiIH0sCisgICAg
eyAiM2dwcCIsICJ2aWRlby8zZ3BwIiB9LAorICAgIHsgIjNncHAyIiwgInZpZGVvLzNncHAyIiB9
LAorICAgIHsgIjNnMiIsICJ2aWRlby8zZ3BwMiIgfSwKKyAgICB7ICIzZ3AyIiwgInZpZGVvLzNn
cHAyIiB9LAorICAgIHsgIm1wNCIsICJ2aWRlby9tcDQiIH0sCisgICAgeyAibTR2IiwgInZpZGVv
L200diIgfSwKKyAgICB7ICJhdmkiLCAidmlkZW8veC1tc3ZpZGVvIiB9LAorICAgIHsgIm1vdiIs
ICJ2aWRlby9xdWlja3RpbWUiIH0sCisgICAgeyAiZGl2eCIsICJ2aWRlby9kaXZ4IiB9LAorICAg
IHsgIm1wZWciLCAidmlkZW8vbXBlZyIgfSwKKyAgICB7ICJzYnYiLCAidmlkZW8vc2J2IiB9LAor
ICAgIHsgImFzZiIsICJ2aWRlby94LW1zLWFzZiIgfSwKKyAgICB7ICJ3bSIsICJ2aWRlby94LW1z
LXdtIiB9LAorICAgIHsgIndtdiIsICJ2aWRlby94LW1zLXdtdiIgfSwKKyAgICB7ICJ3bXgiLCAi
dmlkZW8veC1tcy13bXgiIH0sCisgICAgeyAid2F2IiwgImF1ZGlvL3gtd2F2IiB9LAorICAgIHsg
ImFtciIsICJhdWRpby9hbXIiIH0sCisgICAgeyAiYWFjIiwgImF1ZGlvL2FhYyIgfSwKKyAgICB7
ICJ4LWdzbSIsICJhdWRpby94LWdzbSIgfSwKKyAgICB7ICJzd2YiLCAiYXBwbGljYXRpb24veC1z
aG9ja3dhdmUtZmxhc2gifSwKKyAgICB7ICJtM3U4IiwgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5t
cGVndXJsIn0sCisgICAgeyAibTN1cmwiLCAiYXVkaW8vbXBlZ3VybCJ9LAorICAgIHsgIm0zdSIs
ICJhdWRpby9tcGVndXJsIn0sCisgICAgLy8gRklYTUU6IHdpbmNlIGFsc28gbWFwcyB0dGYgYW5k
IG90ZiB0byB0ZXh0L3BsYWluLiBTaG91bGQgd2UgZG8gdGhhdCB0b28/CisgICAgeyAwLCAwIH0K
K307CisKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbihj
b25zdCBTdHJpbmcmIGV4dGVuc2lvbikKK3sKKyAgICBTdHJpbmcgbG93ZXJFeHRlbnNpb24gPSBl
eHRlbnNpb24ubG93ZXIoKTsKKworICAgIGNvbnN0IEV4dGVuc2lvbk1hcCogZW50cnkgPSBleHRl
bnNpb25NYXA7CisgICAgd2hpbGUgKGVudHJ5LT5leHRlbnNpb24pIHsKKyAgICAgICAgaWYgKGxv
d2VyRXh0ZW5zaW9uID09IGVudHJ5LT5leHRlbnNpb24pCisgICAgICAgICAgICByZXR1cm4gZW50
cnktPm1pbWVUeXBlOworICAgICAgICArK2VudHJ5OworICAgIH0KKworICAgIHJldHVybiBTdHJp
bmcoKTsKK30KKworU3RyaW5nIE1JTUVUeXBlUmVnaXN0cnk6OmdldFByZWZlcnJlZEV4dGVuc2lv
bkZvck1JTUVUeXBlKGNvbnN0IFN0cmluZyYgdHlwZSkKK3sKKyAgICBpZiAodHlwZS5pc0VtcHR5
KCkpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKworICAgIFN0cmluZyBsb3dlclR5cGUgPSB0
eXBlLmxvd2VyKCk7CisKKyAgICBjb25zdCBFeHRlbnNpb25NYXAqIGVudHJ5ID0gZXh0ZW5zaW9u
TWFwOworICAgIHdoaWxlIChlbnRyeS0+bWltZVR5cGUpIHsKKyAgICAgICAgaWYgKGxvd2VyVHlw
ZSA9PSBlbnRyeS0+bWltZVR5cGUpCisgICAgICAgICAgICByZXR1cm4gZW50cnktPmV4dGVuc2lv
bjsKKyAgICAgICAgKytlbnRyeTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisK
K2Jvb2wgTUlNRVR5cGVSZWdpc3RyeTo6aXNBcHBsaWNhdGlvblBsdWdpbk1JTUVUeXBlKGNvbnN0
IFN0cmluZyYpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGxh
dGZvcm1LZXlib2FyZEV2ZW50QmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmVjYjU1N2E4NTJhNWM2OTBmNGNlYWU2YTA2ZDM0Y2I0Yjc4Y2JiMmMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BsYXRmb3JtS2V5Ym9h
cmRFdmVudEJsYWNrQmVycnkuY3BwCkBAIC0wLDAgKzEsNDg3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwLCAyMDExIFJlc2VhcmNoIEluIE1vdGlvbiBMaW1pdGVkLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVk
IGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg
YmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl
IGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdh
cmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKKworI2luY2x1ZGUgIk5vdEltcGxl
bWVudGVkLmgiCisjaW5jbHVkZSAiV2luZG93c0tleWJvYXJkQ29kZXMuaCIKKworI2luY2x1ZGUg
PEJsYWNrQmVycnlQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaD4KKyNpbmNsdWRlIDxCbGFja0JlcnJ5
UGxhdGZvcm1Mb2cuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RhdGljIFN0cmluZyBrZXlJZGVudGlmaWVyRm9yQmxhY2tCZXJyeUNo
YXJhY3Rlcih1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFyYWN0
ZXIpIHsKKyAgICBjYXNlIEtFWUNPREVfUkVUVVJOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9FTlRF
UjoKKyAgICAgICAgcmV0dXJuICJFbnRlciI7CisgICAgY2FzZSBLRVlDT0RFX0JBQ0tTUEFDRToK
KyAgICAgICAgcmV0dXJuICJVKzAwMDgiOworICAgIGNhc2UgS0VZQ09ERV9ERUxFVEU6CisgICAg
ICAgIHJldHVybiAiVSswMDdGIjsKKyAgICBjYXNlIEtFWUNPREVfRVNDQVBFOgorICAgICAgICBy
ZXR1cm4gIkVzY2FwZSI7CisgICAgY2FzZSBLRVlDT0RFX1BBVVNFOgorICAgICAgICByZXR1cm4g
IlBhdXNlIjsKKyAgICBjYXNlIEtFWUNPREVfUFJJTlQ6CisgICAgICAgIHJldHVybiAiUHJpbnRT
Y3JlZW4iOworICAgIGNhc2UgS0VZQ09ERV9UQUI6CisgICAgY2FzZSBLRVlDT0RFX0JBQ0tfVEFC
OgorICAgICAgICByZXR1cm4gIlUrMDAwOSI7CisgICAgY2FzZSBLRVlDT0RFX0xFRlQ6CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0xFRlQ6CisgICAgICAgIHJldHVybiAiTGVmdCI7CisgICAgY2FzZSBL
RVlDT0RFX1JJR0hUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9SSUdIVDoKKyAgICAgICAgcmV0dXJu
ICJSaWdodCI7CisgICAgY2FzZSBLRVlDT0RFX1VQOgorICAgIGNhc2UgS0VZQ09ERV9LUF9VUDoK
KyAgICAgICAgcmV0dXJuICJVcCI7CisgICAgY2FzZSBLRVlDT0RFX0RPV046CisgICAgY2FzZSBL
RVlDT0RFX0tQX0RPV046CisgICAgICAgIHJldHVybiAiRG93biI7CisgICAgY2FzZSBLRVlDT0RF
X0tQX0RFTEVURToKKyAgICAgICAgcmV0dXJuICJVKzAwN0YiOworICAgIGNhc2UgS0VZQ09ERV9N
RU5VOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUX0FMVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRf
QUxUOgorICAgICAgICByZXR1cm4gIkFsdCI7CisgICAgY2FzZSBLRVlDT0RFX0hPTUU6CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0hPTUU6CisgICAgICAgIHJldHVybiAiSG9tZSI7CisgICAgY2FzZSBL
RVlDT0RFX0lOU0VSVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfSU5TRVJUOgorICAgICAgICByZXR1
cm4gIkluc2VydCI7CisgICAgY2FzZSBLRVlDT0RFX1BHX1VQOgorICAgIGNhc2UgS0VZQ09ERV9L
UF9QR19VUDoKKyAgICAgICAgcmV0dXJuICJQYWdlRG93biI7CisgICAgY2FzZSBLRVlDT0RFX1BH
X0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX0RPV046CisgICAgICAgIHJldHVybiAiUGFn
ZVVwIjsKKyAgICBjYXNlIEtFWUNPREVfRU5EOgorICAgIGNhc2UgS0VZQ09ERV9LUF9FTkQ6Cisg
ICAgICAgIHJldHVybiAiRW5kIjsKKyAgICBjYXNlIEtFWUNPREVfRjE6CisgICAgICAgIHJldHVy
biAiRjEiOworICAgIGNhc2UgS0VZQ09ERV9GMjoKKyAgICAgICAgcmV0dXJuICJGMiI7CisgICAg
Y2FzZSBLRVlDT0RFX0YzOgorICAgICAgICByZXR1cm4gIkYzIjsKKyAgICBjYXNlIEtFWUNPREVf
RjQ6CisgICAgICAgIHJldHVybiAiRjQiOworICAgIGNhc2UgS0VZQ09ERV9GNToKKyAgICAgICAg
cmV0dXJuICJGNSI7CisgICAgY2FzZSBLRVlDT0RFX0Y2OgorICAgICAgICByZXR1cm4gIkY2IjsK
KyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAgICAgIHJldHVybiAiRjciOworICAgIGNhc2UgS0VZ
Q09ERV9GODoKKyAgICAgICAgcmV0dXJuICJGOCI7CisgICAgY2FzZSBLRVlDT0RFX0Y5OgorICAg
ICAgICByZXR1cm4gIkY5IjsKKyAgICBjYXNlIEtFWUNPREVfRjEwOgorICAgICAgICByZXR1cm4g
IkYxMCI7CisgICAgY2FzZSBLRVlDT0RFX0YxMToKKyAgICAgICAgcmV0dXJuICJGMTEiOworICAg
IGNhc2UgS0VZQ09ERV9GMTI6CisgICAgICAgIHJldHVybiAiRjEyIjsKKyAgICBkZWZhdWx0Ogor
ICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlUrJTA0WCIsIFdURjo6dG9BU0NJSVVwcGVy
KGNoYXJhY3RlcikpOworICAgIH0KK30KKworc3RhdGljIGludCB3aW5kb3dzS2V5Q29kZUZvckJs
YWNrQmVycnlDaGFyYWN0ZXIodW5zaWduZWQgc2hvcnQgY2hhcmFjdGVyKQoreworICAgIHN3aXRj
aCAoY2hhcmFjdGVyKSB7CisgICAgY2FzZSBLRVlDT0RFX1JFVFVSTjoKKyAgICBjYXNlIEtFWUNP
REVfS1BfRU5URVI6CisgICAgICAgIHJldHVybiBWS19SRVRVUk47IC8vICgwRCkgUmV0dXJuIGtl
eQorICAgIGNhc2UgS0VZQ09ERV9CQUNLU1BBQ0U6CisgICAgICAgIHJldHVybiBWS19CQUNLOyAv
LyAoMDgpIEJBQ0tTUEFDRSBrZXkKKyAgICBjYXNlIEtFWUNPREVfREVMRVRFOgorICAgICAgICBy
ZXR1cm4gVktfREVMRVRFOyAvLyAoMkUpIERFTCBrZXkKKyAgICBjYXNlIEtFWUNPREVfRVNDQVBF
OgorICAgICAgICByZXR1cm4gVktfRVNDQVBFOworICAgIGNhc2UgS0VZQ09ERV9TUEFDRToKKyAg
ICAgICAgcmV0dXJuIFZLX1NQQUNFOworICAgIGNhc2UgJzAnOgorICAgIGNhc2UgJyknOgorICAg
ICAgICByZXR1cm4gVktfMDsKKyAgICBjYXNlICcxJzoKKyAgICBjYXNlICchJzoKKyAgICAgICAg
cmV0dXJuIFZLXzE7CisgICAgY2FzZSAnMic6CisgICAgY2FzZSAnQCc6CisgICAgICAgIHJldHVy
biBWS18yOworICAgIGNhc2UgJzMnOgorICAgIGNhc2UgJyMnOgorICAgICAgICByZXR1cm4gVktf
MzsKKyAgICBjYXNlICc0JzoKKyAgICBjYXNlICckJzoKKyAgICAgICAgcmV0dXJuIFZLXzQ7Cisg
ICAgY2FzZSAnNSc6CisgICAgY2FzZSAnJSc6CisgICAgICAgIHJldHVybiBWS181OworICAgIGNh
c2UgJzYnOgorICAgIGNhc2UgJ14nOgorICAgICAgICByZXR1cm4gVktfNjsKKyAgICBjYXNlICc3
JzoKKyAgICBjYXNlICcmJzoKKyAgICAgICAgcmV0dXJuIFZLXzc7CisgICAgY2FzZSAnOCc6Cisg
ICAgY2FzZSAnKic6CisgICAgICAgIHJldHVybiBWS184OworICAgIGNhc2UgJzknOgorICAgIGNh
c2UgJygnOgorICAgICAgICByZXR1cm4gVktfOTsKKyAgICBjYXNlICdhJzoKKyAgICBjYXNlICdB
JzoKKyAgICAgICAgcmV0dXJuIFZLX0E7CisgICAgY2FzZSAnYic6CisgICAgY2FzZSAnQic6Cisg
ICAgICAgIHJldHVybiBWS19COworICAgIGNhc2UgJ2MnOgorICAgIGNhc2UgJ0MnOgorICAgICAg
ICByZXR1cm4gVktfQzsKKyAgICBjYXNlICdkJzoKKyAgICBjYXNlICdEJzoKKyAgICAgICAgcmV0
dXJuIFZLX0Q7CisgICAgY2FzZSAnZSc6CisgICAgY2FzZSAnRSc6CisgICAgICAgIHJldHVybiBW
S19FOworICAgIGNhc2UgJ2YnOgorICAgIGNhc2UgJ0YnOgorICAgICAgICByZXR1cm4gVktfRjsK
KyAgICBjYXNlICdnJzoKKyAgICBjYXNlICdHJzoKKyAgICAgICAgcmV0dXJuIFZLX0c7CisgICAg
Y2FzZSAnaCc6CisgICAgY2FzZSAnSCc6CisgICAgICAgIHJldHVybiBWS19IOworICAgIGNhc2Ug
J2knOgorICAgIGNhc2UgJ0knOgorICAgICAgICByZXR1cm4gVktfSTsKKyAgICBjYXNlICdqJzoK
KyAgICBjYXNlICdKJzoKKyAgICAgICAgcmV0dXJuIFZLX0o7CisgICAgY2FzZSAnayc6CisgICAg
Y2FzZSAnSyc6CisgICAgICAgIHJldHVybiBWS19LOworICAgIGNhc2UgJ2wnOgorICAgIGNhc2Ug
J0wnOgorICAgICAgICByZXR1cm4gVktfTDsKKyAgICBjYXNlICdtJzoKKyAgICBjYXNlICdNJzoK
KyAgICAgICAgcmV0dXJuIFZLX007CisgICAgY2FzZSAnbic6CisgICAgY2FzZSAnTic6CisgICAg
ICAgIHJldHVybiBWS19OOworICAgIGNhc2UgJ28nOgorICAgIGNhc2UgJ08nOgorICAgICAgICBy
ZXR1cm4gVktfTzsKKyAgICBjYXNlICdwJzoKKyAgICBjYXNlICdQJzoKKyAgICAgICAgcmV0dXJu
IFZLX1A7CisgICAgY2FzZSAncSc6CisgICAgY2FzZSAnUSc6CisgICAgICAgIHJldHVybiBWS19R
OworICAgIGNhc2UgJ3InOgorICAgIGNhc2UgJ1InOgorICAgICAgICByZXR1cm4gVktfUjsKKyAg
ICBjYXNlICdzJzoKKyAgICBjYXNlICdTJzoKKyAgICAgICAgcmV0dXJuIFZLX1M7CisgICAgY2Fz
ZSAndCc6CisgICAgY2FzZSAnVCc6CisgICAgICAgIHJldHVybiBWS19UOworICAgIGNhc2UgJ3Un
OgorICAgIGNhc2UgJ1UnOgorICAgICAgICByZXR1cm4gVktfVTsKKyAgICBjYXNlICd2JzoKKyAg
ICBjYXNlICdWJzoKKyAgICAgICAgcmV0dXJuIFZLX1Y7CisgICAgY2FzZSAndyc6CisgICAgY2Fz
ZSAnVyc6CisgICAgICAgIHJldHVybiBWS19XOworICAgIGNhc2UgJ3gnOgorICAgIGNhc2UgJ1gn
OgorICAgICAgICByZXR1cm4gVktfWDsKKyAgICBjYXNlICd5JzoKKyAgICBjYXNlICdZJzoKKyAg
ICAgICAgcmV0dXJuIFZLX1k7CisgICAgY2FzZSAneic6CisgICAgY2FzZSAnWic6CisgICAgICAg
IHJldHVybiBWS19aOworICAgIGNhc2UgJysnOgorICAgIGNhc2UgJz0nOgorICAgICAgICByZXR1
cm4gVktfT0VNX1BMVVM7CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAnXyc6CisgICAgICAgIHJl
dHVybiBWS19PRU1fTUlOVVM7CisgICAgY2FzZSAnPCc6CisgICAgY2FzZSAnLCc6CisgICAgICAg
IHJldHVybiBWS19PRU1fQ09NTUE7CisgICAgY2FzZSAnPic6CisgICAgY2FzZSAnLic6CisgICAg
ICAgIHJldHVybiBWS19PRU1fUEVSSU9EOworICAgIGNhc2UgJzonOgorICAgIGNhc2UgJzsnOgor
ICAgICAgICByZXR1cm4gVktfT0VNXzE7CisgICAgY2FzZSAnLyc6CisgICAgY2FzZSAnPyc6Cisg
ICAgICAgIHJldHVybiBWS19PRU1fMjsKKyAgICBjYXNlICd+JzoKKyAgICBjYXNlICdgJzoKKyAg
ICAgICAgcmV0dXJuIFZLX09FTV8zOworICAgIGNhc2UgJ3snOgorICAgIGNhc2UgJ1snOgorICAg
ICAgICByZXR1cm4gVktfT0VNXzQ7CisgICAgY2FzZSAnfCc6CisgICAgY2FzZSAnXFwnOgorICAg
ICAgICByZXR1cm4gVktfT0VNXzU7CisgICAgY2FzZSAnfSc6CisgICAgY2FzZSAnXSc6CisgICAg
ICAgIHJldHVybiBWS19PRU1fNjsKKyAgICBjYXNlICciJzoKKyAgICBjYXNlICdcJyc6CisgICAg
ICAgIHJldHVybiBWS19PRU1fNzsKKyAgICBjYXNlIEtFWUNPREVfUEFVU0U6CisgICAgICAgIHJl
dHVybiBWS19QQVVTRTsKKyAgICBjYXNlIEtFWUNPREVfUFJJTlQ6CisgICAgICAgIHJldHVybiBW
S19QUklOVDsKKyAgICBjYXNlIEtFWUNPREVfU0NST0xMX0xPQ0s6CisgICAgICAgIHJldHVybiBW
S19TQ1JPTEw7CisgICAgY2FzZSBLRVlDT0RFX1RBQjoKKyAgICBjYXNlIEtFWUNPREVfQkFDS19U
QUI6CisgICAgICAgIHJldHVybiBWS19UQUI7CisgICAgY2FzZSBLRVlDT0RFX0xFRlQ6CisgICAg
Y2FzZSBLRVlDT0RFX0tQX0xFRlQ6CisgICAgICAgIHJldHVybiBWS19MRUZUOworICAgIGNhc2Ug
S0VZQ09ERV9SSUdIVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfUklHSFQ6CisgICAgICAgIHJldHVy
biBWS19SSUdIVDsKKyAgICBjYXNlIEtFWUNPREVfVVA6CisgICAgY2FzZSBLRVlDT0RFX0tQX1VQ
OgorICAgICAgICByZXR1cm4gVktfVVA7CisgICAgY2FzZSBLRVlDT0RFX0RPV046CisgICAgY2Fz
ZSBLRVlDT0RFX0tQX0RPV046CisgICAgICAgIHJldHVybiBWS19ET1dOOworICAgIGNhc2UgS0VZ
Q09ERV9LUF9ERUxFVEU6CisgICAgICAgIHJldHVybiBWS19ERUxFVEU7CisgICAgY2FzZSBLRVlD
T0RFX01FTlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQUxUOgorICAgIGNhc2UgS0VZQ09ERV9S
SUdIVF9BTFQ6CisgICAgICAgIHJldHVybiBWS19NRU5VOworICAgIGNhc2UgS0VZQ09ERV9IT01F
OgorICAgIGNhc2UgS0VZQ09ERV9LUF9IT01FOgorICAgICAgICByZXR1cm4gVktfSE9NRTsKKyAg
ICBjYXNlIEtFWUNPREVfSU5TRVJUOgorICAgIGNhc2UgS0VZQ09ERV9LUF9JTlNFUlQ6CisgICAg
ICAgIHJldHVybiBWS19JTlNFUlQ7CisgICAgY2FzZSBLRVlDT0RFX1BHX1VQOgorICAgIGNhc2Ug
S0VZQ09ERV9LUF9QR19VUDoKKyAgICAgICAgcmV0dXJuIFZLX05FWFQ7CisgICAgY2FzZSBLRVlD
T0RFX1BHX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX0RPV046CisgICAgICAgIHJldHVy
biBWS19QUklPUjsKKyAgICBjYXNlIEtFWUNPREVfRU5EOgorICAgIGNhc2UgS0VZQ09ERV9LUF9F
TkQ6CisgICAgICAgIHJldHVybiBWS19FTkQ7CisgICAgY2FzZSBLRVlDT0RFX0NBUFNfTE9DSzoK
KyAgICAgICAgcmV0dXJuIFZLX0NBUElUQUw7CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfU0hJRlQ6
CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX1NISUZUOgorICAgICAgICByZXR1cm4gVktfU0hJRlQ7
CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQ1RSTDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfQ1RS
TDoKKyAgICAgICAgcmV0dXJuIFZLX0NPTlRST0w7CisgICAgY2FzZSBLRVlDT0RFX05VTV9MT0NL
OgorICAgICAgICByZXR1cm4gVktfTlVNTE9DSzsKKyAgICBjYXNlIEtFWUNPREVfS1BfUExVUzoK
KyAgICAgICAgcmV0dXJuIFZLX0FERDsKKyAgICBjYXNlIEtFWUNPREVfS1BfTUlOVVM6CisgICAg
ICAgIHJldHVybiBWS19TVUJUUkFDVDsKKyAgICBjYXNlIEtFWUNPREVfS1BfTVVMVElQTFk6Cisg
ICAgICAgIHJldHVybiBWS19NVUxUSVBMWTsKKyAgICBjYXNlIEtFWUNPREVfS1BfRElWSURFOgor
ICAgICAgICByZXR1cm4gVktfRElWSURFOworICAgIGNhc2UgS0VZQ09ERV9LUF9GSVZFOgorICAg
ICAgICByZXR1cm4gVktfTlVNUEFENTsKKyAgICBjYXNlIEtFWUNPREVfRjE6CisgICAgICAgIHJl
dHVybiBWS19GMTsKKyAgICBjYXNlIEtFWUNPREVfRjI6CisgICAgICAgIHJldHVybiBWS19GMjsK
KyAgICBjYXNlIEtFWUNPREVfRjM6CisgICAgICAgIHJldHVybiBWS19GMzsKKyAgICBjYXNlIEtF
WUNPREVfRjQ6CisgICAgICAgIHJldHVybiBWS19GNDsKKyAgICBjYXNlIEtFWUNPREVfRjU6Cisg
ICAgICAgIHJldHVybiBWS19GNTsKKyAgICBjYXNlIEtFWUNPREVfRjY6CisgICAgICAgIHJldHVy
biBWS19GNjsKKyAgICBjYXNlIEtFWUNPREVfRjc6CisgICAgICAgIHJldHVybiBWS19GNzsKKyAg
ICBjYXNlIEtFWUNPREVfRjg6CisgICAgICAgIHJldHVybiBWS19GODsKKyAgICBjYXNlIEtFWUNP
REVfRjk6CisgICAgICAgIHJldHVybiBWS19GOTsKKyAgICBjYXNlIEtFWUNPREVfRjEwOgorICAg
ICAgICByZXR1cm4gVktfRjEwOworICAgIGNhc2UgS0VZQ09ERV9GMTE6CisgICAgICAgIHJldHVy
biBWS19GMTE7CisgICAgY2FzZSBLRVlDT0RFX0YxMjoKKyAgICAgICAgcmV0dXJuIFZLX0YxMjsK
KyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIHNo
b3J0IGFkanVzdENoYXJhY3RlckZyb21PUyh1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIpCit7Cisg
ICAgLy8gVXNlIHdpbmRvd3Mga2V5IGNoYXJhY3RlciBhcyBBU0NJSSB2YWx1ZSB3aGVuIHBvc3Np
YmxlIHRvIGVuaGFuY2UgcmVhZGFiaWxpdHkuCisgICAgc3dpdGNoIChjaGFyYWN0ZXIpIHsKKyAg
ICBjYXNlIEtFWUNPREVfQkFDS1NQQUNFOgorICAgICAgICByZXR1cm4gVktfQkFDSzsKKyAgICBj
YXNlIEtFWUNPREVfS1BfREVMRVRFOgorICAgIGNhc2UgS0VZQ09ERV9ERUxFVEU6CisgICAgICAg
IHJldHVybiAweDdmOworICAgIGNhc2UgS0VZQ09ERV9FU0NBUEU6CisgICAgICAgIHJldHVybiBW
S19FU0NBUEU7CisgICAgY2FzZSBLRVlDT0RFX1JFVFVSTjoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
RU5URVI6CisgICAgICAgIHJldHVybiBWS19SRVRVUk47CisgICAgY2FzZSBLRVlDT0RFX0tQX1BM
VVM6CisgICAgICAgIHJldHVybiBWS19BREQ7CisgICAgY2FzZSBLRVlDT0RFX0tQX01JTlVTOgor
ICAgICAgICByZXR1cm4gVktfU1VCVFJBQ1Q7CisgICAgY2FzZSBLRVlDT0RFX0tQX01VTFRJUExZ
OgorICAgICAgICByZXR1cm4gVktfTVVMVElQTFk7CisgICAgY2FzZSBLRVlDT0RFX0tQX0RJVklE
RToKKyAgICAgICAgcmV0dXJuIFZLX0RJVklERTsKKyAgICBjYXNlIEtFWUNPREVfS1BfRklWRToK
KyAgICBjYXNlIEtFWUNPREVfSE9NRToKKyAgICBjYXNlIEtFWUNPREVfS1BfSE9NRToKKyAgICBj
YXNlIEtFWUNPREVfRU5EOgorICAgIGNhc2UgS0VZQ09ERV9LUF9FTkQ6CisgICAgY2FzZSBLRVlD
T0RFX0lOU0VSVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfSU5TRVJUOgorICAgIGNhc2UgS0VZQ09E
RV9QR19VUDoKKyAgICBjYXNlIEtFWUNPREVfS1BfUEdfVVA6CisgICAgY2FzZSBLRVlDT0RFX1BH
X0RPV046CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX0RPV046CisgICAgY2FzZSBLRVlDT0RFX01F
TlU6CisgICAgY2FzZSBLRVlDT0RFX0xFRlRfQUxUOgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9B
TFQ6CisgICAgY2FzZSBLRVlDT0RFX0NBUFNfTE9DSzoKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9T
SElGVDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfU0hJRlQ6CisgICAgY2FzZSBLRVlDT0RFX0xF
RlRfQ1RSTDoKKyAgICBjYXNlIEtFWUNPREVfUklHSFRfQ1RSTDoKKyAgICBjYXNlIEtFWUNPREVf
TlVNX0xPQ0s6CisgICAgY2FzZSBLRVlDT0RFX1BSSU5UOgorICAgIGNhc2UgS0VZQ09ERV9TQ1JP
TExfTE9DSzoKKyAgICBjYXNlIEtFWUNPREVfUEFVU0U6CisgICAgY2FzZSBLRVlDT0RFX0YxOgor
ICAgIGNhc2UgS0VZQ09ERV9GMjoKKyAgICBjYXNlIEtFWUNPREVfRjM6CisgICAgY2FzZSBLRVlD
T0RFX0Y0OgorICAgIGNhc2UgS0VZQ09ERV9GNToKKyAgICBjYXNlIEtFWUNPREVfRjY6CisgICAg
Y2FzZSBLRVlDT0RFX0Y3OgorICAgIGNhc2UgS0VZQ09ERV9GODoKKyAgICBjYXNlIEtFWUNPREVf
Rjk6CisgICAgY2FzZSBLRVlDT0RFX0YxMDoKKyAgICBjYXNlIEtFWUNPREVfRjExOgorICAgIGNh
c2UgS0VZQ09ERV9GMTI6CisgICAgY2FzZSBLRVlDT0RFX0xFRlQ6CisgICAgY2FzZSBLRVlDT0RF
X1JJR0hUOgorICAgIGNhc2UgS0VZQ09ERV9VUDoKKyAgICBjYXNlIEtFWUNPREVfRE9XTjoKKyAg
ICAgICAgcmV0dXJuIDA7CisgICAgZGVmYXVsdDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IHJldHVybiBjaGFyYWN0ZXI7Cit9CisKK3N0YXRpYyBpbmxpbmUgUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHRvV2ViQ29yZVBsYXRmb3JtS2V5Ym9hcmRFdmVudFR5cGUoY29uc3QgQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2gg
KHR5cGUpIHsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpL
ZXlEb3duOgorICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlEb3duOwor
ICAgIGNhc2UgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleVVwOgorICAg
ICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpLZXlVcDsKKyAgICBjYXNlIEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyOgorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkNoYXI7CisgICAgfQorfQorCitQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OlBsYXRmb3JtS2V5Ym9hcmRFdmVudChCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCBldmVudCkKKyAgICA6IG1fdHlwZSh0b1dlYkNvcmVQbGF0
Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGV2ZW50LnR5cGUoKSkpCisgICAgLCBtX2tleUlkZW50aWZp
ZXIoa2V5SWRlbnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIoZXZlbnQuY2hhcmFjdGVyKCkp
KQorICAgICwgbV9hdXRvUmVwZWF0KGZhbHNlKQorICAgICwgbV93aW5kb3dzVmlydHVhbEtleUNv
ZGUod2luZG93c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3Rlcigp
KSkKKyAgICAsIG1faXNLZXlwYWQoZmFsc2UpCisgICAgLCBtX3NoaWZ0S2V5KGV2ZW50LnNoaWZ0
QWN0aXZlKCkgfHwgKGV2ZW50LmNoYXJhY3RlcigpID09IEtFWUNPREVfQkFDS19UQUIpKSAvLyBC
YWNrVGFiIHNob3VsZCBiZSB0cmVhdGVkIGFzIFNoaWZ0ICsgVGFiLgorICAgICwgbV9jdHJsS2V5
KGV2ZW50LmN0cmxBY3RpdmUoKSkKKyAgICAsIG1fYWx0S2V5KGV2ZW50LmFsdEFjdGl2ZSgpKQor
ICAgICwgbV9tZXRhS2V5KGZhbHNlKQorICAgICwgbV91bm1vZGlmaWVkQ2hhcmFjdGVyKGV2ZW50
LmNoYXJhY3RlcigpKQoreworICAgIHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlciA9IGFkanVzdENo
YXJhY3RlckZyb21PUyhldmVudC5jaGFyYWN0ZXIoKSk7CisgICAgbV90ZXh0ID0gU3RyaW5nKCZj
aGFyYWN0ZXIsIDEpOworICAgIG1fdW5tb2RpZmllZFRleHQgPSBtX3RleHQ7CisKKyAgICBCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6bG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8s
ICJLZXlib2FyZCBldmVudCByZWNlaXZlZCB0ZXh0PSVsYywga2V5SWRlbnRpZmllcj0lcywgd2lu
ZG93c1ZpcnR1YWxLZXlDb2RlPSVkIiwgZXZlbnQuY2hhcmFjdGVyKCksIG1fa2V5SWRlbnRpZmll
ci5sYXRpbjEoKS5kYXRhKCksIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlKTsKK30KKworYm9vbCBQ
bGF0Zm9ybUtleWJvYXJkRXZlbnQ6OmN1cnJlbnRDYXBzTG9ja1N0YXRlKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQ6OmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6
OlR5cGUgdHlwZSwgYm9vbCBiYWNrd2FyZENvbXBhdGliaWxpdHlNb2RlKQoreworICAgIC8vIENh
biBvbmx5IGNoYW5nZSB0eXBlIGZyb20gS2V5RG93biB0byBSYXdLZXlEb3duIG9yIENoYXIsIGFz
IHdlIGxhY2sgaW5mb3JtYXRpb24gZm9yIG90aGVyIGNvbnZlcnNpb25zLgorICAgIEFTU0VSVCht
X3R5cGUgPT0gS2V5RG93bik7CisgICAgbV90eXBlID0gdHlwZTsKKworICAgIGlmIChiYWNrd2Fy
ZENvbXBhdGliaWxpdHlNb2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAodHlwZSA9PSBS
YXdLZXlEb3duKSB7CisgICAgICAgIG1fdGV4dCA9IFN0cmluZygpOworICAgICAgICBtX3VubW9k
aWZpZWRUZXh0ID0gU3RyaW5nKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbV9rZXlJZGVudGlm
aWVyID0gU3RyaW5nKCk7CisgICAgICAgIG1fd2luZG93c1ZpcnR1YWxLZXlDb2RlID0gMDsKKyAg
ICB9Cit9CisKK3ZvaWQgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJT
dGF0ZShib29sJiBzaGlmdEtleSwgYm9vbCYgY3RybEtleSwgYm9vbCYgYWx0S2V5LCBib29sJiBt
ZXRhS2V5KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>118516</attachid>
            <date>2011-12-08 19:16:52 -0800</date>
            <delta_ts>2011-12-08 20:37:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73534-20111209111643.patch</filename>
            <type>text/plain</type>
            <size>19529</size>
            <attacher name="Mary Wu">mawu</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAyMzE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWU4NzAzZTQ2NWQ2MDBk
YWFmZmM0N2VkMGRlMzFmNTkzNmY4OTJkYy4uN2Q2Y2QyMDg4YTFjNGZhY2JkZjY3Njk1OTQ5MmYx
NDkxYWIxOWVlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDExLTEyLTA4ICBNYXJ5
IFd1ICA8bWFyeS53dUB0b3JjaG1vYmlsZS5jb20uY24+CisKKyAgICAgICAgVXBzdHJlYW0gQmxh
Y2tCZXJyeSBwb3J0aW5nIG9mIE1JTUVUeXBlUmVnaXN0cnkvS2V5Ym9hcmRFdmVudAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzM1MzQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBPdGhlciBtYWluIGNvbnRy
aWJ1dG9yczoKKyAgICAgICAgTWlrZSBGZW50b24gPG1pZmVudG9uQHJpbS5jb20+CisgICAgICAg
IEpvZSBNYXNvbiA8am1hc29uQHJpbS5jb20+CisgICAgICAgIE1heCBGZWlsIDxtZmVpbEBxbngu
Y29tPgorICAgICAgICBMdWthcyBTeWRvcm93c2tpIDxsc3lkb3Jvd3NraUByaW0uY29tPgorICAg
ICAgICBDcnlzdGFsIFpoYW5nIDxoYWl6aGFuZ0ByaW0uY29tPiAKKworICAgICAgICBJbml0aWFs
IHVwc3RyZWFtLCBubyBuZXcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5
L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRNSU1FVHlwZUZvckV4dGVuc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRlbnNpb25Gb3JNSU1FVHlw
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNSU1FVHlwZVJlZ2lzdHJ5Ojppc0FwcGxpY2F0aW9uUGx1
Z2luTUlNRVR5cGUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvUGxhdGZvcm1LZXli
b2FyZEV2ZW50QmxhY2tCZXJyeS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6a2V5SWRl
bnRpZmllckZvckJsYWNrQmVycnlDaGFyYWN0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6d2luZG93
c0tleUNvZGVGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmFkanVz
dENoYXJhY3RlckZyb21PUyk6CisgICAgICAgIChXZWJDb3JlOjp0b1dlYkNvcmVQbGF0Zm9ybUtl
eWJvYXJkRXZlbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5Ym9hcmRFdmVu
dDo6UGxhdGZvcm1LZXlib2FyZEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtS2V5
Ym9hcmRFdmVudDo6Y3VycmVudENhcHNMb2NrU3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6UGxhdGZvcm1LZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZSk6
CisKIDIwMTEtMTItMDcgIE1hcnkgV3UgIDxtYXJ5Lnd1QHRvcmNobW9iaWxlLmNvbS5jbj4KIAog
ICAgICAgICBVcHN0cmVhbSA0IGZpbGVzIGludG8gV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBl
UmVnaXN0cnlCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVy
cnkvTUlNRVR5cGVSZWdpc3RyeUJsYWNrQmVycnkuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJhNDhmMWNjNjVk
Yzk3NTRjZWE5NWMxNjZmNmRlM2VlNmNkNmVmYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L01JTUVUeXBlUmVnaXN0cnlCbGFja0JlcnJ5LmNw
cApAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBaYWNrIFJ1c2lu
IDx6YWNrQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29y
cG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTAsIDIwMTEgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIk1JTUVU
eXBlUmVnaXN0cnkuaCIKKworI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworc3RydWN0IEV4dGVuc2lvbk1hcCB7CisgICAgY29uc3QgY2hhciogZXh0
ZW5zaW9uOworICAgIGNvbnN0IGNoYXIqIG1pbWVUeXBlOworfTsKKworc3RhdGljIGNvbnN0IEV4
dGVuc2lvbk1hcCBleHRlbnNpb25NYXBbXSA9IHsKKyAgICB7ICJibXAiLCAiaW1hZ2UvYm1wIiB9
LAorICAgIHsgImNzcyIsICJ0ZXh0L2NzcyIgfSwKKyAgICB7ICJnaWYiLCAiaW1hZ2UvZ2lmIiB9
LAorICAgIHsgImh0bWwiLCAidGV4dC9odG1sIiB9LAorICAgIHsgImh0bSIsICJ0ZXh0L2h0bWwi
IH0sCisgICAgeyAiaWNvIiwgImltYWdlL3gtaWNvbiIgfSwKKyAgICB7ICJqcGciLCAiaW1hZ2Uv
anBlZyIgfSwKKyAgICB7ICJqcGVnIiwgImltYWdlL2pwZWciIH0sCisgICAgeyAianMiLCAiYXBw
bGljYXRpb24veC1qYXZhc2NyaXB0IiB9LAorICAgIHsgIm1uZyIsICJ2aWRlby94LW1uZyIgfSwK
KyAgICB7ICJwYm0iLCAiaW1hZ2UveC1wb3J0YWJsZS1iaXRtYXAiIH0sCisgICAgeyAicGdtIiwg
ImltYWdlL3gtcG9ydGFibGUtZ3JheW1hcCIgfSwKKyAgICB7ICJwZGYiLCAiYXBwbGljYXRpb24v
cGRmIiB9LAorICAgIHsgInBuZyIsICJpbWFnZS9wbmciIH0sCisgICAgeyAicHBtIiwgImltYWdl
L3gtcG9ydGFibGUtcGl4bWFwIiB9LAorICAgIHsgInJzcyIsICJhcHBsaWNhdGlvbi9yc3MreG1s
IiB9LAorICAgIHsgInN2ZyIsICJpbWFnZS9zdmcreG1sIiB9LAorICAgIHsgInN2Z3oiLCAiaW1h
Z2Uvc3ZnK3htbCIgfSwKKyAgICB7ICJ0eHQiLCAidGV4dC9wbGFpbiIgfSwKKyAgICB7ICJ0ZXh0
IiwgInRleHQvcGxhaW4iIH0sCisgICAgeyAidGlmZiIsICJpbWFnZS90aWZmIiB9LAorICAgIHsg
InRpZiIsICJpbWFnZS90aWZmIiB9LAorICAgIHsgInhibSIsICJpbWFnZS94LXhiaXRtYXAiIH0s
CisgICAgeyAieG1sIiwgInRleHQveG1sIiB9LAorICAgIHsgInhwbSIsICJpbWFnZS94LXhwbSIg
fSwKKyAgICB7ICJ4c2wiLCAidGV4dC94c2wiIH0sCisgICAgeyAieGh0bWwiLCAiYXBwbGljYXRp
b24veGh0bWwreG1sIiB9LAorICAgIHsgIndtbCIsICJ0ZXh0L3ZuZC53YXAud21sIiB9LAorICAg
IHsgIndtbGMiLCAiYXBwbGljYXRpb24vdm5kLndhcC53bWxjIiB9LAorICAgIHsgIm00YSIsICJh
dWRpby9tNGEiIH0sCisgICAgeyAibWlkaSIsICJhdWRpby9taWRpIiB9LAorICAgIHsgIm1pZCIs
ICJhdWRpby9taWQiIH0sCisgICAgeyAibXAzIiwgImF1ZGlvL21wMyIgfSwKKyAgICB7ICJ3bWEi
LCAiYXVkaW8veC1tcy13bWEiIH0sCisgICAgeyAiM2dwIiwgInZpZGVvLzNncHAiIH0sCisgICAg
eyAiM2dwcCIsICJ2aWRlby8zZ3BwIiB9LAorICAgIHsgIjNncHAyIiwgInZpZGVvLzNncHAyIiB9
LAorICAgIHsgIjNnMiIsICJ2aWRlby8zZ3BwMiIgfSwKKyAgICB7ICIzZ3AyIiwgInZpZGVvLzNn
cHAyIiB9LAorICAgIHsgIm1wNCIsICJ2aWRlby9tcDQiIH0sCisgICAgeyAibTR2IiwgInZpZGVv
L200diIgfSwKKyAgICB7ICJhdmkiLCAidmlkZW8veC1tc3ZpZGVvIiB9LAorICAgIHsgIm1vdiIs
ICJ2aWRlby9xdWlja3RpbWUiIH0sCisgICAgeyAiZGl2eCIsICJ2aWRlby9kaXZ4IiB9LAorICAg
IHsgIm1wZWciLCAidmlkZW8vbXBlZyIgfSwKKyAgICB7ICJzYnYiLCAidmlkZW8vc2J2IiB9LAor
ICAgIHsgImFzZiIsICJ2aWRlby94LW1zLWFzZiIgfSwKKyAgICB7ICJ3bSIsICJ2aWRlby94LW1z
LXdtIiB9LAorICAgIHsgIndtdiIsICJ2aWRlby94LW1zLXdtdiIgfSwKKyAgICB7ICJ3bXgiLCAi
dmlkZW8veC1tcy13bXgiIH0sCisgICAgeyAid2F2IiwgImF1ZGlvL3gtd2F2IiB9LAorICAgIHsg
ImFtciIsICJhdWRpby9hbXIiIH0sCisgICAgeyAiYWFjIiwgImF1ZGlvL2FhYyIgfSwKKyAgICB7
ICJ4LWdzbSIsICJhdWRpby94LWdzbSIgfSwKKyAgICB7ICJzd2YiLCAiYXBwbGljYXRpb24veC1z
aG9ja3dhdmUtZmxhc2giIH0sCisgICAgeyAibTN1OCIsICJhcHBsaWNhdGlvbi92bmQuYXBwbGUu
bXBlZ3VybCIgfSwKKyAgICB7ICJtM3VybCIsICJhdWRpby9tcGVndXJsIiB9LAorICAgIHsgIm0z
dSIsICJhdWRpby9tcGVndXJsIiB9LAorICAgIC8vIEZJWE1FOiB3aW5jZSBhbHNvIG1hcHMgdHRm
IGFuZCBvdGYgdG8gdGV4dC9wbGFpbi4gU2hvdWxkIHdlIGRvIHRoYXQgdG9vPworICAgIHsgMCwg
MCB9Cit9OworCitTdHJpbmcgTUlNRVR5cGVSZWdpc3RyeTo6Z2V0TUlNRVR5cGVGb3JFeHRlbnNp
b24oY29uc3QgU3RyaW5nJiBleHRlbnNpb24pCit7CisgICAgU3RyaW5nIGxvd2VyRXh0ZW5zaW9u
ID0gZXh0ZW5zaW9uLmxvd2VyKCk7CisKKyAgICBjb25zdCBFeHRlbnNpb25NYXAqIGVudHJ5ID0g
ZXh0ZW5zaW9uTWFwOworICAgIHdoaWxlIChlbnRyeS0+ZXh0ZW5zaW9uKSB7CisgICAgICAgIGlm
IChsb3dlckV4dGVuc2lvbiA9PSBlbnRyeS0+ZXh0ZW5zaW9uKQorICAgICAgICAgICAgcmV0dXJu
IGVudHJ5LT5taW1lVHlwZTsKKyAgICAgICAgKytlbnRyeTsKKyAgICB9CisKKyAgICByZXR1cm4g
U3RyaW5nKCk7Cit9CisKK1N0cmluZyBNSU1FVHlwZVJlZ2lzdHJ5OjpnZXRQcmVmZXJyZWRFeHRl
bnNpb25Gb3JNSU1FVHlwZShjb25zdCBTdHJpbmcmIHR5cGUpCit7CisgICAgaWYgKHR5cGUuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICBTdHJpbmcgbG93ZXJUeXBl
ID0gdHlwZS5sb3dlcigpOworCisgICAgY29uc3QgRXh0ZW5zaW9uTWFwKiBlbnRyeSA9IGV4dGVu
c2lvbk1hcDsKKyAgICB3aGlsZSAoZW50cnktPm1pbWVUeXBlKSB7CisgICAgICAgIGlmIChsb3dl
clR5cGUgPT0gZW50cnktPm1pbWVUeXBlKQorICAgICAgICAgICAgcmV0dXJuIGVudHJ5LT5leHRl
bnNpb247CisgICAgICAgICsrZW50cnk7CisgICAgfQorCisgICAgcmV0dXJuIFN0cmluZygpOwor
fQorCitib29sIE1JTUVUeXBlUmVnaXN0cnk6OmlzQXBwbGljYXRpb25QbHVnaW5NSU1FVHlwZShj
b25zdCBTdHJpbmcmKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgcmV0dXJuIGZhbHNl
OworfQorCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L1BsYXRmb3JtS2V5Ym9hcmRFdmVudEJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtleWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNzFmNTY2NjFiY2FhODM4MjM4MzQ0OGUwMTZiOWI5OWM0YzhjZTJhCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QbGF0Zm9ybUtl
eWJvYXJkRXZlbnRCbGFja0JlcnJ5LmNwcApAQCAtMCwwICsxLDQ4NyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSwgMjAxMCwgMjAxMSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZC4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNl
bnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNv
ZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCisKKyNpbmNsdWRlICJOb3RJ
bXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIldpbmRvd3NLZXlib2FyZENvZGVzLmgiCisKKyNpbmNs
dWRlIDxCbGFja0JlcnJ5UGxhdGZvcm1LZXlib2FyZEV2ZW50Lmg+CisjaW5jbHVkZSA8QmxhY2tC
ZXJyeVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBTdHJpbmcga2V5SWRlbnRpZmllckZvckJsYWNrQmVy
cnlDaGFyYWN0ZXIodW5zaWduZWQgc2hvcnQgY2hhcmFjdGVyKQoreworICAgIHN3aXRjaCAoY2hh
cmFjdGVyKSB7CisgICAgY2FzZSBLRVlDT0RFX1JFVFVSTjoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
RU5URVI6CisgICAgICAgIHJldHVybiAiRW50ZXIiOworICAgIGNhc2UgS0VZQ09ERV9CQUNLU1BB
Q0U6CisgICAgICAgIHJldHVybiAiVSswMDA4IjsKKyAgICBjYXNlIEtFWUNPREVfREVMRVRFOgor
ICAgICAgICByZXR1cm4gIlUrMDA3RiI7CisgICAgY2FzZSBLRVlDT0RFX0VTQ0FQRToKKyAgICAg
ICAgcmV0dXJuICJFc2NhcGUiOworICAgIGNhc2UgS0VZQ09ERV9QQVVTRToKKyAgICAgICAgcmV0
dXJuICJQYXVzZSI7CisgICAgY2FzZSBLRVlDT0RFX1BSSU5UOgorICAgICAgICByZXR1cm4gIlBy
aW50U2NyZWVuIjsKKyAgICBjYXNlIEtFWUNPREVfVEFCOgorICAgIGNhc2UgS0VZQ09ERV9CQUNL
X1RBQjoKKyAgICAgICAgcmV0dXJuICJVKzAwMDkiOworICAgIGNhc2UgS0VZQ09ERV9MRUZUOgor
ICAgIGNhc2UgS0VZQ09ERV9LUF9MRUZUOgorICAgICAgICByZXR1cm4gIkxlZnQiOworICAgIGNh
c2UgS0VZQ09ERV9SSUdIVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfUklHSFQ6CisgICAgICAgIHJl
dHVybiAiUmlnaHQiOworICAgIGNhc2UgS0VZQ09ERV9VUDoKKyAgICBjYXNlIEtFWUNPREVfS1Bf
VVA6CisgICAgICAgIHJldHVybiAiVXAiOworICAgIGNhc2UgS0VZQ09ERV9ET1dOOgorICAgIGNh
c2UgS0VZQ09ERV9LUF9ET1dOOgorICAgICAgICByZXR1cm4gIkRvd24iOworICAgIGNhc2UgS0VZ
Q09ERV9LUF9ERUxFVEU6CisgICAgICAgIHJldHVybiAiVSswMDdGIjsKKyAgICBjYXNlIEtFWUNP
REVfTUVOVToKKyAgICBjYXNlIEtFWUNPREVfTEVGVF9BTFQ6CisgICAgY2FzZSBLRVlDT0RFX1JJ
R0hUX0FMVDoKKyAgICAgICAgcmV0dXJuICJBbHQiOworICAgIGNhc2UgS0VZQ09ERV9IT01FOgor
ICAgIGNhc2UgS0VZQ09ERV9LUF9IT01FOgorICAgICAgICByZXR1cm4gIkhvbWUiOworICAgIGNh
c2UgS0VZQ09ERV9JTlNFUlQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0lOU0VSVDoKKyAgICAgICAg
cmV0dXJuICJJbnNlcnQiOworICAgIGNhc2UgS0VZQ09ERV9QR19VUDoKKyAgICBjYXNlIEtFWUNP
REVfS1BfUEdfVVA6CisgICAgICAgIHJldHVybiAiUGFnZURvd24iOworICAgIGNhc2UgS0VZQ09E
RV9QR19ET1dOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19ET1dOOgorICAgICAgICByZXR1cm4g
IlBhZ2VVcCI7CisgICAgY2FzZSBLRVlDT0RFX0VORDoKKyAgICBjYXNlIEtFWUNPREVfS1BfRU5E
OgorICAgICAgICByZXR1cm4gIkVuZCI7CisgICAgY2FzZSBLRVlDT0RFX0YxOgorICAgICAgICBy
ZXR1cm4gIkYxIjsKKyAgICBjYXNlIEtFWUNPREVfRjI6CisgICAgICAgIHJldHVybiAiRjIiOwor
ICAgIGNhc2UgS0VZQ09ERV9GMzoKKyAgICAgICAgcmV0dXJuICJGMyI7CisgICAgY2FzZSBLRVlD
T0RFX0Y0OgorICAgICAgICByZXR1cm4gIkY0IjsKKyAgICBjYXNlIEtFWUNPREVfRjU6CisgICAg
ICAgIHJldHVybiAiRjUiOworICAgIGNhc2UgS0VZQ09ERV9GNjoKKyAgICAgICAgcmV0dXJuICJG
NiI7CisgICAgY2FzZSBLRVlDT0RFX0Y3OgorICAgICAgICByZXR1cm4gIkY3IjsKKyAgICBjYXNl
IEtFWUNPREVfRjg6CisgICAgICAgIHJldHVybiAiRjgiOworICAgIGNhc2UgS0VZQ09ERV9GOToK
KyAgICAgICAgcmV0dXJuICJGOSI7CisgICAgY2FzZSBLRVlDT0RFX0YxMDoKKyAgICAgICAgcmV0
dXJuICJGMTAiOworICAgIGNhc2UgS0VZQ09ERV9GMTE6CisgICAgICAgIHJldHVybiAiRjExIjsK
KyAgICBjYXNlIEtFWUNPREVfRjEyOgorICAgICAgICByZXR1cm4gIkYxMiI7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJVKyUwNFgiLCBXVEY6OnRvQVNDSUlV
cHBlcihjaGFyYWN0ZXIpKTsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQgd2luZG93c0tleUNvZGVG
b3JCbGFja0JlcnJ5Q2hhcmFjdGVyKHVuc2lnbmVkIHNob3J0IGNoYXJhY3RlcikKK3sKKyAgICBz
d2l0Y2ggKGNoYXJhY3RlcikgeworICAgIGNhc2UgS0VZQ09ERV9SRVRVUk46CisgICAgY2FzZSBL
RVlDT0RFX0tQX0VOVEVSOgorICAgICAgICByZXR1cm4gVktfUkVUVVJOOyAvLyAoMEQpIFJldHVy
biBrZXkKKyAgICBjYXNlIEtFWUNPREVfQkFDS1NQQUNFOgorICAgICAgICByZXR1cm4gVktfQkFD
SzsgLy8gKDA4KSBCQUNLU1BBQ0Uga2V5CisgICAgY2FzZSBLRVlDT0RFX0RFTEVURToKKyAgICAg
ICAgcmV0dXJuIFZLX0RFTEVURTsgLy8gKDJFKSBERUwga2V5CisgICAgY2FzZSBLRVlDT0RFX0VT
Q0FQRToKKyAgICAgICAgcmV0dXJuIFZLX0VTQ0FQRTsKKyAgICBjYXNlIEtFWUNPREVfU1BBQ0U6
CisgICAgICAgIHJldHVybiBWS19TUEFDRTsKKyAgICBjYXNlICcwJzoKKyAgICBjYXNlICcpJzoK
KyAgICAgICAgcmV0dXJuIFZLXzA7CisgICAgY2FzZSAnMSc6CisgICAgY2FzZSAnISc6CisgICAg
ICAgIHJldHVybiBWS18xOworICAgIGNhc2UgJzInOgorICAgIGNhc2UgJ0AnOgorICAgICAgICBy
ZXR1cm4gVktfMjsKKyAgICBjYXNlICczJzoKKyAgICBjYXNlICcjJzoKKyAgICAgICAgcmV0dXJu
IFZLXzM7CisgICAgY2FzZSAnNCc6CisgICAgY2FzZSAnJCc6CisgICAgICAgIHJldHVybiBWS180
OworICAgIGNhc2UgJzUnOgorICAgIGNhc2UgJyUnOgorICAgICAgICByZXR1cm4gVktfNTsKKyAg
ICBjYXNlICc2JzoKKyAgICBjYXNlICdeJzoKKyAgICAgICAgcmV0dXJuIFZLXzY7CisgICAgY2Fz
ZSAnNyc6CisgICAgY2FzZSAnJic6CisgICAgICAgIHJldHVybiBWS183OworICAgIGNhc2UgJzgn
OgorICAgIGNhc2UgJyonOgorICAgICAgICByZXR1cm4gVktfODsKKyAgICBjYXNlICc5JzoKKyAg
ICBjYXNlICcoJzoKKyAgICAgICAgcmV0dXJuIFZLXzk7CisgICAgY2FzZSAnYSc6CisgICAgY2Fz
ZSAnQSc6CisgICAgICAgIHJldHVybiBWS19BOworICAgIGNhc2UgJ2InOgorICAgIGNhc2UgJ0In
OgorICAgICAgICByZXR1cm4gVktfQjsKKyAgICBjYXNlICdjJzoKKyAgICBjYXNlICdDJzoKKyAg
ICAgICAgcmV0dXJuIFZLX0M7CisgICAgY2FzZSAnZCc6CisgICAgY2FzZSAnRCc6CisgICAgICAg
IHJldHVybiBWS19EOworICAgIGNhc2UgJ2UnOgorICAgIGNhc2UgJ0UnOgorICAgICAgICByZXR1
cm4gVktfRTsKKyAgICBjYXNlICdmJzoKKyAgICBjYXNlICdGJzoKKyAgICAgICAgcmV0dXJuIFZL
X0Y7CisgICAgY2FzZSAnZyc6CisgICAgY2FzZSAnRyc6CisgICAgICAgIHJldHVybiBWS19HOwor
ICAgIGNhc2UgJ2gnOgorICAgIGNhc2UgJ0gnOgorICAgICAgICByZXR1cm4gVktfSDsKKyAgICBj
YXNlICdpJzoKKyAgICBjYXNlICdJJzoKKyAgICAgICAgcmV0dXJuIFZLX0k7CisgICAgY2FzZSAn
aic6CisgICAgY2FzZSAnSic6CisgICAgICAgIHJldHVybiBWS19KOworICAgIGNhc2UgJ2snOgor
ICAgIGNhc2UgJ0snOgorICAgICAgICByZXR1cm4gVktfSzsKKyAgICBjYXNlICdsJzoKKyAgICBj
YXNlICdMJzoKKyAgICAgICAgcmV0dXJuIFZLX0w7CisgICAgY2FzZSAnbSc6CisgICAgY2FzZSAn
TSc6CisgICAgICAgIHJldHVybiBWS19NOworICAgIGNhc2UgJ24nOgorICAgIGNhc2UgJ04nOgor
ICAgICAgICByZXR1cm4gVktfTjsKKyAgICBjYXNlICdvJzoKKyAgICBjYXNlICdPJzoKKyAgICAg
ICAgcmV0dXJuIFZLX087CisgICAgY2FzZSAncCc6CisgICAgY2FzZSAnUCc6CisgICAgICAgIHJl
dHVybiBWS19QOworICAgIGNhc2UgJ3EnOgorICAgIGNhc2UgJ1EnOgorICAgICAgICByZXR1cm4g
VktfUTsKKyAgICBjYXNlICdyJzoKKyAgICBjYXNlICdSJzoKKyAgICAgICAgcmV0dXJuIFZLX1I7
CisgICAgY2FzZSAncyc6CisgICAgY2FzZSAnUyc6CisgICAgICAgIHJldHVybiBWS19TOworICAg
IGNhc2UgJ3QnOgorICAgIGNhc2UgJ1QnOgorICAgICAgICByZXR1cm4gVktfVDsKKyAgICBjYXNl
ICd1JzoKKyAgICBjYXNlICdVJzoKKyAgICAgICAgcmV0dXJuIFZLX1U7CisgICAgY2FzZSAndic6
CisgICAgY2FzZSAnVic6CisgICAgICAgIHJldHVybiBWS19WOworICAgIGNhc2UgJ3cnOgorICAg
IGNhc2UgJ1cnOgorICAgICAgICByZXR1cm4gVktfVzsKKyAgICBjYXNlICd4JzoKKyAgICBjYXNl
ICdYJzoKKyAgICAgICAgcmV0dXJuIFZLX1g7CisgICAgY2FzZSAneSc6CisgICAgY2FzZSAnWSc6
CisgICAgICAgIHJldHVybiBWS19ZOworICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOgorICAg
ICAgICByZXR1cm4gVktfWjsKKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICc9JzoKKyAgICAgICAg
cmV0dXJuIFZLX09FTV9QTFVTOworICAgIGNhc2UgJy0nOgorICAgIGNhc2UgJ18nOgorICAgICAg
ICByZXR1cm4gVktfT0VNX01JTlVTOworICAgIGNhc2UgJzwnOgorICAgIGNhc2UgJywnOgorICAg
ICAgICByZXR1cm4gVktfT0VNX0NPTU1BOworICAgIGNhc2UgJz4nOgorICAgIGNhc2UgJy4nOgor
ICAgICAgICByZXR1cm4gVktfT0VNX1BFUklPRDsKKyAgICBjYXNlICc6JzoKKyAgICBjYXNlICc7
JzoKKyAgICAgICAgcmV0dXJuIFZLX09FTV8xOworICAgIGNhc2UgJy8nOgorICAgIGNhc2UgJz8n
OgorICAgICAgICByZXR1cm4gVktfT0VNXzI7CisgICAgY2FzZSAnfic6CisgICAgY2FzZSAnYCc6
CisgICAgICAgIHJldHVybiBWS19PRU1fMzsKKyAgICBjYXNlICd7JzoKKyAgICBjYXNlICdbJzoK
KyAgICAgICAgcmV0dXJuIFZLX09FTV80OworICAgIGNhc2UgJ3wnOgorICAgIGNhc2UgJ1xcJzoK
KyAgICAgICAgcmV0dXJuIFZLX09FTV81OworICAgIGNhc2UgJ30nOgorICAgIGNhc2UgJ10nOgor
ICAgICAgICByZXR1cm4gVktfT0VNXzY7CisgICAgY2FzZSAnIic6CisgICAgY2FzZSAnXCcnOgor
ICAgICAgICByZXR1cm4gVktfT0VNXzc7CisgICAgY2FzZSBLRVlDT0RFX1BBVVNFOgorICAgICAg
ICByZXR1cm4gVktfUEFVU0U7CisgICAgY2FzZSBLRVlDT0RFX1BSSU5UOgorICAgICAgICByZXR1
cm4gVktfUFJJTlQ7CisgICAgY2FzZSBLRVlDT0RFX1NDUk9MTF9MT0NLOgorICAgICAgICByZXR1
cm4gVktfU0NST0xMOworICAgIGNhc2UgS0VZQ09ERV9UQUI6CisgICAgY2FzZSBLRVlDT0RFX0JB
Q0tfVEFCOgorICAgICAgICByZXR1cm4gVktfVEFCOworICAgIGNhc2UgS0VZQ09ERV9MRUZUOgor
ICAgIGNhc2UgS0VZQ09ERV9LUF9MRUZUOgorICAgICAgICByZXR1cm4gVktfTEVGVDsKKyAgICBj
YXNlIEtFWUNPREVfUklHSFQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX1JJR0hUOgorICAgICAgICBy
ZXR1cm4gVktfUklHSFQ7CisgICAgY2FzZSBLRVlDT0RFX1VQOgorICAgIGNhc2UgS0VZQ09ERV9L
UF9VUDoKKyAgICAgICAgcmV0dXJuIFZLX1VQOworICAgIGNhc2UgS0VZQ09ERV9ET1dOOgorICAg
IGNhc2UgS0VZQ09ERV9LUF9ET1dOOgorICAgICAgICByZXR1cm4gVktfRE9XTjsKKyAgICBjYXNl
IEtFWUNPREVfS1BfREVMRVRFOgorICAgICAgICByZXR1cm4gVktfREVMRVRFOworICAgIGNhc2Ug
S0VZQ09ERV9NRU5VOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUX0FMVDoKKyAgICBjYXNlIEtFWUNP
REVfUklHSFRfQUxUOgorICAgICAgICByZXR1cm4gVktfTUVOVTsKKyAgICBjYXNlIEtFWUNPREVf
SE9NRToKKyAgICBjYXNlIEtFWUNPREVfS1BfSE9NRToKKyAgICAgICAgcmV0dXJuIFZLX0hPTUU7
CisgICAgY2FzZSBLRVlDT0RFX0lOU0VSVDoKKyAgICBjYXNlIEtFWUNPREVfS1BfSU5TRVJUOgor
ICAgICAgICByZXR1cm4gVktfSU5TRVJUOworICAgIGNhc2UgS0VZQ09ERV9QR19VUDoKKyAgICBj
YXNlIEtFWUNPREVfS1BfUEdfVVA6CisgICAgICAgIHJldHVybiBWS19ORVhUOworICAgIGNhc2Ug
S0VZQ09ERV9QR19ET1dOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19ET1dOOgorICAgICAgICBy
ZXR1cm4gVktfUFJJT1I7CisgICAgY2FzZSBLRVlDT0RFX0VORDoKKyAgICBjYXNlIEtFWUNPREVf
S1BfRU5EOgorICAgICAgICByZXR1cm4gVktfRU5EOworICAgIGNhc2UgS0VZQ09ERV9DQVBTX0xP
Q0s6CisgICAgICAgIHJldHVybiBWS19DQVBJVEFMOworICAgIGNhc2UgS0VZQ09ERV9MRUZUX1NI
SUZUOgorICAgIGNhc2UgS0VZQ09ERV9SSUdIVF9TSElGVDoKKyAgICAgICAgcmV0dXJuIFZLX1NI
SUZUOworICAgIGNhc2UgS0VZQ09ERV9MRUZUX0NUUkw6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hU
X0NUUkw6CisgICAgICAgIHJldHVybiBWS19DT05UUk9MOworICAgIGNhc2UgS0VZQ09ERV9OVU1f
TE9DSzoKKyAgICAgICAgcmV0dXJuIFZLX05VTUxPQ0s7CisgICAgY2FzZSBLRVlDT0RFX0tQX1BM
VVM6CisgICAgICAgIHJldHVybiBWS19BREQ7CisgICAgY2FzZSBLRVlDT0RFX0tQX01JTlVTOgor
ICAgICAgICByZXR1cm4gVktfU1VCVFJBQ1Q7CisgICAgY2FzZSBLRVlDT0RFX0tQX01VTFRJUExZ
OgorICAgICAgICByZXR1cm4gVktfTVVMVElQTFk7CisgICAgY2FzZSBLRVlDT0RFX0tQX0RJVklE
RToKKyAgICAgICAgcmV0dXJuIFZLX0RJVklERTsKKyAgICBjYXNlIEtFWUNPREVfS1BfRklWRToK
KyAgICAgICAgcmV0dXJuIFZLX05VTVBBRDU7CisgICAgY2FzZSBLRVlDT0RFX0YxOgorICAgICAg
ICByZXR1cm4gVktfRjE7CisgICAgY2FzZSBLRVlDT0RFX0YyOgorICAgICAgICByZXR1cm4gVktf
RjI7CisgICAgY2FzZSBLRVlDT0RFX0YzOgorICAgICAgICByZXR1cm4gVktfRjM7CisgICAgY2Fz
ZSBLRVlDT0RFX0Y0OgorICAgICAgICByZXR1cm4gVktfRjQ7CisgICAgY2FzZSBLRVlDT0RFX0Y1
OgorICAgICAgICByZXR1cm4gVktfRjU7CisgICAgY2FzZSBLRVlDT0RFX0Y2OgorICAgICAgICBy
ZXR1cm4gVktfRjY7CisgICAgY2FzZSBLRVlDT0RFX0Y3OgorICAgICAgICByZXR1cm4gVktfRjc7
CisgICAgY2FzZSBLRVlDT0RFX0Y4OgorICAgICAgICByZXR1cm4gVktfRjg7CisgICAgY2FzZSBL
RVlDT0RFX0Y5OgorICAgICAgICByZXR1cm4gVktfRjk7CisgICAgY2FzZSBLRVlDT0RFX0YxMDoK
KyAgICAgICAgcmV0dXJuIFZLX0YxMDsKKyAgICBjYXNlIEtFWUNPREVfRjExOgorICAgICAgICBy
ZXR1cm4gVktfRjExOworICAgIGNhc2UgS0VZQ09ERV9GMTI6CisgICAgICAgIHJldHVybiBWS19G
MTI7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorfQorCit1bnNpZ25l
ZCBzaG9ydCBhZGp1c3RDaGFyYWN0ZXJGcm9tT1ModW5zaWduZWQgc2hvcnQgY2hhcmFjdGVyKQor
eworICAgIC8vIFVzZSB3aW5kb3dzIGtleSBjaGFyYWN0ZXIgYXMgQVNDSUkgdmFsdWUgd2hlbiBw
b3NzaWJsZSB0byBlbmhhbmNlIHJlYWRhYmlsaXR5LgorICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7
CisgICAgY2FzZSBLRVlDT0RFX0JBQ0tTUEFDRToKKyAgICAgICAgcmV0dXJuIFZLX0JBQ0s7Cisg
ICAgY2FzZSBLRVlDT0RFX0tQX0RFTEVURToKKyAgICBjYXNlIEtFWUNPREVfREVMRVRFOgorICAg
ICAgICByZXR1cm4gMHg3ZjsKKyAgICBjYXNlIEtFWUNPREVfRVNDQVBFOgorICAgICAgICByZXR1
cm4gVktfRVNDQVBFOworICAgIGNhc2UgS0VZQ09ERV9SRVRVUk46CisgICAgY2FzZSBLRVlDT0RF
X0tQX0VOVEVSOgorICAgICAgICByZXR1cm4gVktfUkVUVVJOOworICAgIGNhc2UgS0VZQ09ERV9L
UF9QTFVTOgorICAgICAgICByZXR1cm4gVktfQUREOworICAgIGNhc2UgS0VZQ09ERV9LUF9NSU5V
UzoKKyAgICAgICAgcmV0dXJuIFZLX1NVQlRSQUNUOworICAgIGNhc2UgS0VZQ09ERV9LUF9NVUxU
SVBMWToKKyAgICAgICAgcmV0dXJuIFZLX01VTFRJUExZOworICAgIGNhc2UgS0VZQ09ERV9LUF9E
SVZJREU6CisgICAgICAgIHJldHVybiBWS19ESVZJREU7CisgICAgY2FzZSBLRVlDT0RFX0tQX0ZJ
VkU6CisgICAgY2FzZSBLRVlDT0RFX0hPTUU6CisgICAgY2FzZSBLRVlDT0RFX0tQX0hPTUU6Cisg
ICAgY2FzZSBLRVlDT0RFX0VORDoKKyAgICBjYXNlIEtFWUNPREVfS1BfRU5EOgorICAgIGNhc2Ug
S0VZQ09ERV9JTlNFUlQ6CisgICAgY2FzZSBLRVlDT0RFX0tQX0lOU0VSVDoKKyAgICBjYXNlIEtF
WUNPREVfUEdfVVA6CisgICAgY2FzZSBLRVlDT0RFX0tQX1BHX1VQOgorICAgIGNhc2UgS0VZQ09E
RV9QR19ET1dOOgorICAgIGNhc2UgS0VZQ09ERV9LUF9QR19ET1dOOgorICAgIGNhc2UgS0VZQ09E
RV9NRU5VOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUX0FMVDoKKyAgICBjYXNlIEtFWUNPREVfUklH
SFRfQUxUOgorICAgIGNhc2UgS0VZQ09ERV9DQVBTX0xPQ0s6CisgICAgY2FzZSBLRVlDT0RFX0xF
RlRfU0hJRlQ6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX1NISUZUOgorICAgIGNhc2UgS0VZQ09E
RV9MRUZUX0NUUkw6CisgICAgY2FzZSBLRVlDT0RFX1JJR0hUX0NUUkw6CisgICAgY2FzZSBLRVlD
T0RFX05VTV9MT0NLOgorICAgIGNhc2UgS0VZQ09ERV9QUklOVDoKKyAgICBjYXNlIEtFWUNPREVf
U0NST0xMX0xPQ0s6CisgICAgY2FzZSBLRVlDT0RFX1BBVVNFOgorICAgIGNhc2UgS0VZQ09ERV9G
MToKKyAgICBjYXNlIEtFWUNPREVfRjI6CisgICAgY2FzZSBLRVlDT0RFX0YzOgorICAgIGNhc2Ug
S0VZQ09ERV9GNDoKKyAgICBjYXNlIEtFWUNPREVfRjU6CisgICAgY2FzZSBLRVlDT0RFX0Y2Ogor
ICAgIGNhc2UgS0VZQ09ERV9GNzoKKyAgICBjYXNlIEtFWUNPREVfRjg6CisgICAgY2FzZSBLRVlD
T0RFX0Y5OgorICAgIGNhc2UgS0VZQ09ERV9GMTA6CisgICAgY2FzZSBLRVlDT0RFX0YxMToKKyAg
ICBjYXNlIEtFWUNPREVfRjEyOgorICAgIGNhc2UgS0VZQ09ERV9MRUZUOgorICAgIGNhc2UgS0VZ
Q09ERV9SSUdIVDoKKyAgICBjYXNlIEtFWUNPREVfVVA6CisgICAgY2FzZSBLRVlDT0RFX0RPV046
CisgICAgICAgIHJldHVybiAwOworICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0K
KyAgICByZXR1cm4gY2hhcmFjdGVyOworfQorCitzdGF0aWMgaW5saW5lIFBsYXRmb3JtS2V5Ym9h
cmRFdmVudDo6VHlwZSB0b1dlYkNvcmVQbGF0Zm9ybUtleWJvYXJkRXZlbnRUeXBlKGNvbnN0IEJs
YWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpUeXBlIHR5cGUpCit7CisgICAgc3dp
dGNoICh0eXBlKSB7CisgICAgY2FzZSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVu
dDo6S2V5RG93bjoKKyAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5RG93
bjsKKyAgICBjYXNlIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlVcDoK
KyAgICAgICAgcmV0dXJuIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6S2V5VXA7CisgICAgY2FzZSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hhcjoKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpDaGFyOworICAgIH0KK30K
KworUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpQbGF0Zm9ybUtleWJvYXJkRXZlbnQoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQgZXZlbnQpCisgICAgOiBtX3R5cGUodG9XZWJDb3Jl
UGxhdGZvcm1LZXlib2FyZEV2ZW50VHlwZShldmVudC50eXBlKCkpKQorICAgICwgbV9rZXlJZGVu
dGlmaWVyKGtleUlkZW50aWZpZXJGb3JCbGFja0JlcnJ5Q2hhcmFjdGVyKGV2ZW50LmNoYXJhY3Rl
cigpKSkKKyAgICAsIG1fYXV0b1JlcGVhdChmYWxzZSkKKyAgICAsIG1fd2luZG93c1ZpcnR1YWxL
ZXlDb2RlKHdpbmRvd3NLZXlDb2RlRm9yQmxhY2tCZXJyeUNoYXJhY3RlcihldmVudC5jaGFyYWN0
ZXIoKSkpCisgICAgLCBtX2lzS2V5cGFkKGZhbHNlKQorICAgICwgbV9zaGlmdEtleShldmVudC5z
aGlmdEFjdGl2ZSgpIHx8IChldmVudC5jaGFyYWN0ZXIoKSA9PSBLRVlDT0RFX0JBQ0tfVEFCKSkg
Ly8gQmFja1RhYiBzaG91bGQgYmUgdHJlYXRlZCBhcyBTaGlmdCArIFRhYi4KKyAgICAsIG1fY3Ry
bEtleShldmVudC5jdHJsQWN0aXZlKCkpCisgICAgLCBtX2FsdEtleShldmVudC5hbHRBY3RpdmUo
KSkKKyAgICAsIG1fbWV0YUtleShmYWxzZSkKKyAgICAsIG1fdW5tb2RpZmllZENoYXJhY3Rlcihl
dmVudC5jaGFyYWN0ZXIoKSkKK3sKKyAgICB1bnNpZ25lZCBzaG9ydCBjaGFyYWN0ZXIgPSBhZGp1
c3RDaGFyYWN0ZXJGcm9tT1MoZXZlbnQuY2hhcmFjdGVyKCkpOworICAgIG1fdGV4dCA9IFN0cmlu
ZygmY2hhcmFjdGVyLCAxKTsKKyAgICBtX3VubW9kaWZpZWRUZXh0ID0gbV90ZXh0OworCisgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJ
bmZvLCAiS2V5Ym9hcmQgZXZlbnQgcmVjZWl2ZWQgdGV4dD0lbGMsIGtleUlkZW50aWZpZXI9JXMs
IHdpbmRvd3NWaXJ0dWFsS2V5Q29kZT0lZCIsIGV2ZW50LmNoYXJhY3RlcigpLCBtX2tleUlkZW50
aWZpZXIubGF0aW4xKCkuZGF0YSgpLCBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSk7Cit9CisKK2Jv
b2wgUGxhdGZvcm1LZXlib2FyZEV2ZW50OjpjdXJyZW50Q2Fwc0xvY2tTdGF0ZSgpCit7CisgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpkaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1LZXlib2FyZEV2
ZW50OjpUeXBlIHR5cGUsIGJvb2wgYmFja3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKK3sKKyAgICAv
LyBDYW4gb25seSBjaGFuZ2UgdHlwZSBmcm9tIEtleURvd24gdG8gUmF3S2V5RG93biBvciBDaGFy
LCBhcyB3ZSBsYWNrIGluZm9ybWF0aW9uIGZvciBvdGhlciBjb252ZXJzaW9ucy4KKyAgICBBU1NF
UlQobV90eXBlID09IEtleURvd24pOworICAgIG1fdHlwZSA9IHR5cGU7CisKKyAgICBpZiAoYmFj
a3dhcmRDb21wYXRpYmlsaXR5TW9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKHR5cGUg
PT0gUmF3S2V5RG93bikgeworICAgICAgICBtX3RleHQgPSBTdHJpbmcoKTsKKyAgICAgICAgbV91
bm1vZGlmaWVkVGV4dCA9IFN0cmluZygpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fa2V5SWRl
bnRpZmllciA9IFN0cmluZygpOworICAgICAgICBtX3dpbmRvd3NWaXJ0dWFsS2V5Q29kZSA9IDA7
CisgICAgfQorfQorCit2b2lkIFBsYXRmb3JtS2V5Ym9hcmRFdmVudDo6Z2V0Q3VycmVudE1vZGlm
aWVyU3RhdGUoYm9vbCYsIGJvb2wmLCBib29sJiwgYm9vbCYpCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>