<?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>169065</bug_id>
          
          <creation_ts>2017-03-01 16:06:02 -0800</creation_ts>
          <short_desc>Move stringMatchesWildcardString from WebKit2 to WebCore</short_desc>
          <delta_ts>2017-03-02 15:55:03 -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>WebKit2</component>
          <version>Other</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Aakash Jain">aakash_jain</reporter>
          <assigned_to name="Aakash Jain">aakash_jain</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>aestes</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1282524</commentid>
    <comment_count>0</comment_count>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-03-01 16:06:02 -0800</bug_when>
    <thetext>stringMatchesWildcardString from WebKit2/Platform/mac/StringUtilities.h should be moved to WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282553</commentid>
    <comment_count>1</comment_count>
      <attachid>303151</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-03-01 17:50:25 -0800</bug_when>
    <thetext>Created attachment 303151
Proposed patch

Still need to fix TestWebKitAPI, but please review meanwhile.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282574</commentid>
    <comment_count>2</comment_count>
      <attachid>303151</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-01 19:10:12 -0800</bug_when>
    <thetext>Comment on attachment 303151
Proposed patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Move stringMatchesWildcardString from WebKit2 to WebCore

Looks good. I&apos;m interested in Andy&apos;s take too!

&gt; Source/WebCore/platform/mac/StringUtilities.mm:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

Please keep the old copyright, this is not new code.

&gt; Source/WebKit2/ChangeLog:8
&gt; +        * Platform/mac/StringUtilities.h: Moved stringMatchesWildcardString to WebCore.

This file can be made a project one now.

Can the rest of its content be moved too, so that we could delete it altogether?

&gt; Source/WebKit2/WebProcess/Plugins/WebPluginInfoProvider.cpp:220
&gt; +        if (key.contains(&apos;*&apos;) &amp;&amp; key != &quot;*&quot; &amp;&amp; WebCore::stringMatchesWildcardString(host, key)) {

We usually add &quot;using namespace WebCore&quot; to any files that do, and omit the prefixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282593</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2017-03-01 20:10:02 -0800</bug_when>
    <thetext>The ChangeLog does not seem to indicate why this change is necessary. Could you add that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282743</commentid>
    <comment_count>4</comment_count>
      <attachid>303151</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-02 09:34:21 -0800</bug_when>
    <thetext>Comment on attachment 303151
Proposed patch

Marking r- since this breaks the build.

Sam, we now need to have WebKit API/SPI headers strictly match framework exports. Another way to fix this would be to mark the other functions in WebKit2/StringUtilities.h as visibility(&quot;hidden&quot;), but moving internal functions to WebCore is cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282806</commentid>
    <comment_count>5</comment_count>
      <attachid>303151</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2017-03-02 11:11:38 -0800</bug_when>
    <thetext>Comment on attachment 303151
Proposed patch

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

You&apos;ll need to update the StringUtilities API test to include the right header file. You&apos;ll also need to update WebCore/PlatformMac.cmake.

Looks good to me once you get it building properly.

&gt; Source/WebCore/WebCore.xcodeproj/project.pbxproj:18276
&gt; +				ECA680C61E67724500731D20 /* StringUtilities.h */,
&gt; +				ECA680C81E67730B00731D20 /* StringUtilities.mm */,

Please keep the WebCore/platform/mac/ group sorted. You can reorder these in the Xcode UI or use sort-Xcode-project-file (although that&apos;ll likely change more than just this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282885</commentid>
    <comment_count>6</comment_count>
      <attachid>303240</attachid>
    <who name="Aakash Jain">aakash_jain</who>
    <bug_when>2017-03-02 14:22:27 -0800</bug_when>
    <thetext>Created attachment 303240
Updated patch

Updated patch with review comments incorporated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282939</commentid>
    <comment_count>7</comment_count>
      <attachid>303240</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2017-03-02 15:44:11 -0800</bug_when>
    <thetext>Comment on attachment 303240
Updated patch

Looking at it some more, I don&apos;t think that there is enough similarity to move them together.

Also, looks like nsStringFromWebCoreString is badly over-used in WebKit2, given that its purpose is to be used on secondary threads.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282949</commentid>
    <comment_count>8</comment_count>
      <attachid>303240</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-02 15:54:59 -0800</bug_when>
    <thetext>Comment on attachment 303240
Updated patch

Clearing flags on attachment: 303240

Committed r213319: &lt;http://trac.webkit.org/changeset/213319&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1282950</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-03-02 15:55:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303151</attachid>
            <date>2017-03-01 17:50:25 -0800</date>
            <delta_ts>2017-03-02 14:22:27 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>patch_stringMatchesWildcardString</filename>
            <type>text/plain</type>
            <size>14115</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzI1MykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE2IEBACisyMDE3LTAzLTAxICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0cmluZ01hdGNo
ZXNXaWxkY2FyZFN0cmluZyBmcm9tIFdlYktpdDIgdG8gV2ViQ29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDY1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkIFN0cmluZ1V0aWxpdGllcy5oIGFuZCBTdHJpbmdVdGlsaXRpZXMu
bW0KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmg6IEFkZGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW06IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6d2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyk6IEFkZGVkLgorCiAyMDE3LTAzLTAx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgW1dLMl1bIU5FVFdP
UktfU0VTU0lPTl0gRmFpbHVyZSB0byBkb3dubG9hZCB3aGVuIHVzaW5nIGEgZG93bmxvYWQgYXR0
cmlidXRlIHdpdGggbm8gdmFsdWUgb24gYW4gYW5jaG9yCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMTMyMjMp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdv
cmtpbmcgY29weSkKQEAgLTY1ODYsNiArNjU4Niw4IEBACiAJCUU1QkE3RDYzMTUxNDM3Q0EwMEZF
MUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEU1QkE3RDYyMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlv
bnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlF
QkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJGNTEyMUExNjk2NDk2QzAw
NTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCAqLzsgfTsKIAkJRUJGNTEyMUQxNjk2NDk2
QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkY1MTIxQjE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBl
Q29udmVyc2lvbnMuaCAqLzsgfTsKKwkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmlu
Z1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRUNBNjgwQzYxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUVDQTY4MEM5MUU2Nzcz
MEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDODFFNjc3MzBCMDA3MzFEMjAgLyogU3RyaW5n
VXRpbGl0aWVzLm1tICovOyB9OwogCQlFQ0NEQjg4MTFFNEI4QzU5MDBBMUFFQTYgLyogV0tDb250
ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRUNDREI4ODAxRTRCOEM1OTAwQTFBRUE2IC8qIFdLQ29udGVudE9ic2Vy
dmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJRUNDREI4ODcxRTRCQjYzRjAwQTFBRUE2IC8qIFdL
R3JhcGhpY3NJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRUNDREI4ODYxRTRCQjYzRjAwQTFBRUE2IC8qIFdLR3JhcGhpY3NJbnRlcm5hbC5o
ICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMkJBODNCMDlB
MjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDgwMSw2ICsxNDgwMyw4IEBACiAJCUVCMDgx
Q0Q5MTY5NjA4NDQwMDU1MzczMCAvKiBUeXBlQ29udmVyc2lvbnMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFR5cGVDb252
ZXJzaW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCRjUxMjFBMTY5NjQ5
NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1R5cGVDb252ZXJzaW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVCRjUxMjFCMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9u
cy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5cGVDb252ZXJzaW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQ0E2ODBDNjFFNjc3MjQ1MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQ0E2ODBDODFF
Njc3MzBCMDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFQ0NEQjg4MDFFNEI4QzU5MDBBMUFFQTYgLyogV0tDb250ZW50T2JzZXJ2
YXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0NvbnRl
bnRPYnNlcnZhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVD
Q0RCODg2MUU0QkI2M0YwMEExQUVBNiAvKiBXS0dyYXBoaWNzSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tHcmFwaGljc0ludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1h
cmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEb2N1bWVudE1hcmtlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyNjgsNiArMTgyNzIsOCBAQAogCQkJ
CUNEODIwMzBFMTM5NUFDRTcwMEY5NTZDNiAvKiBXZWJXaW5kb3dBbmltYXRpb24uaCAqLywKIAkJ
CQlDRDgyMDMwRjEzOTVBQ0U3MDBGOTU2QzYgLyogV2ViV2luZG93QW5pbWF0aW9uLm1tICovLAog
CQkJCTkzODBGNDc3MDlBMTFBQ0MwMDFGREIzNCAvKiBXaWRnZXRNYWMubW0gKi8sCisJCQkJRUNB
NjgwQzYxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAorCQkJCUVDQTY4
MEM4MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCiAJCQkpOwogCQkJ
cGF0aCA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0yNzY4OCw2ICsyNzY5
NCw3IEBACiAJCQkJMzcxRTY1Q0MxMzY2MUVEQzAwQkVFREIwIC8qIFBhZ2VTZXJpYWxpemVyLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFMTI4NEFFMTEwNDQ3RDQ1MDBFQUVCNTIgLyogUGFnZVRyYW5z
aXRpb25FdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQzMwQzkxQzkwNDAwREMyNTVC
IC8qIFBhZ2VVUkxSZWNvcmQuaCBpbiBIZWFkZXJzICovLAorCQkJCUVDQTY4MEM3MUU2NzcyNDUw
MDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRDVCOTdC
MTM1Q0M5NzgwMEQ1RTkyQSAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk5Mzc3QUJBMDE1REVGRUVGMDAzMUZEMDQgLyogUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMDg4NTA2N0YxMURBMDQ1QjAwMTgyQjk4IC8qIFBhaW50SW5mby5oIGluIEhlYWRl
cnMgKi8sCkBAIC0yOTU1Nyw2ICsyOTU2NCw3IEBACiAJCQkJN0E0NTAzMkYxOERCNzE3MjAwMzc3
QjM0IC8qIEJ1ZmZlcmVkTGluZVJlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlGNTVCM0RB
RjEyNTFGMTJEMDAzRUYyNjkgLyogQnV0dG9uSW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTFBNTY5Q0Y3MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2NsYXNzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUVDQTY4MEM5MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQkxQTU2OUNGOTBEN0UyQjgyMDA3QzM5ODMgLyogY19pbnN0YW5jZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTU2OUNGQjBEN0UyQjgyMDA3QzM5ODMgLyogY19ydW50
aW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBNTY5Q0ZEMEQ3RTJCODIwMDdDMzk4MyAvKiBj
X3V0aWxpdHkuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbXBvcnQgIlBsYXRmb3Jt
RXhwb3J0TWFjcm9zLmgiCisjaW1wb3J0IDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CitXRUJDT1JFX0VYUE9SVCBib29sIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhj
b25zdCBTdHJpbmcmIHN0cmluZ1RvQmVNYXRjaGVkLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3Ry
aW5nKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRp
ZXMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5tbQkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlN0cmluZ1V0aWxpdGllcy5oIgor
CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisjaW1wb3J0IDx5YXJyL1JlZ3Vs
YXJFeHByZXNzaW9uLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3N0YXRpYyBTdHJp
bmcgd2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7Cisg
ICAgU3RyaW5nIG1ldGFDaGFyYWN0ZXJzID0gIi58Kz8oKVtde31eJCI7CisgICAgVUNoYXIgZXNj
YXBlQ2hhcmFjdGVyID0gJ1xcJzsKKyAgICBVQ2hhciB3aWxkY2FyZENoYXJhY3RlciA9ICcqJzsK
KyAgICAKKyAgICBTdHJpbmdCdWlsZGVyIHN0cmluZ0J1aWxkZXI7CisgICAgCisgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoJ14nKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5n
Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07Cisg
ICAgICAgIGlmIChtZXRhQ2hhcmFjdGVycy5jb250YWlucyhjaGFyYWN0ZXIpIHx8IGNoYXJhY3Rl
ciA9PSBlc2NhcGVDaGFyYWN0ZXIpCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChl
c2NhcGVDaGFyYWN0ZXIpOworICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gd2lsZGNhcmRD
aGFyYWN0ZXIpCisgICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicpOworICAgICAg
ICAKKyAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisgICAg
c3RyaW5nQnVpbGRlci5hcHBlbmQoJyQnKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHN0cmluZ0J1
aWxkZXIudG9TdHJpbmcoKTsKK30KKyAgICAKK2Jvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBTdHJpbmcmIHdpbGRjYXJkU3RyaW5nKQor
eworICAgIHJldHVybiBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uKHdpbGRjYXJkUmVnZXhQ
YXR0ZXJuU3RyaW5nKHdpbGRjYXJkU3RyaW5nKSwgVGV4dENhc2VJbnNlbnNpdGl2ZSkubWF0Y2go
c3RyaW5nKSAhPSAtMTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMjEzMjMzKQor
KysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTctMDMtMDEgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgorCisg
ICAgICAgIE1vdmUgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nIGZyb20gV2ViS2l0MiB0byBX
ZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjkwNjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaDogTW92ZWQgc3RyaW5nTWF0Y2hlc1dpbGRj
YXJkU3RyaW5nIHRvIFdlYkNvcmUuCisgICAgICAgICogUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbToKKyAgICAgICAgKFdlYktpdDo6d2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcpOiBN
b3ZlZCB0byBXZWJDb3JlLgorICAgICAgICAoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRT
dHJpbmcpOiBEaXR0by4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5m
b1Byb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjps
b25nZXN0TWF0Y2hlZFdpbGRjYXJkSG9zdEZvckhvc3QpOiBVc2luZyBzdHJpbmdNYXRjaGVzV2ls
ZGNhcmRTdHJpbmcgZnJvbSBXZWJDb3JlLgorCiAyMDE3LTAzLTAxICBKb24gTGVlICA8am9ubGVl
QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGUgcGVlciBjb25uZWN0aW9uIHByZWZlcmVuY2UK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLmgJ
KHJldmlzaW9uIDIxMzIyMykKKysrIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgU3RyaW5nVXRpbGl0aWVzX2gK
LSNkZWZpbmUgU3RyaW5nVXRpbGl0aWVzX2gKKyNwcmFnbWEgb25jZQogCiAjaW1wb3J0IDxXZWJL
aXQvV0tEZWNsYXJhdGlvblNwZWNpZmllcnMuaD4KICNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CkBA
IC00MCw4ICszOSw0IEBAIE5TU3RyaW5nICpmb3JtYXR0ZWRQaG9uZU51bWJlclN0cmluZyhOU1MK
IAogI2VuZGlmIC8vIGRlZmluZWQoX19PQkpDX18pCiAKLVdLX0VYUE9SVCBib29sIHN0cmluZ01h
dGNoZXNXaWxkY2FyZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVNYXRjaGVkLCBjb25z
dCBTdHJpbmcmIHdpbGRjYXJkU3RyaW5nKTsKLQogfQotCi0jZW5kaWYgLy8gU3RyaW5nVXRpbGl0
aWVzX2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxp
dGllcy5tbQkocmV2aXNpb24gMjEzMjIzKQorKysgU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFj
L1N0cmluZ1V0aWxpdGllcy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDAsMzQgKzQwLDYgQEAgTlNT
dHJpbmcgKm5zU3RyaW5nRnJvbVdlYkNvcmVTdHJpbmcoY29ucwogICAgIHJldHVybiBzdHJpbmcu
aXNFbXB0eSgpID8gQCIiIDogQ0ZCcmlkZ2luZ1JlbGVhc2UoV0tTdHJpbmdDb3B5Q0ZTdHJpbmco
MCwgdG9BUEkoc3RyaW5nLmltcGwoKSkpKTsKIH0KIAotc3RhdGljIFN0cmluZyB3aWxkY2FyZFJl
Z2V4UGF0dGVyblN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBTdHJpbmcgbWV0
YUNoYXJhY3RlcnMgPSAiLnwrPygpW117fV4kIjsKLSAgICBVQ2hhciBlc2NhcGVDaGFyYWN0ZXIg
PSAnXFwnOwotICAgIFVDaGFyIHdpbGRjYXJkQ2hhcmFjdGVyID0gJyonOwotCi0gICAgU3RyaW5n
QnVpbGRlciBzdHJpbmdCdWlsZGVyOwotCi0gICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJ14nKTsK
LSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyBpKyspIHsKLSAg
ICAgICAgYXV0byBjaGFyYWN0ZXIgPSBzdHJpbmdbaV07Ci0gICAgICAgIGlmIChtZXRhQ2hhcmFj
dGVycy5jb250YWlucyhjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSBlc2NhcGVDaGFyYWN0ZXIp
Ci0gICAgICAgICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChlc2NhcGVDaGFyYWN0ZXIpOwotICAg
ICAgICBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gd2lsZGNhcmRDaGFyYWN0ZXIpCi0gICAgICAgICAg
ICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgnLicpOwotCi0gICAgICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKGNoYXJhY3Rlcik7Ci0gICAgfQotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCckJyk7Ci0K
LSAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50b1N0cmluZygpOwotfQotCi1ib29sIHN0cmluZ01h
dGNoZXNXaWxkY2FyZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgU3RyaW5nJiB3
aWxkY2FyZFN0cmluZykKLXsKLSAgICByZXR1cm4gSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
bih3aWxkY2FyZFJlZ2V4UGF0dGVyblN0cmluZyh3aWxkY2FyZFN0cmluZyksIFRleHRDYXNlSW5z
ZW5zaXRpdmUpLm1hdGNoKHN0cmluZykgIT0gLTE7Ci19Ci0KICNpZiBFTkFCTEUoVEVMRVBIT05F
X05VTUJFUl9ERVRFQ1RJT04pICYmIFBMQVRGT1JNKE1BQykKIAogU09GVF9MSU5LX1BSSVZBVEVf
RlJBTUVXT1JLKFBob25lTnVtYmVycyk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvV2ViUGx1Z2luSW5mb1Byb3ZpZGVyLmNwcAkocmV2
aXNpb24gMjEzMjIzKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBs
dWdpbkluZm9Qcm92aWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDcgKzM5LDcgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKICNpZiBQTEFURk9STShNQUMpCi0jaW5j
bHVkZSAiU3RyaW5nVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9TdHJpbmdVdGlsaXRp
ZXMuaD4KICNlbmRpZgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTIxNyw3ICsyMTcsNyBAQCBT
dHJpbmcgV2ViUGx1Z2luSW5mb1Byb3ZpZGVyOjpsb25nZXN0TWF0CiAgICAgU3RyaW5nIGxvbmdl
c3RNYXRjaGVkSG9zdDsKIAogICAgIGZvciAoYXV0byYga2V5IDogbV9ob3N0c1RvUGx1Z2luSWRl
bnRpZmllckRhdGEua2V5cygpKSB7Ci0gICAgICAgIGlmIChrZXkuY29udGFpbnMoJyonKSAmJiBr
ZXkgIT0gIioiICYmIHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhob3N0LCBrZXkpKSB7Cisg
ICAgICAgIGlmIChrZXkuY29udGFpbnMoJyonKSAmJiBrZXkgIT0gIioiICYmIFdlYkNvcmU6OnN0
cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyhob3N0LCBrZXkpKSB7CiAgICAgICAgICAgICBpZiAo
a2V5Lmxlbmd0aCgpID4gbG9uZ2VzdE1hdGNoZWRIb3N0Lmxlbmd0aCgpKQogICAgICAgICAgICAg
ICAgIGxvbmdlc3RNYXRjaGVkSG9zdCA9IGtleTsKICAgICAgICAgICAgIGVsc2UgaWYgKGtleS5s
ZW5ndGgoKSA9PSBsb25nZXN0TWF0Y2hlZEhvc3QubGVuZ3RoKCkgJiYgY29kZVBvaW50Q29tcGFy
ZUxlc3NUaGFuKGtleSwgbG9uZ2VzdE1hdGNoZWRIb3N0KSkK
</data>
<flag name="review"
          id="324824"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>303240</attachid>
            <date>2017-03-02 14:22:27 -0800</date>
            <delta_ts>2017-03-02 15:54:59 -0800</delta_ts>
            <desc>Updated patch</desc>
            <filename>patch_stringMatchesWildcardString_v2</filename>
            <type>text/plain</type>
            <size>42737</size>
            <attacher name="Aakash Jain">aakash_jain</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIxMzI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDE3LTAzLTAyICBBYWthc2gg
SmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KKworICAgICAgICBNb3ZlIHN0cmluZ01hdGNo
ZXNXaWxkY2FyZFN0cmluZyBmcm9tIFdlYktpdDIgdG8gV2ViQ29yZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MDY1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6IEFkZGVkIFN0cmluZ1V0aWxpdGllcy5oIGFuZCBTdHJpbmdVdGlsaXRpZXMu
bW0KKyAgICAgICAgKiBQbGF0Zm9ybU1hYy5jbWFrZTogQWRkZWQgU3RyaW5nVXRpbGl0aWVzLm1t
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OndpbGRjYXJkUmVnZXhQYXR0ZXJuU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcpOiBBZGRlZC4KKwogMjAxNy0wMy0wMiAg
QWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIENv
bnRpbnVlIGVuYWJsaW5nIFdlYlJUQwpJbmRleDogU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMu
Y21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUGxhdGZvcm1NYWMuY21ha2UJKHJl
dmlzaW9uIDIxMzI5OCkKKysrIFNvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC00ODQsNiArNDg0LDcgQEAgbGlzdChBUFBFTkQgV2ViQ29yZV9TT1VSQ0VT
CiAgICAgcGxhdGZvcm0vbWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFj
L1NvdW5kTWFjLm1tCisgICAgcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQogICAgIHBs
YXRmb3JtL21hYy9TdWRkZW5UZXJtaW5hdGlvbi5tbQogICAgIHBsYXRmb3JtL21hYy9TeXN0ZW1T
bGVlcExpc3RlbmVyTWFjLm1tCiAgICAgcGxhdGZvcm0vbWFjL1RoZW1lTWFjLm1tCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyMTMyOTgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1ODYsNiArNjU4Niw4IEBACiAJCUU1QkE3
RDYzMTUxNDM3Q0EwMEZFMUUzRiAvKiBMZW5ndGhGdW5jdGlvbnMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU1QkE3RDYyMTUxNDM3Q0EwMEZFMUUzRiAv
KiBMZW5ndGhGdW5jdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlFQkY1MTIxQzE2OTY0OTZDMDA1NkJEMjUgLyogSlNUeXBlQ29udmVyc2lv
bnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUJG
NTEyMUExNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmNwcCAqLzsgfTsKIAkJ
RUJGNTEyMUQxNjk2NDk2QzAwNTZCRDI1IC8qIEpTVHlwZUNvbnZlcnNpb25zLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQkY1MTIxQjE2OTY0OTZDMDA1
NkJEMjUgLyogSlNUeXBlQ29udmVyc2lvbnMuaCAqLzsgfTsKKwkJRUNBNjgwQzcxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRUNBNjgwQzYxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxp
dGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CUVDQTY4MEM5MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFQ0E2ODBDODFFNjc3MzBCMDA3
MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovOyB9OwogCQlFQ0NEQjg4MTFFNEI4QzU5MDBB
MUFFQTYgLyogV0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNDREI4ODAxRTRCOEM1OTAwQTFBRUE2IC8q
IFdLQ29udGVudE9ic2VydmF0aW9uSW50ZXJuYWwuaCAqLzsgfTsKIAkJRUNDREI4ODcxRTRCQjYz
RjAwQTFBRUE2IC8qIFdLR3JhcGhpY3NJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRUNDREI4ODYxRTRCQjYzRjAwQTFBRUE2IC8qIFdLR3Jh
cGhpY3NJbnRlcm5hbC5oICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyogRG9j
dW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNDgwMSw2ICsxNDgw
Myw4IEBACiAJCUVCMDgxQ0Q5MTY5NjA4NDQwMDU1MzczMCAvKiBUeXBlQ29udmVyc2lvbnMuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFR5cGVDb252ZXJzaW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUVCRjUxMjFBMTY5NjQ5NkMwMDU2QkQyNSAvKiBKU1R5cGVDb252ZXJzaW9ucy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1R5cGVDb252ZXJzaW9ucy5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVCRjUxMjFCMTY5NjQ5NkMwMDU2QkQyNSAvKiBK
U1R5cGVDb252ZXJzaW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1R5
cGVDb252ZXJzaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQ0E2ODBDNjFF
Njc3MjQ1MDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFN0cmluZ1V0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlFQ0E2ODBDODFFNjc3MzBCMDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFQ0NEQjg4MDFFNEI4QzU5MDBBMUFFQTYgLyog
V0tDb250ZW50T2JzZXJ2YXRpb25JbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBXS0NvbnRlbnRPYnNlcnZhdGlvbkludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUVDQ0RCODg2MUU0QkI2M0YwMEExQUVBNiAvKiBXS0dyYXBoaWNzSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tHcmFwaGljc0ludGVybmFs
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUVEMkJBODNCMDlBMjRCOTEwMDZDMEFD
NCAvKiBEb2N1bWVudE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
b2N1bWVudE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTgyMjYsNiAr
MTgyMzAsOCBAQAogCQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSAqLywKIAkJCQk0QjMwNDNDODBBRTAzNzFEMDBBODI2
NDcgLyogU291bmRNYWMubW0gKi8sCiAJCQkJODRCMkIyNEYwNTZCRjE1RjAwRDJCNzcxIC8qIFNT
TEtleUdlbmVyYXRvck1hYy5tbSAqLywKKwkJCQlFQ0E2ODBDNjFFNjc3MjQ1MDA3MzFEMjAgLyog
U3RyaW5nVXRpbGl0aWVzLmggKi8sCisJCQkJRUNBNjgwQzgxRTY3NzMwQjAwNzMxRDIwIC8qIFN0
cmluZ1V0aWxpdGllcy5tbSAqLywKIAkJCQk5M0IyRDgxNzBGOTkyMEVFMDA2QUU2QjIgLyogU3Vk
ZGVuVGVybWluYXRpb24ubW0gKi8sCiAJCQkJQ0RBMDdGQzAxOEUwQTIyQjAwNDY5OUZBIC8qIFN5
c3RlbVNsZWVwTGlzdGVuZXJNYWMuaCAqLywKIAkJCQlDREEwN0ZCRjE4RTBBMjJCMDA0Njk5RkEg
LyogU3lzdGVtU2xlZXBMaXN0ZW5lck1hYy5tbSAqLywKQEAgLTI3Njg4LDYgKzI3Njk0LDcgQEAK
IAkJCQkzNzFFNjVDQzEzNjYxRURDMDBCRUVEQjAgLyogUGFnZVNlcmlhbGl6ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUxMjg0QUUxMTA0NDdENDUwMEVBRUI1MiAvKiBQYWdlVHJhbnNpdGlvbkV2
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUxRUNDMzBDOTFDOTA0MDBEQzI1NUIgLyogUGFn
ZVVSTFJlY29yZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRUNBNjgwQzcxRTY3NzI0NTAwNzMxRDIw
IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkZENUI5N0IxMzVDQzk3
ODAwRDVFOTJBIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
NzdBQkEwMTVERUZFRUYwMDMxRkQwNCAvKiBQYWdpbmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkwODg1MDY3RjExREEwNDVCMDAxODJCOTggLyogUGFpbnRJbmZvLmggaW4gSGVhZGVycyAqLywK
QEAgLTI5NTU3LDYgKzI5NTY0LDcgQEAKIAkJCQk3QTQ1MDMyRjE4REI3MTcyMDAzNzdCMzQgLyog
QnVmZmVyZWRMaW5lUmVhZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUY1NUIzREFGMTI1MUYx
MkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1
NjlDRjcwRDdFMkI4MjAwN0MzOTgzIC8qIGNfY2xhc3MuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RUNBNjgwQzkxRTY3NzMwQjAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNTY5Q0Y5MEQ3RTJCODIwMDdDMzk4MyAvKiBjX2luc3RhbmNlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBNTY5Q0ZCMEQ3RTJCODIwMDdDMzk4MyAvKiBjX3J1bnRpbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE1NjlDRkQwRDdFMkI4MjAwN0MzOTgzIC8qIGNfdXRpbGl0
eS5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2ltcG9ydCAiUGxhdGZvcm1FeHBvcnRN
YWNyb3MuaCIKKyNpbXBvcnQgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K1dFQkNPUkVfRVhQT1JUIGJvb2wgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKGNvbnN0IFN0
cmluZyYgc3RyaW5nVG9CZU1hdGNoZWQsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRTdHJpbmcpOwor
fQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVz
Lm1tCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiU3RyaW5nVXRpbGl0aWVzLmgiCisKKyNpbXBv
cnQgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KKyNpbXBvcnQgPHlhcnIvUmVndWxhckV4cHJl
c3Npb24uaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIFN0cmluZyB3aWxk
Y2FyZFJlZ2V4UGF0dGVyblN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBTdHJp
bmcgbWV0YUNoYXJhY3RlcnMgPSAiLnwrPygpW117fV4kIjsKKyAgICBVQ2hhciBlc2NhcGVDaGFy
YWN0ZXIgPSAnXFwnOworICAgIFVDaGFyIHdpbGRjYXJkQ2hhcmFjdGVyID0gJyonOworICAgIAor
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKKyAgICAKKyAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZCgnXicpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3Ro
KCk7IGkrKykgeworICAgICAgICBhdXRvIGNoYXJhY3RlciA9IHN0cmluZ1tpXTsKKyAgICAgICAg
aWYgKG1ldGFDaGFyYWN0ZXJzLmNvbnRhaW5zKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09IGVz
Y2FwZUNoYXJhY3RlcikKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGVzY2FwZUNo
YXJhY3Rlcik7CisgICAgICAgIGVsc2UgaWYgKGNoYXJhY3RlciA9PSB3aWxkY2FyZENoYXJhY3Rl
cikKKyAgICAgICAgICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCcuJyk7CisgICAgICAgIAorICAg
ICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChjaGFyYWN0ZXIpOworICAgIH0KKyAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZCgnJCcpOworICAgICAgICAKKyAgICByZXR1cm4gc3RyaW5nQnVpbGRlci50
b1N0cmluZygpOworfQorICAgIAorYm9vbCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IFN0cmluZyYgd2lsZGNhcmRTdHJpbmcpCit7CisgICAg
cmV0dXJuIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRlcm5T
dHJpbmcod2lsZGNhcmRTdHJpbmcpLCBUZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJpbmcp
ICE9IC0xOworfQorCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTMyOTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAx
Ny0wMy0wMiAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
TW92ZSBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcgZnJvbSBXZWJLaXQyIHRvIFdlYkNvcmUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2OTA2NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGxhdGZv
cm0vbWFjL1N0cmluZ1V0aWxpdGllcy5oOiBNb3ZlZCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJp
bmcgdG8gV2ViQ29yZS4KKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6IE1ha2UgU3RyaW5nVXRpbGl0aWVzLmggYSBwcm9qZWN0IGhlYWRlci4KKyAgICAgICAgKiBQ
bGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOgorICAgICAgICAoV2ViS2l0Ojp3aWxkY2Fy
ZFJlZ2V4UGF0dGVyblN0cmluZyk6IE1vdmVkIHRvIFdlYkNvcmUuCisgICAgICAgIChXZWJLaXQ6
OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZyk6IERpdHRvLgorICAgICAgICAqIFdlYlByb2Nl
c3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIuY3BwOiBVc2luZyBzdHJpbmdNYXRjaGVz
V2lsZGNhcmRTdHJpbmcgZnJvbSBXZWJDb3JlLgorCiAyMDE3LTAzLTAyICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udGludWUgZW5hYmxp
bmcgV2ViUlRDCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0
aWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvUGxhdGZvcm0vbWFjL1N0cmluZ1V0
aWxpdGllcy5oCShyZXZpc2lvbiAyMTMyOTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9t
YWMvU3RyaW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFN0cmluZ1V0
aWxpdGllc19oCi0jZGVmaW5lIFN0cmluZ1V0aWxpdGllc19oCisjcHJhZ21hIG9uY2UKIAogI2lt
cG9ydCA8V2ViS2l0L1dLRGVjbGFyYXRpb25TcGVjaWZpZXJzLmg+CiAjaW1wb3J0IDx3dGYvRm9y
d2FyZC5oPgpAQCAtNDAsOCArMzksNCBAQCBOU1N0cmluZyAqZm9ybWF0dGVkUGhvbmVOdW1iZXJT
dHJpbmcoTlNTCiAKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQogCi1XS19FWFBPUlQgYm9v
bCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmdUb0JlTWF0
Y2hlZCwgY29uc3QgU3RyaW5nJiB3aWxkY2FyZFN0cmluZyk7Ci0KIH0KLQotI2VuZGlmIC8vIFN0
cmluZ1V0aWxpdGllc19oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9tYWMvU3RyaW5n
VXRpbGl0aWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL21hYy9T
dHJpbmdVdGlsaXRpZXMubW0JKHJldmlzaW9uIDIxMzI5OCkKKysrIFNvdXJjZS9XZWJLaXQyL1Bs
YXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQwLDM0ICs0
MCw2IEBAIE5TU3RyaW5nICpuc1N0cmluZ0Zyb21XZWJDb3JlU3RyaW5nKGNvbnMKICAgICByZXR1
cm4gc3RyaW5nLmlzRW1wdHkoKSA/IEAiIiA6IENGQnJpZGdpbmdSZWxlYXNlKFdLU3RyaW5nQ29w
eUNGU3RyaW5nKDAsIHRvQVBJKHN0cmluZy5pbXBsKCkpKSk7CiB9CiAKLXN0YXRpYyBTdHJpbmcg
d2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAg
U3RyaW5nIG1ldGFDaGFyYWN0ZXJzID0gIi58Kz8oKVtde31eJCI7Ci0gICAgVUNoYXIgZXNjYXBl
Q2hhcmFjdGVyID0gJ1xcJzsKLSAgICBVQ2hhciB3aWxkY2FyZENoYXJhY3RlciA9ICcqJzsKLQot
ICAgIFN0cmluZ0J1aWxkZXIgc3RyaW5nQnVpbGRlcjsKLQotICAgIHN0cmluZ0J1aWxkZXIuYXBw
ZW5kKCdeJyk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsg
aSsrKSB7Ci0gICAgICAgIGF1dG8gY2hhcmFjdGVyID0gc3RyaW5nW2ldOwotICAgICAgICBpZiAo
bWV0YUNoYXJhY3RlcnMuY29udGFpbnMoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gZXNjYXBl
Q2hhcmFjdGVyKQotICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoZXNjYXBlQ2hhcmFj
dGVyKTsKLSAgICAgICAgZWxzZSBpZiAoY2hhcmFjdGVyID09IHdpbGRjYXJkQ2hhcmFjdGVyKQot
ICAgICAgICAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoJy4nKTsKLQotICAgICAgICBzdHJpbmdC
dWlsZGVyLmFwcGVuZChjaGFyYWN0ZXIpOwotICAgIH0KLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVu
ZCgnJCcpOwotCi0gICAgcmV0dXJuIHN0cmluZ0J1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQotYm9v
bCBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0
IFN0cmluZyYgd2lsZGNhcmRTdHJpbmcpCi17Ci0gICAgcmV0dXJuIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24od2lsZGNhcmRSZWdleFBhdHRlcm5TdHJpbmcod2lsZGNhcmRTdHJpbmcpLCBU
ZXh0Q2FzZUluc2Vuc2l0aXZlKS5tYXRjaChzdHJpbmcpICE9IC0xOwotfQotCiAjaWYgRU5BQkxF
KFRFTEVQSE9ORV9OVU1CRVJfREVURUNUSU9OKSAmJiBQTEFURk9STShNQUMpCiAKIFNPRlRfTElO
S19QUklWQVRFX0ZSQU1FV09SSyhQaG9uZU51bWJlcnMpOwpJbmRleDogU291cmNlL1dlYktpdDIv
V2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzMjk4
KQorKysgU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC01OTIsNyArNTkyLDcgQEAKIAkJMjkzRUJFQUIxNjI3RDlDOTAwNUY4
OUYxIC8qIFdLRE9NVGV4dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMjkzRUJFQTkxNjI3RDlDOTAwNUY4OUYxIC8qIFdLRE9NVGV4dC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTI5M0VCRUFDMTYyN0Q5
QzkwMDVGODlGMSAvKiBXS0RPTVRleHQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAyOTNFQkVBQTE2MjdEOUM5MDA1Rjg5RjEgLyogV0tET01UZXh0Lm1t
ICovOyB9OwogCQkyOTUwMTcyNDE2MkE0NTA0MDA0QTlENzEgLyogV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk1MDE3MjMxNjJBNDUwNDAwNEE5RDcxIC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkyOTZCRDg1RDE1MDE5QkMz
MDA3MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAyOTZCRDg1QjE1MDE5QkMzMDA3MUY0MjQgLyogU3RyaW5nVXRp
bGl0aWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJMjk2QkQ4NUQxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMjk2QkQ4NUIxNTAxOUJDMzAw
NzFGNDI0IC8qIFN0cmluZ1V0aWxpdGllcy5oICovOyB9OwogCQkyOTZCRDg1RTE1MDE5QkMzMDA3
MUY0MjQgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMjk2QkQ4NUMxNTAxOUJDMzAwNzFGNDI0IC8qIFN0cmluZ1V0aWxp
dGllcy5tbSAqLzsgfTsKIAkJMjk4NEY1N0MxNjRCOTE1RjAwNEJDMEM2IC8qIEN1c3RvbVByb3Rv
Y29sTWFuYWdlclByb3h5TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDI5ODRGNTdBMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0
b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTI5ODRG
NTdEMTY0QjkxNUYwMDRCQzBDNiAvKiBDdXN0b21Qcm90b2NvbE1hbmFnZXJQcm94eU1lc3NhZ2Vz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyOTg0RjU3
QjE2NEI5MTVGMDA0QkMwQzYgLyogQ3VzdG9tUHJvdG9jb2xNYW5hZ2VyUHJveHlNZXNzYWdlcy5o
ICovOyB9OwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1dlYlBsdWdp
bkluZm9Qcm92aWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9QbHVnaW5zL1dlYlBsdWdpbkluZm9Qcm92aWRlci5jcHAJKHJldmlzaW9uIDIxMzI5OCkKKysr
IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9XZWJQbHVnaW5JbmZvUHJvdmlkZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nSGFzaC5oPgogCiAjaWYgUExBVEZPUk0oTUFDKQotI2luY2x1ZGUgIlN0cmluZ1V0aWxp
dGllcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUvU3RyaW5nVXRpbGl0aWVzLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpJbmRleDogVG9v
bHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjEz
MzAzKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTctMDMtMDIgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgorCisgICAg
ICAgIE1vdmUgc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nIGZyb20gV2ViS2l0MiB0byBXZWJD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjkw
NjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBNb3Zl
ZCBTdHJpbmdVdGlsaXRpZXMubW0KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU3RyaW5nVXRpbGl0aWVzLm1tOiBDb3BpZWQgZnJvbSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDIvbWFjL1N0cmluZ1V0aWxpdGllcy5tbS4KKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9tYWMvU3Ry
aW5nVXRpbGl0aWVzLm1tOiBSZW1vdmVkLgorCiAyMDE3LTAzLTAyICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgQ29udGludWUgZW5hYmxpbmcg
V2ViUlRDCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjEzMjk4KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHdvcmtpbmcgY29weSkKQEAgLTQ0MSw3ICs0NDEsNiBAQAogCQk4MzVDRjk2NzFEMjVGQ0Q2
MDAxQTY1RDQgLyogUmVzdG9yZVNlc3Npb25TdGF0ZVdpdGhvdXROYXZpZ2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDgzNUNGOTY2MUQyNUZD
RDYwMDFBNjVENCAvKiBSZXN0b3JlU2Vzc2lvblN0YXRlV2l0aG91dE5hdmlnYXRpb24uY3BwICov
OyB9OwogCQk4MzYxRjE3ODFFNjEwQjRFMDA3NTlCMjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0
dHJpYnV0ZS13aXRoLXNsYXNoZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzYxRjE3NzFFNjEwQjIxMDA3NTlCMjUgLyogbGluay13
aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS13aXRoLXNsYXNoZXMuaHRtbCAqLzsgfTsKIAkJODM3QTM1
RjExRDlBMUU3RDAwNjYzQzU3IC8qIERvd25sb2FkUmVxdWVzdEJsb2JVUkwuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4MzdBMzVGMDFE
OUExRTY0MDA2NjNDNTcgLyogRG93bmxvYWRSZXF1ZXN0QmxvYlVSTC5odG1sICovOyB9OwotCQk4
M0NGMUMzMDFDNEYxQjhCMDA2ODg0NDcgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODNDRjFDMkMxQzRGMTlBRTAwNjg4
NDQ3IC8qIFN0cmluZ1V0aWxpdGllcy5tbSAqLzsgfTsKIAkJOEU0QTg1MzcxRTFEMUFCMjAwRjUz
QjBGIC8qIEdyaWRQb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA4RTRBODUzNjFFMUQxQUExMDBGNTNCMEYgLyogR3JpZFBvc2l0aW9uLmNw
cCAqLzsgfTsKIAkJOTMwQUQ0MDIxNTA2OThEMDAwNjc5NzBGIC8qIGxvdHMtb2YtdGV4dC5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
MEFENDAxMTUwNjk4QjMwMDY3OTcwRiAvKiBsb3RzLW9mLXRleHQuaHRtbCAqLzsgfTsKIAkJOTMy
OUFBMjkxREUzRjgxRTAwM0FCRDA3IC8qIFRleHRCcmVha0l0ZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMjlBQTI4MURFM0Y4MUUwMDNB
QkQwNyAvKiBUZXh0QnJlYWtJdGVyYXRvci5jcHAgKi87IH07CkBAIC01NjAsNiArNTU5LDcgQEAK
IAkJRDM0RTA4NzYxRTRFNDJFMTAwNUZGMTRBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRDNCRTVFMzQxRTRD
RTg1RTAwRkQ1NjNBIC8qIFdLV2ViVmlld0dldENvbnRlbnRzLm1tICovOyB9OwogCQlFMTIyMERD
QTE1NUIyOEFBMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxlV2l0aGluUmVzb3VyY2VMb2Fk
RGVsZWdhdGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFMTIyMERDOTE1NUIyODdEMDAxM0UyRkMgLyogTWVtb3J5Q2FjaGVEaXNhYmxl
V2l0aGluUmVzb3VyY2VMb2FkRGVsZWdhdGUuaHRtbCAqLzsgfTsKIAkJRTE5NEUxQkQxNzdFNTND
NzAwOUM0RDRFIC8qIFN0b3BMb2FkaW5nRnJvbURpZFJlY2VpdmVSZXNwb25zZS5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxOTRFMUJD
MTc3RTUzNEEwMDlDNEQ0RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRt
bCAqLzsgfTsKKwkJRUNBNjgwQ0UxRTY4Q0MwOTAwNzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVDQTY4MENE
MUU2OENDMDkwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi87IH07CiAJCUY0MTUwODZE
MURBMDQwQzUwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQxNTA4NkMxREEwNDBD
MTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRtbCAqLzsgfTsKIAkJRjQyREE1MTYx
RDhDRUZFNDAwMzM2RjQwIC8qIGxhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0MkRB
NTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRt
bCAqLzsgfTsKIAkJRjQ3NzI4OTkxRTRBRTNDMTAwN0FCRjZBIC8qIGZ1bGwtcGFnZS1jb250ZW50
ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNDc3Mjg5ODFFNEFFM0FEMDA3QUJGNkEgLyogZnVsbC1wYWdlLWNvbnRlbnRl
ZGl0YWJsZS5odG1sICovOyB9OwpAQCAtMTE1Niw3ICsxMTU2LDYgQEAKIAkJODM2MUYxNzcxRTYx
MEIyMTAwNzU5QjI1IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUtd2l0aC1zbGFzaGVz
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAibGluay13aXRoLWRvd25sb2FkLWF0
dHJpYnV0ZS13aXRoLXNsYXNoZXMuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTgzN0EzNUYwMUQ5QTFFNjQwMDY2M0M1NyAvKiBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBEb3dubG9hZFJlcXVlc3RCbG9iVVJMLmh0bWw7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTgzQjg4QTMzMUM4MDA1NkQwMEJCMjQxOCAv
KiBIVE1MUGFyc2VySWRpb21zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEhUTUxQYXJzZXJJZGlvbXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4
M0NGMUMyQzFDNEYxOUFFMDA2ODg0NDcgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk4NkJEMTk5NzFBMkRCMDVCMDA2RENGMEEgLyogUmVmQ291
bnRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWZDb3VudGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOEEyQzc1MEQxNkNFRDk1NTAwMjRG
MzUyIC8qIFJlc2l6ZVdpbmRvd0FmdGVyQ3Jhc2guY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUmVzaXplV2luZG93QWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCThBM0FGOTNBMTZDOUVEMjcwMEQyNDhDMSAvKiBSZWxvYWRQYWdlQWZ0
ZXJDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWxvYWRQ
YWdlQWZ0ZXJDcmFzaC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzk4LDYg
KzEzOTcsNyBAQAogCQlFNDkwMjk2NzE0RTJFM0E0MDAyQkVERDEgLyogVHlwaW5nU3R5bGVDcmFz
aC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFR5cGluZ1N0eWxl
Q3Jhc2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QTc1N0QzMTc4QUVBNUIw
MEI1RDdBNCAvKiBEZXF1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEZXF1ZS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUU0QzlBQkM3MUIzREIxNzEwMDQwQTk4NyAvKiBSdW5M
b29wLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJ1bkxvb3AuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFEMjAg
LyogU3RyaW5nVXRpbGl0aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gU3RyaW5nVXRpbGl0aWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
M0ZDM0VFMjEzNjc4QjczMDAxMjZBNjUgLyogbGliZ3Rlc3QuYSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGFyY2hpdmUuYXI7IHBhdGggPSBsaWJndGVz
dC5hOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQlGNDE1MDg2QzFEQTA0
MEMxMDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInBsYXktYXVkaW8tb24tY2xpY2suaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0MkRBNTE1MUQ4Q0VGREIwMDMzNkY0MCAvKiBsYXJnZS1pbnB1dC1maWVs
ZC1mb2N1cy1vbmxvYWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9ICJsYXJnZS1p
bnB1dC1maWVsZC1mb2N1cy1vbmxvYWQuaHRtbCI7IHBhdGggPSAiVGVzdHMvV2ViS2l0MkNvY29h
L2xhcmdlLWlucHV0LWZpZWxkLWZvY3VzLW9ubG9hZC5odG1sIjsgc291cmNlVHJlZSA9IFNPVVJD
RV9ST09UOyB9OwpAQCAtMTY5MCw2ICsxNjkwLDcgQEAKIAkJCQk0MTk3M0I1QzFBRjIyODc1MDA2
QzdCMzYgLyogU2hhcmVkQnVmZmVyLmNwcCAqLywKIAkJCQlBMTc5OTE4OTFFMUNBMjQxMDBBNTA1
RUQgLyogU2hhcmVkQnVmZmVyVGVzdC5jcHAgKi8sCiAJCQkJQTE3OTkxOEExRTFDQTI0MTAwQTUw
NUVEIC8qIFNoYXJlZEJ1ZmZlclRlc3QuaCAqLywKKwkJCQlFQ0E2ODBDRDFFNjhDQzA5MDA3MzFE
MjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLAogCQkJCUNEQzJDNzE0MTc5NzA4OUQwMEU2MjdG
QiAvKiBUaW1lUmFuZ2VzLmNwcCAqLywKIAkJCQk3QUQzRkU4RDFENzVGQjhEMDBCMTY5QTQgLyog
VHJhbnNmb3JtYXRpb25NYXRyaXguY3BwICovLAogCQkJCTQ0MEExRDM4MTRBMDEwM0EwMDhBNjZG
MiAvKiBVUkwuY3BwICovLApAQCAtMjMwNSw3ICsyMzA2LDYgQEAKIAkJCQlDMEM1RDNCQzE0NTk4
QjZGMDBBODAyQTYgLyogR2V0QmFja2luZ1NjYWxlRmFjdG9yLm1tICovLAogCQkJCUMwQzVEM0JE
MTQ1OThCNkYwMEE4MDJBNiAvKiBHZXRCYWNraW5nU2NhbGVGYWN0b3JfQnVuZGxlLm1tICovLAog
CQkJCTFBRUY5OTQ4MTdBMDlGNTMwMDk5OEVGMCAvKiBHZXRQSURBZnRlckFib3J0ZWRQcm9jZXNz
TGF1bmNoLmNwcCAqLywKLQkJCQk4M0NGMUMyQzFDNEYxOUFFMDA2ODg0NDcgLyogU3RyaW5nVXRp
bGl0aWVzLm1tICovLAogCQkJKTsKIAkJCXBhdGggPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMjgxOSw3ICsyODE5LDYgQEAKIAkJCQk1MTVCRTE3MTFENDI4RTRCMDBERDdD
NjggLyogU3RvcmVCbG9iVGhlbkRlbGV0ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQw
MUE0MTFBN0UwMDQ0N0M0QyAvKiBTdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmlu
Zy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQxMUE0MTFBN0UwMDQ0N0M0QyAvKiBTdHJp
bmdUcnVuY2F0b3IubW0gaW4gU291cmNlcyAqLywKLQkJCQk4M0NGMUMzMDFDNEYxQjhCMDA2ODg0
NDcgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDIxQTQx
MUE3RTAwNDQ3QzRDIC8qIFN1YnJlc291cmNlRXJyb3JDcmFzaC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RUE4MUE0MTFBMTkwMDQ0N0M0QyAvKiBTeW50aGV0aWNCYWNraW5nU2NhbGVGYWN0
b3JXaW5kb3cubSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjE2MUE0MTFBRTYwMDQ0N0M0QyAv
KiBUZXJtaW5hdGVUd2ljZS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI4NTMsNiArMjg1Miw3IEBA
CiAJCQkJMkQ0Q0Y4QkQxRDgzNjBDQzAwMDFDRThEIC8qIFdLVGh1bWJuYWlsVmlldy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMDRDMUQwQTY0MTgwMEZFQkNGMyAvKiBXZWJDb3JlTlNVUkxT
ZXNzaW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RDRkE3QUExRTQ1MTgzMjAwQzI0MzNEIC8q
IFNhbXBsZU1hcC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlFQ0E2ODBDRTFFNjhDQzA5MDA3MzFE
MjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMUExQTQx
MUFFNjAwNDQ3QzRDIC8qIFdlYkNvcmVTdGF0aXN0aWNzV2l0aE5vV2ViUHJvY2Vzcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0VBQjFBNDExQTI0MDA0NDdDNEMgLyogV2ViS2l0QWdub3N0
aWNUZXN0Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNTEyMEM4M0QxRTY3NTEyOTAwMjVCMjUwIC8q
IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N0cmluZ1V0aWxpdGllcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nVXRpbGl0aWVz
Lm1tCShyZXZpc2lvbiAyMTMyOTgpCShmcm9tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Mi9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tOjIxMzI5OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViQ29yZS9TdHJpbmdVdGlsaXRpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2ltcG9ydCA8
V2ViS2l0L1N0cmluZ1V0aWxpdGllcy5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworVEVTVChXZWJLaXQyLCBXaWxkY2FyZFN0
cmluZ01hdGNoaW5nKQoreworICAgIFN0cmluZyB3aWxkY2FyZFN0cmluZyA9ICJhKmIiOworICAg
IEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWFhYmIi
LCAiYSpiIikpOworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJiYSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAg
RVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCIiLCB3aWxk
Y2FyZFN0cmluZykpOworICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktp
dDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJiIiwgd2lsZGNhcmRTdHJpbmcpKTsKKwor
ICAgIHdpbGRjYXJkU3RyaW5nID0gImFhYmIiOworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3Ry
aW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJiIiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBF
WFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImEqYiIsIHdp
bGRjYXJkU3RyaW5nKSk7CisKKyAgICB3aWxkY2FyZFN0cmluZyA9ICIqYXBwbGUqIjsKKyAgICBF
WFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiZnJlc2hhcHBs
ZSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcoImFwcGxlZnJlc2giLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVY
UEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmcmVzaGFwcGxl
ZnJlc2giLCB3aWxkY2FyZFN0cmluZykpOworCisgICAgd2lsZGNhcmRTdHJpbmcgPSAiYSpiKmMi
OworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJh
YWJiY2MiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmlu
Z01hdGNoZXNXaWxkY2FyZFN0cmluZygiYmNhIiwgd2lsZGNhcmRTdHJpbmcpKTsKKworICAgIHdp
bGRjYXJkU3RyaW5nID0gIiouZXhhbXBsZSouY29tLyoiOworICAgIEVYUEVDVF9UUlVFKFdlYktp
dDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmb29kLmV4YW1wbGVoZWxsby5jb20vIiwg
d2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNX
aWxkY2FyZFN0cmluZygiZm9vZC5leGFtcGxlLmNvbS9iYXIuaHRtbCIsIHdpbGRjYXJkU3RyaW5n
KSk7CisgICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmco
ImZvby5iYXIuZXhhbXBsZS5jb20vaGVsbG8/cXVlcnkjZnJhZ21lbnQuaHRtbCIsIHdpbGRjYXJk
U3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKCJmb29kLmV4YW1wbGUuY29tIiwgd2lsZGNhcmRTdHJpbmcpKTsKKworICAgIHdpbGRj
YXJkU3RyaW5nID0gImEqYi5iKmMiOworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0
Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJiLmJiY2MiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVY
UEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFiYmNiYmNj
Iiwgd2lsZGNhcmRTdHJpbmcpKTsKKworICAgIHdpbGRjYXJkU3RyaW5nID0gImErYiI7CisgICAg
RVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImErYiIsIHdp
bGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dp
bGRjYXJkU3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7CisKKyAgICB3aWxkY2FyZFN0cmlu
ZyA9ICIoYSopYiBhYSI7CisgICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2ls
ZGNhcmRTdHJpbmcoIihhYWEpYiBhYSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZB
TFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWIgYWEiLCB3aWxkY2Fy
ZFN0cmluZykpOworCisgICAgd2lsZGNhcmRTdHJpbmcgPSAiYXxjIjsKKyAgICBFWFBFQ1RfVFJV
RShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYXxjIiwgd2lsZGNhcmRTdHJp
bmcpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJp
bmcoImFiYyIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3Ry
aW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhIiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBF
Q1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImMiLCB3aWxkY2Fy
ZFN0cmluZykpOworCisgICAgd2lsZGNhcmRTdHJpbmcgPSAiKGErfGIpKiI7CisgICAgRVhQRUNU
X1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoIihhK3xiKWFjY2EiLCAi
KGErfGIpKiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoImFiIiwgIihhK3xiKSoiKSk7CisKKyAgICB3aWxkY2FyZFN0cmluZyA9ICJhWy1d
P2MiOworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5n
KCJhWy1dP2MiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0
cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWMiLCB3aWxkY2FyZFN0cmluZykpOworCisgICAg
RVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJoZWxsbyIs
ICJeaGVsbG8kIikpOworICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRj
YXJkU3RyaW5nKCIgIiwgIiAiKSk7CisgICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcoIl4kIiwgIl4kIikpOworICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6
OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIsICJhezF9IikpOworCisgICAgLy8gc3Ry
aW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nIHNob3VsZCBvbmx5IG1hdGNoIHRoZSBlbnRpcmUgc3Ry
aW5nLgorICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmlu
ZygiYWFiYmFhYmIiLCAiYWFiYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdN
YXRjaGVzV2lsZGNhcmRTdHJpbmcoImFhYmJcbmFhYmIiLCAiYWFiYiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImJhYiIsICJhKiIpKTsK
KyAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImJh
YiIsICIqYSIpKTsKKyAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoImJhYiIsICJhKmIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5n
TWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYmNkIiwgImIqYyIpKTsKK30KKworfQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1N0cmluZ1V0aWxpdGllcy5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvU3RyaW5nVXRpbGl0aWVz
Lm1tCShyZXZpc2lvbiAyMTMyOTgpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNv
cmUvU3RyaW5nVXRpbGl0aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw3OCArMjUsODAgQEAK
IAogI2ltcG9ydCAiY29uZmlnLmgiCiAKLSNpbXBvcnQgPFdlYktpdC9TdHJpbmdVdGlsaXRpZXMu
aD4KKyNpbXBvcnQgPFdlYkNvcmUvU3RyaW5nVXRpbGl0aWVzLmg+CiAjaW1wb3J0IDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKIG5hbWVzcGFjZSBU
ZXN0V2ViS2l0QVBJIHsKIAotVEVTVChXZWJLaXQyLCBXaWxkY2FyZFN0cmluZ01hdGNoaW5nKQor
VEVTVChXZWJDb3JlLCBXaWxkY2FyZFN0cmluZ01hdGNoaW5nKQogewogICAgIFN0cmluZyB3aWxk
Y2FyZFN0cmluZyA9ICJhKmIiOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCJhYWFhYmIiLCAiYSpiIikpOwotICAgIEVYUEVDVF9UUlVFKFdlYktp
dDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0g
ICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJiYSIs
IHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCIiLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShX
ZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIsIHdpbGRjYXJkU3RyaW5nKSk7
Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJi
Iiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoImFhYWFiYiIsICJhKmIiKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNF
KHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYmEiLCB3aWxkY2FyZFN0cmluZykpOworICAg
IEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoIiIsIHdpbGRjYXJkU3Ry
aW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIs
IHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2Fy
ZFN0cmluZygiYiIsIHdpbGRjYXJkU3RyaW5nKSk7CiAKICAgICB3aWxkY2FyZFN0cmluZyA9ICJh
YWJiIjsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmlu
ZygiYWFiYiIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3Ry
aW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhKmIiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVY
UEVDVF9UUlVFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFiYiIsIHdpbGRjYXJkU3Ry
aW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSpi
Iiwgd2lsZGNhcmRTdHJpbmcpKTsKIAogICAgIHdpbGRjYXJkU3RyaW5nID0gIiphcHBsZSoiOwot
ICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmcmVz
aGFwcGxlIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmlu
Z01hdGNoZXNXaWxkY2FyZFN0cmluZygiYXBwbGVmcmVzaCIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0g
ICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImZyZXNo
YXBwbGVmcmVzaCIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nTWF0
Y2hlc1dpbGRjYXJkU3RyaW5nKCJmcmVzaGFwcGxlIiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBF
WFBFQ1RfVFJVRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFwcGxlZnJlc2giLCB3aWxk
Y2FyZFN0cmluZykpOworICAgIEVYUEVDVF9UUlVFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmlu
ZygiZnJlc2hhcHBsZWZyZXNoIiwgd2lsZGNhcmRTdHJpbmcpKTsKIAogICAgIHdpbGRjYXJkU3Ry
aW5nID0gImEqYipjIjsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYWFiYmNjIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
V2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImJjYSIsIHdpbGRjYXJkU3RyaW5n
KSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJiY2Mi
LCB3aWxkY2FyZFN0cmluZykpOworICAgIEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoImJjYSIsIHdpbGRjYXJkU3RyaW5nKSk7CiAKICAgICB3aWxkY2FyZFN0cmluZyA9
ICIqLmV4YW1wbGUqLmNvbS8qIjsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNo
ZXNXaWxkY2FyZFN0cmluZygiZm9vZC5leGFtcGxlaGVsbG8uY29tLyIsIHdpbGRjYXJkU3RyaW5n
KSk7Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmco
ImZvb2QuZXhhbXBsZS5jb20vYmFyLmh0bWwiLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVD
VF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmb28uYmFyLmV4YW1w
bGUuY29tL2hlbGxvP3F1ZXJ5I2ZyYWdtZW50Lmh0bWwiLCB3aWxkY2FyZFN0cmluZykpOwotICAg
IEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiZm9vZC5l
eGFtcGxlLmNvbSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nTWF0
Y2hlc1dpbGRjYXJkU3RyaW5nKCJmb29kLmV4YW1wbGVoZWxsby5jb20vIiwgd2lsZGNhcmRTdHJp
bmcpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImZvb2Qu
ZXhhbXBsZS5jb20vYmFyLmh0bWwiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVYUEVDVF9UUlVF
KHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiZm9vLmJhci5leGFtcGxlLmNvbS9oZWxsbz9x
dWVyeSNmcmFnbWVudC5odG1sIiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmb29kLmV4YW1wbGUuY29tIiwgd2lsZGNhcmRT
dHJpbmcpKTsKIAogICAgIHdpbGRjYXJkU3RyaW5nID0gImEqYi5iKmMiOwotICAgIEVYUEVDVF9U
UlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJiLmJiY2MiLCB3aWxk
Y2FyZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYWFiYmNiYmNjIiwgd2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJV
RShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFhYmIuYmJjYyIsIHdpbGRjYXJkU3RyaW5n
KSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFiYmNi
YmNjIiwgd2lsZGNhcmRTdHJpbmcpKTsKIAogICAgIHdpbGRjYXJkU3RyaW5nID0gImErYiI7Ci0g
ICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImErYiIs
IHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUo
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhK2IiLCB3aWxkY2FyZFN0cmluZykpOworICAg
IEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFiIiwgd2lsZGNhcmRT
dHJpbmcpKTsKIAogICAgIHdpbGRjYXJkU3RyaW5nID0gIihhKiliIGFhIjsKLSAgICBFWFBFQ1Rf
VFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiKGFhYSliIGFhIiwgd2ls
ZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2ls
ZGNhcmRTdHJpbmcoImFhYiBhYSIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUo
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCIoYWFhKWIgYWEiLCB3aWxkY2FyZFN0cmluZykp
OworICAgIEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFhYiBhYSIs
IHdpbGRjYXJkU3RyaW5nKSk7CiAKICAgICB3aWxkY2FyZFN0cmluZyA9ICJhfGMiOwotICAgIEVY
UEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhfGMiLCB3aWxk
Y2FyZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYWJjIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1RfRkFMU0UoV2Vi
S2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImEiLCB3aWxkY2FyZFN0cmluZykpOwot
ICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYyIs
IHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX1RSVUUoc3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKCJhfGMiLCB3aWxkY2FyZFN0cmluZykpOworICAgIEVYUEVDVF9GQUxTRShzdHJpbmdN
YXRjaGVzV2lsZGNhcmRTdHJpbmcoImFiYyIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNU
X0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIsIHdpbGRjYXJkU3RyaW5nKSk7
CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYyIsIHdpbGRj
YXJkU3RyaW5nKSk7CiAKICAgICB3aWxkY2FyZFN0cmluZyA9ICIoYSt8YikqIjsKLSAgICBFWFBF
Q1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiKGErfGIpYWNjYSIs
ICIoYSt8YikqIikpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYWIiLCAiKGErfGIpKiIpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcoIihhK3xiKWFjY2EiLCAiKGErfGIpKiIpKTsKKyAgICBFWFBFQ1Rf
RkFMU0Uoc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYiIsICIoYSt8YikqIikpOwogCiAg
ICAgd2lsZGNhcmRTdHJpbmcgPSAiYVstXT9jIjsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0
cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYVstXT9jIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFjIiwg
d2lsZGNhcmRTdHJpbmcpKTsKKyAgICBFWFBFQ1RfVFJVRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRT
dHJpbmcoImFbLV0/YyIsIHdpbGRjYXJkU3RyaW5nKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmlu
Z01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWMiLCB3aWxkY2FyZFN0cmluZykpOwogCi0gICAgRVhQ
RUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJoZWxsbyIsICJe
aGVsbG8kIikpOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKCIgIiwgIiAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVz
V2lsZGNhcmRTdHJpbmcoIl4kIiwgIl4kIikpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0
cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIsICJhezF9IikpOworICAgIEVYUEVDVF9GQUxT
RShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImhlbGxvIiwgIl5oZWxsbyQiKSk7CisgICAg
RVhQRUNUX1RSVUUoc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCIgIiwgIiAiKSk7CisgICAg
RVhQRUNUX1RSVUUoc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJeJCIsICJeJCIpKTsKKyAg
ICBFWFBFQ1RfRkFMU0Uoc3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhIiwgImF7MX0iKSk7
CiAKICAgICAvLyBzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcgc2hvdWxkIG9ubHkgbWF0Y2gg
dGhlIGVudGlyZSBzdHJpbmcuCi0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCJhYWJiYWFiYiIsICJhYWJiIikpOwotICAgIEVYUEVDVF9GQUxTRShX
ZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFiYlxuYWFiYiIsICJhYWJiIikp
OwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygi
YmFiIiwgImEqIikpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiYmFiIiwgIiphIikpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmlu
Z01hdGNoZXNXaWxkY2FyZFN0cmluZygiYmFiIiwgImEqYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0Uo
V2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFiY2QiLCAiYipjIikpOworICAg
IEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImFhYmJhYWJiIiwgImFh
YmIiKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFi
YlxuYWFiYiIsICJhYWJiIikpOworICAgIEVYUEVDVF9GQUxTRShzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoImJhYiIsICJhKiIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RyaW5nTWF0Y2hlc1dp
bGRjYXJkU3RyaW5nKCJiYWIiLCAiKmEiKSk7CisgICAgRVhQRUNUX0ZBTFNFKHN0cmluZ01hdGNo
ZXNXaWxkY2FyZFN0cmluZygiYmFiIiwgImEqYiIpKTsKKyAgICBFWFBFQ1RfRkFMU0Uoc3RyaW5n
TWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYmNkIiwgImIqYyIpKTsKIH0KIAogfQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL21hYy9TdHJpbmdV
dGlsaXRpZXMubW0JKHJldmlzaW9uIDIxMzI5OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Mi9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCShub25leGlzdGVudCkKQEAgLTEsMTAy
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
Ci0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgot
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW1wb3J0ICJjb25maWcuaCIKLQotI2ltcG9ydCA8V2Vi
S2l0L1N0cmluZ1V0aWxpdGllcy5oPgotI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotVEVTVChXZWJLaXQyLCBXaWxkY2FyZFN0cmlu
Z01hdGNoaW5nKQotewotICAgIFN0cmluZyB3aWxkY2FyZFN0cmluZyA9ICJhKmIiOwotICAgIEVY
UEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWFhYmIiLCAi
YSpiIikpOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3Ry
aW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3Ry
aW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJiYSIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQ
RUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCIiLCB3aWxkY2Fy
ZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2Fy
ZFN0cmluZygiYSIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJiIiwgd2lsZGNhcmRTdHJpbmcpKTsKLQotICAg
IHdpbGRjYXJkU3RyaW5nID0gImFhYmIiOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5n
TWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJiIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBF
Q1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImEqYiIsIHdpbGRj
YXJkU3RyaW5nKSk7Ci0KLSAgICB3aWxkY2FyZFN0cmluZyA9ICIqYXBwbGUqIjsKLSAgICBFWFBF
Q1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiZnJlc2hhcHBsZSIs
IHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVz
V2lsZGNhcmRTdHJpbmcoImFwcGxlZnJlc2giLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVD
VF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmcmVzaGFwcGxlZnJl
c2giLCB3aWxkY2FyZFN0cmluZykpOwotCi0gICAgd2lsZGNhcmRTdHJpbmcgPSAiYSpiKmMiOwot
ICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWJi
Y2MiLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01h
dGNoZXNXaWxkY2FyZFN0cmluZygiYmNhIiwgd2lsZGNhcmRTdHJpbmcpKTsKLQotICAgIHdpbGRj
YXJkU3RyaW5nID0gIiouZXhhbXBsZSouY29tLyoiOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6
c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJmb29kLmV4YW1wbGVoZWxsby5jb20vIiwgd2ls
ZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1RfVFJVRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxk
Y2FyZFN0cmluZygiZm9vZC5leGFtcGxlLmNvbS9iYXIuaHRtbCIsIHdpbGRjYXJkU3RyaW5nKSk7
Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImZv
by5iYXIuZXhhbXBsZS5jb20vaGVsbG8/cXVlcnkjZnJhZ21lbnQuaHRtbCIsIHdpbGRjYXJkU3Ry
aW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3Ry
aW5nKCJmb29kLmV4YW1wbGUuY29tIiwgd2lsZGNhcmRTdHJpbmcpKTsKLQotICAgIHdpbGRjYXJk
U3RyaW5nID0gImEqYi5iKmMiOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hl
c1dpbGRjYXJkU3RyaW5nKCJhYWJiLmJiY2MiLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVD
VF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWFiYmNiYmNjIiwg
d2lsZGNhcmRTdHJpbmcpKTsKLQotICAgIHdpbGRjYXJkU3RyaW5nID0gImErYiI7Ci0gICAgRVhQ
RUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImErYiIsIHdpbGRj
YXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRj
YXJkU3RyaW5nKCJhYiIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0KLSAgICB3aWxkY2FyZFN0cmluZyA9
ICIoYSopYiBhYSI7Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNh
cmRTdHJpbmcoIihhYWEpYiBhYSIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNF
KFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYWIgYWEiLCB3aWxkY2FyZFN0
cmluZykpOwotCi0gICAgd2lsZGNhcmRTdHJpbmcgPSAiYXxjIjsKLSAgICBFWFBFQ1RfVFJVRShX
ZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYXxjIiwgd2lsZGNhcmRTdHJpbmcp
KTsKLSAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmco
ImFiYyIsIHdpbGRjYXJkU3RyaW5nKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5n
TWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJhIiwgd2lsZGNhcmRTdHJpbmcpKTsKLSAgICBFWFBFQ1Rf
RkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImMiLCB3aWxkY2FyZFN0
cmluZykpOwotCi0gICAgd2lsZGNhcmRTdHJpbmcgPSAiKGErfGIpKiI7Ci0gICAgRVhQRUNUX1RS
VUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoIihhK3xiKWFjY2EiLCAiKGEr
fGIpKiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRT
dHJpbmcoImFiIiwgIihhK3xiKSoiKSk7Ci0KLSAgICB3aWxkY2FyZFN0cmluZyA9ICJhWy1dP2Mi
OwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJh
Wy1dP2MiLCB3aWxkY2FyZFN0cmluZykpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmlu
Z01hdGNoZXNXaWxkY2FyZFN0cmluZygiYWMiLCB3aWxkY2FyZFN0cmluZykpOwotCi0gICAgRVhQ
RUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJkU3RyaW5nKCJoZWxsbyIsICJe
aGVsbG8kIikpOwotICAgIEVYUEVDVF9UUlVFKFdlYktpdDo6c3RyaW5nTWF0Y2hlc1dpbGRjYXJk
U3RyaW5nKCIgIiwgIiAiKSk7Ci0gICAgRVhQRUNUX1RSVUUoV2ViS2l0OjpzdHJpbmdNYXRjaGVz
V2lsZGNhcmRTdHJpbmcoIl4kIiwgIl4kIikpOwotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0
cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygiYSIsICJhezF9IikpOwotCi0gICAgLy8gc3RyaW5n
TWF0Y2hlc1dpbGRjYXJkU3RyaW5nIHNob3VsZCBvbmx5IG1hdGNoIHRoZSBlbnRpcmUgc3RyaW5n
LgotICAgIEVYUEVDVF9GQUxTRShXZWJLaXQ6OnN0cmluZ01hdGNoZXNXaWxkY2FyZFN0cmluZygi
YWFiYmFhYmIiLCAiYWFiYiIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRj
aGVzV2lsZGNhcmRTdHJpbmcoImFhYmJcbmFhYmIiLCAiYWFiYiIpKTsKLSAgICBFWFBFQ1RfRkFM
U0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImJhYiIsICJhKiIpKTsKLSAg
ICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRTdHJpbmcoImJhYiIs
ICIqYSIpKTsKLSAgICBFWFBFQ1RfRkFMU0UoV2ViS2l0OjpzdHJpbmdNYXRjaGVzV2lsZGNhcmRT
dHJpbmcoImJhYiIsICJhKmIiKSk7Ci0gICAgRVhQRUNUX0ZBTFNFKFdlYktpdDo6c3RyaW5nTWF0
Y2hlc1dpbGRjYXJkU3RyaW5nKCJhYmNkIiwgImIqYyIpKTsKLX0KLQotfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>