<?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>39571</bug_id>
          
          <creation_ts>2010-05-23 14:02:05 -0700</creation_ts>
          <short_desc>Teach the HTML5 parser to lex DOCTYPEs</short_desc>
          <delta_ts>2010-05-24 15:06:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>39259</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229504</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-23 14:02:05 -0700</bug_when>
    <thetext>Teach the HTML5 parser to lex DOCTYPEs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229505</commentid>
    <comment_count>1</comment_count>
      <attachid>56828</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-23 14:02:25 -0700</bug_when>
    <thetext>Created attachment 56828
Work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229531</commentid>
    <comment_count>2</comment_count>
      <attachid>56836</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-23 16:05:44 -0700</bug_when>
    <thetext>Created attachment 56836
more work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229897</commentid>
    <comment_count>3</comment_count>
      <attachid>56923</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-24 14:08:29 -0700</bug_when>
    <thetext>Created attachment 56923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229900</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 14:11:32 -0700</bug_when>
    <thetext>Attachment 56923 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/HTML5Lexer.cpp:890:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/html/HTML5Lexer.cpp:1072:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/html/HTML5Lexer.cpp:1085:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229908</commentid>
    <comment_count>5</comment_count>
      <attachid>56923</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-24 14:26:14 -0700</bug_when>
    <thetext>Comment on attachment 56923
Patch

WebCore/html/HTML5Lexer.cpp:891
 +                      source.advanceAndASSERTIgnoringCase(&apos;d&apos;);
Seems it would be simple to write a little helper method (static inline) which did:

static inline void advanceAndASSERTIgnoringCase(SegmentedString&amp; string, char* assertionString)
{
    for (int x = 0;; x++) {
        if (!assertionString[x])
             return;
        string.advanceAndASSERTIngoringCase(assertionString[x]);
     }
}

That would read much cleaner in the callsites.

WebCore/html/HTML5TreeBuilder.cpp:100
 +      if (token.type() == HTML5Token::Uninitialized)
This seems wrong.

WebCore/platform/text/SegmentedString.h:154
 +      void advanceAndASSERTIgnoringCase(UChar expectedCharacter)
We may just want to turn this into a static inline in HTML5Lexer.cpp instead.

I think we need one more round.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229922</commentid>
    <comment_count>6</comment_count>
      <attachid>56932</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-24 14:52:54 -0700</bug_when>
    <thetext>Created attachment 56932
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229925</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 14:55:01 -0700</bug_when>
    <thetext>Attachment 56932 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/html/HTML5Lexer.cpp:900:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/html/HTML5Lexer.cpp:1077:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
WebCore/html/HTML5Lexer.cpp:1085:  An else if statement should be written as an if statement when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Total errors found: 3 in 8 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229927</commentid>
    <comment_count>8</comment_count>
      <attachid>56932</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-24 14:58:38 -0700</bug_when>
    <thetext>Comment on attachment 56932
Patch

Would be nice if we had a version of this which took a const String&amp; so we didn&apos;t have to write &quot;public&quot; twice:

 1078                         advanceStringAndASSERTIgnoringCase(source, &quot;public&quot;);


othewrise looks good.

Seems silly to intentionally violate style just to match the spec wording.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229930</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-24 15:00:44 -0700</bug_when>
    <thetext>&gt; Would be nice if we had a version of this which took a const String&amp; so we didn&apos;t have to write &quot;public&quot; twice:

This might be a premature optimization, but I&apos;m worried about all the string null checks...

&gt; Seems silly to intentionally violate style just to match the spec wording.

My hope is that this problem will be sovled once we convert to using goto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229933</commentid>
    <comment_count>10</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-05-24 15:06:40 -0700</bug_when>
    <thetext>Committed r60087</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56828</attachid>
            <date>2010-05-23 14:02:25 -0700</date>
            <delta_ts>2010-05-23 16:05:40 -0700</delta_ts>
            <desc>Work in progress</desc>
            <filename>bug-39571-20100523140223.patch</filename>
            <type>text/plain</type>
            <size>4292</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDAzYmExOTQ2ZDhkZjE5NGNkMmZlMjEzZmZiZjA5NmM1NWIyYzA0Ny4uYjI4NDBjZGZjZjc5Yjdj
MTdjN2ZjNTVjMDVmYzUxNzQwYzgwYzRhNSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwyMSBAQAogCiAgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIFRlYWNoIHRoZSBIVE1MNSBwYXJzZXIg
dG8gbGV4IERPQ1RZUEVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zOTU3MQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAg
ICogaHRtbC9IVE1MNUxleGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6Om5l
eHRUb2tlbik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6cGVlayk6CisgICAgICAgIChXZWJDb3Jl
OjpTZWdtZW50ZWRTdHJpbmc6OnBlZWtJZ25vcmluZ0Nhc2UpOgorCisyMDEwLTA1LTIzICBBZGFt
IEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKICAgICAgICAgVGVhY2ggSFRNTDUgcGFyc2VyIGhvdyB0byBsZXggY29tbWVu
dHMgY29ycmVjdGx5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zOTUzNwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAKaW5kZXggZDhkMzM5YTZjMWIxZjk5OTZiYzRhZDNm
ZjdmZWM2M2I3NWEzYjk2Yi4uYTIyMzE1Njg2ZmU1ZDlhODc1ZDMwZTJmOWM4ZDgyYzU1ZGFlOTcx
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MNUxleGVyLmNwcApAQCAtODc0LDYgKzg3NCw3IEBAIGJvb2wgSFRNTDVMZXhlcjo6
bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAg
ICAgICAgfQogICAgICAgICBjYXNlIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlOiB7CiAgICAg
ICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0i
KSk7CisgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmlu
ZywgKCJkb2N0eXBlIikpOwogICAgICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAg
ICAgICAgIFNlZ21lbnRlZFN0cmluZzo6UGVla1Jlc3VsdCBwZWVrID0gc291cmNlLnBlZWsoZGFz
aERhc2hTdHJpbmcpOwogICAgICAgICAgICAgICAgIGlmIChwZWVrID09IFNlZ21lbnRlZFN0cmlu
Zzo6RGlkTWF0Y2gpIHsKQEAgLTg4Niw5ICs4ODcsMzQgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBlZWsg
PT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBjaGFyYWN0ZXJz
IHRvIGFycml2ZS4KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNjID09ICdk
JykgeworICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6UGVla1Jlc3VsdCBwZWVrID0g
c291cmNlLnBlZWtJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICAgICAg
aWYgKHBlZWsgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAg
ICAgICBBU1NFUlQoKnNvdXJjZSA9PSAnRCcgfHwgKnNvdXJjZSA9PSAnZCcpOworICAgICAgICAg
ICAgICAgICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
KnNvdXJjZSA9PSAnTycgfHwgKnNvdXJjZSA9PSAnbycpOworICAgICAgICAgICAgICAgICAgICBz
b3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKnNvdXJjZSA9PSAn
QycgfHwgKnNvdXJjZSA9PSAnYycpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5j
ZSgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKnNvdXJjZSA9PSAnVCcgfHwgKnNvdXJj
ZSA9PSAndCcpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQoKnNvdXJjZSA9PSAnWScgfHwgKnNvdXJjZSA9PSAneScpOwor
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoKnNvdXJjZSA9PSAnUCcgfHwgKnNvdXJjZSA9PSAncCcpOworICAgICAgICAgICAg
ICAgICAgICBzb3VyY2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoKnNv
dXJjZSA9PSAnRScgfHwgKnNvdXJjZSA9PSAnZScpOworICAgICAgICAgICAgICAgICAgICBzb3Vy
Y2UuYWR2YW5jZSgpOworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN0YXRl
OworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHBlZWsgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBj
aGFyYWN0ZXJzIHRvIGFycml2ZS4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSdy
ZSBzdGlsbCBtaXNzaW5nIHRoZSBiaXRzIGFib3V0IHRoZSBpbnNlcnRpb24gbW9kZSBiZWluZyBp
biBmb3JlaWduIGNvbnRlbnQ6CisgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcv
c3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNt
YXJrdXAtZGVjbGFyYXRpb24tb3Blbi1zdGF0ZQorICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKKyAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKKyAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0U3RhdGU6IHsK
ICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvU2VnbWVudGVkU3RyaW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVk
U3RyaW5nLmgKaW5kZXggY2YxYTRmODUzNzU2Yzc2MjQ2YTk3ZDFlYWE1NmMwOTBmMGIwNTVhNC4u
NmYyZmVmOGUwYzgyNTVkYzRkNzU0YmYxOWFkODBiZDU5NGM3MmFlNSAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaApAQCAtMTIxLDYgKzEyMSwxOCBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKICAgICB9CiAKKyAgICBQZWVrUmVzdWx0IHBlZWtJ
Z25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIW1f
cHVzaGVkQ2hhcjEgJiYgc3RyaW5nLmxlbmd0aCgpIDw9ICh1bnNpZ25lZCkgbV9jdXJyZW50U3Ry
aW5nLm1fbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoV1RGOjpVbmljb2RlOjp1bWVtY2FzZWNt
cChzdHJpbmcuY2hhcmFjdGVycygpLCBtX2N1cnJlbnRTdHJpbmcubV9jdXJyZW50LCBzdHJpbmcu
bGVuZ3RoKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKKyAgICAgICAg
ICAgIHJldHVybiBEaWRNYXRjaDsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSBoYXZlbid0IGlt
cGxlbWVudGVkIHRoZSBzbG93IGNhc2UgeWV0LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIERpZE5vdE1hdGNoOworICAgIH0KKwogICAgIHZvaWQgYWR2YW5j
ZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgbV9jdXJyZW50U3RyaW5n
Lm1fbGVuZ3RoID4gMSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56836</attachid>
            <date>2010-05-23 16:05:44 -0700</date>
            <delta_ts>2010-05-24 14:08:25 -0700</delta_ts>
            <desc>more work in progress</desc>
            <filename>bug-39571-20100523160542.patch</filename>
            <type>text/plain</type>
            <size>19751</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWQ1NWY3ZjdmYzA0N2NlZTBkMDFjODU1NTJlMTI5ZTU4ODRkZmVkZS4uYjYxMDY4MjQ3NDMwMTBi
YjRjNDY4N2UyNjI0YThhYzA4ODc0YjgxOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwyMCBAQAogMjAxMC0wNS0yMyAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlYWNoIHRoZSBIVE1MNSBwYXJzZXIgdG8gbGV4IERPQ1RZ
UEVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zOTU3
MQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogaHRtbC9IVE1M
NUxleGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1TGV4ZXI6Om5leHRUb2tlbik6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNv
cmU6OlNlZ21lbnRlZFN0cmluZzo6cGVlayk6CisgICAgICAgIChXZWJDb3JlOjpTZWdtZW50ZWRT
dHJpbmc6OnBlZWtJZ25vcmluZ0Nhc2UpOgorCisyMDEwLTA1LTIzICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKICAg
ICAgICAgVGVhY2ggSFRNTDUgcGFyc2VyIGhvdyB0byBsZXggY29tbWVudHMgY29ycmVjdGx5CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAgYi9XZWJDb3JlL2h0bWwvSFRN
TDVMZXhlci5jcHAKaW5kZXggNDRlYWU4MzllM2EzMGRiMGExZjYwOWI4YTUwMTNmMzE4M2E1M2Iw
Ny4uYzZlMDBjZmQ2YWUyMmZiYjhkNzA2NTJmMWMzYjRiMzMyNWMxMmQ4NyAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVy
LmNwcApAQCAtODc0LDYgKzg3NCw3IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21l
bnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgfQogICAgICAg
ICBjYXNlIE1hcmt1cERlY2xhcmF0aW9uT3BlblN0YXRlOiB7CiAgICAgICAgICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKFN0cmluZywgZGFzaERhc2hTdHJpbmcsICgiLS0iKSk7CisgICAgICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZG9jdHlwZVN0cmluZywgKCJkb2N0eXBlIikp
OwogICAgICAgICAgICAgaWYgKGNjID09ICctJykgewogICAgICAgICAgICAgICAgIFNlZ21lbnRl
ZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJjZS5sb29rQWhlYWQoZGFzaERh
c2hTdHJpbmcpOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5n
OjpEaWRNYXRjaCkgewpAQCAtODg0LDkgKzg4NSwyNyBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzdWx0
ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hhcmFjdGVycykKICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOyAvLyBXZSBuZWVkIHRvIHdhaXQgZm9yIG1vcmUgY2hhcmFjdGVy
cyB0byBhcnJpdmUuCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdEJyB8fCBjYyA9PSAn
ZCcpIHsKKyAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCBy
ZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKGRvY3R5cGVTdHJpbmcpOworICAg
ICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkgewor
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgn
ZCcpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5n
Q2FzZSgnbycpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVEln
bm9yaW5nQ2FzZSgnYycpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFT
U0VSVElnbm9yaW5nQ2FzZSgndCcpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5j
ZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgneScpOworICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgncCcpOworICAgICAgICAgICAgICAgICAgICBz
b3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgnZScpOworICAgICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gRE9DVFlQRVN0YXRlOworICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6
Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsg
Ly8gV2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGNoYXJhY3RlcnMgdG8gYXJyaXZlLgogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgLy8gRklYTUU6IFdlJ3JlIHN0aWxsIG1pc3NpbmcgdGhlIGJpdHMgYWJv
dXQgdGhlIGluc2VydGlvbiBtb2RlIGJlaW5nIGluIGZvcmVpZ24gY29udGVudDoKKyAgICAgICAg
ICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
bXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI21hcmt1cC1kZWNsYXJhdGlvbi1vcGVuLXN0YXRl
CisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgbV9zdGF0ZSA9IEJv
Z3VzQ29tbWVudFN0YXRlOworICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAg
ICAgY2FzZSBDb21tZW50U3RhcnRTdGF0ZTogewogICAgICAgICAgICAgaWYgKGNjID09ICctJykK
QEAgLTEwMTIsMTUgKzEwMzEsMTUgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVu
dGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgaWYgKGNj
ID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID49ICdBJyAm
JiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xvd2VyQ2FzZShjYykpOwogICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFTmFtZVN0YXRlOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJl
bnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rv
a2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBF
TmFtZVN0YXRlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBF
T0YgcHJvcGVybHkuCkBAIC0xMDMwLDIzICsxMDQ5LDU1IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4
dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAg
ICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8
fCBjYyA9PSAnICcpCiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRU5hbWVT
dGF0ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpCi0gICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05hbWUodG9M
b3dlckNhc2UoY2MpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShjYyk7CiAg
ICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFTmFtZVN0YXRlOiB7CiAg
ICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgw
QycgfHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9r
ZW4oKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAgICBlbWl0
Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKLSAg
ICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIpKTsKKyAg
ICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3RyaW5nLCAo
InN5c3RlbSIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09ICdwJykg
eworICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCBy
ZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRjaCkg
eworICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmlu
Z0Nhc2UoJ3AnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUSWdub3JpbmdDYXNlKCd1Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgnYicpOworICAgICAgICAgICAgICAgICAgICAgICAg
c291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ2wnKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKCdpJyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgn
YycpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRVB1Ymxp
Y0tleXdvcmRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAg
ICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVu
b3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnUycgfHwgY2MgPT0gJ3MnKSB7CisgICAg
ICAgICAgICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9
IHNvdXJjZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2Uoc3lzdGVtU3RyaW5nKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgn
cycpOworICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25v
cmluZ0Nhc2UoJ3knKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5k
QVNTRVJUSWdub3JpbmdDYXNlKCdzJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgndCcpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ2UnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKCdtJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQWZ0ZXJET0NUWVBFU3lzdGVtS2V5d29y
ZFN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6Tm90RW5vdWdoQ2hh
cmFjdGVycykKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCb2d1c0RP
Q1RZUEVTdGF0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUg
RU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEwNTUsMTYg
KzExMDYsMTYgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZv
cmVET0NUWVBFUHVibGljSWRlbnRpZmllclN0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoY2Mg
PT0gJyInKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1Ymxp
Y0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERP
Q1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVs
c2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwot
ICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tl
bi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAg
ICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJl
bnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMDc4
LDE1ICsxMTI5LDE1IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmlu
ZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgw
OScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAnICcpCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAg
ICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigp
OworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTEwMiwxMCArMTE1MywxMCBAQCBib29sIEhUTUw1TGV4
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0
Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTExMTUsMTAgKzExNjYsMTAgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihjYyk7CiAgICAgICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xMTI2LDE1ICsxMTc3LDE1IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNl
Z21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGlm
IChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBjYyA9PSAn
ICcpCiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJldHdlZW5ET0NUWVBFUHVibGljQW5kU3lz
dGVtSWRlbnRpZmllcnNTdGF0ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykgewot
ICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAg
ICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3Rh
dGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygp
OwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJs
ZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAg
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0Vt
cHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVu
dGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMTQ4LDEzICsxMTk5LDEzIEBAIGJvb2wgSFRN
TDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJldHdl
ZW5ET0NUWVBFUHVibGljQW5kU3lzdGVtSWRlbnRpZmllcnNTdGF0ZTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRv
a2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICci
JykgewotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAg
bV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAg
ICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsK
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRp
ZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTExNjksMTYgKzEyMjAsMTYgQEAg
Ym9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1
VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZWZvcmVET0NUWVBFU3lz
dGVtSWRlbnRpZmllclN0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBs
ZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1J
ZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09
ICdcJycpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVt
SWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9D
VFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAg
ICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJy
ZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwog
ICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMTkxLDE2ICsxMjQyLDE2
IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBI
VE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgY2FzZSBCZWZvcmVET0NUWVBFU3lzdGVtSWRlbnRp
ZmllclN0YXRlOiB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBB
JyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAgICAgICAgICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnIicpIHsKKyAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAg
ICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRl
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBF
U3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRE
b2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTEyMTYsMTAgKzEyNjcsMTAgQEAg
Ym9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1
VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAg
ICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBE
YXRhU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1l
bnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmll
cihjYyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMjI5LDEwICsxMjgwLDEwIEBAIGJvb2wgSFRN
TDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsK
KyAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3RlbUlkZW50aWZpZXIoY2MpOwog
ICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMTI0MCw3ICsxMjkxLDcgQEAgYm9vbCBIVE1MNUxleGVyOjpu
ZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAg
ICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMn
IHx8IGNjID09ICcgJykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGVsc2Ug
aWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2Vu
KCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAg
IG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMjUxLDcgKzEzMDIsNyBAQCBib29sIEhUTUw1TGV4
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4p
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBCb2d1c0RPQ1RZUEVTdGF0ZTogewogICAgICAgICAg
ICAgaWYgKGNjID09ICc+JykKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tl
bigpOworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTEzMTIsOCArMTM2Myw0IEBAIGlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDdXJy
ZW50VG9rZW4oKQogICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5h
bWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdEN1cnJlbnREb2N0eXBlVG9r
ZW4oKQotewotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oIGIv
V2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAppbmRleCA2ZDYxY2MyMmRhMTM4ODUxMDg3M2QyNzVk
NGRkN2JhMzQyMTU2NGZhLi5iMzIyODJiOTlhMzMzY2QwMzE4ODYzM2ZlM2I4MjFmNGIzOGU0N2Y2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MNUxleGVyLmgKQEAgLTEyOSw3ICsxMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGlubGluZSB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIpOwogICAgICAgICBpbmxpbmUg
dm9pZCBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CiAK
ICAgICAgICAgaW5saW5lIGJvb2wgdGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgY2hhciopOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbi5oIGIvV2ViQ29yZS9odG1sL0hUTUw1
VG9rZW4uaAppbmRleCA3YzViNWRkOGEyZDg0OGZjNDJhYWMzZjlhZWMwZTNjMWYwYmYyMWEwLi45
ODVlYmNhNzE4YjY3NmY1YzVlODJkYmFhOTk2ODExZWJiZTIxNjA0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTDVUb2tlbi5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmgKQEAg
LTEwMSw2ICsxMDEsMTYgQEAgcHVibGljOgogICAgICAgICBtX2RhdGFTdHJpbmcgPSBBdG9taWNT
dHJpbmcoKTsKICAgICB9CiAKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAg
ICBtX3R5cGUgPSBET0NUWVBFOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9k
YXRhU3RyaW5nID0gQXRvbWljU3RyaW5nKCk7CisgICAgICAgIG1fZG9jdHlwZURhdGEuc2V0KG5l
dyBEb2N0eXBlRGF0YSgpKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAg
IH0KKwogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5
cGUgPT0gRE9DVFlQRSk7CkBAIC0xNzEsNyArMTgxLDUxIEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGRhdGFTdHJpbmcoKTsKICAgICB9CiAKKyAgICB2b2lkIHNldFB1YmxpY0lkZW50aWZpZXJU
b0VtcHR5U3RyaW5nKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7
CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGljSWRlbnRpZmllciA9IHRydWU7Cisg
ICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5jbGVhcigpOworICAgIH0K
KworICAgIHZvaWQgc2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fdHlwZSA9PSBET0NUWVBFKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+
bV9oYXNTeXN0ZW1JZGVudGlmaWVyID0gdHJ1ZTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9z
eXN0ZW1JZGVudGlmaWVyLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1B1Ymxp
Y0lkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzUHVibGlj
SWRlbnRpZmllcik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fcHVibGljSWRlbnRpZmllci5h
cHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZFRvU3lzdGVtSWRlbnRp
ZmllcihVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IERP
Q1RZUEUpOworICAgICAgICBBU1NFUlQobV9kb2N0eXBlRGF0YS0+bV9oYXNTeXN0ZW1JZGVudGlm
aWVyKTsKKyAgICAgICAgbV9kb2N0eXBlRGF0YS0+bV9zeXN0ZW1JZGVudGlmaWVyLmFwcGVuZChj
aGFyYWN0ZXIpOworICAgIH0KKwogcHJpdmF0ZToKKyAgICBjbGFzcyBEb2N0eXBlRGF0YSB7Cisg
ICAgcHVibGljOgorICAgICAgICBEb2N0eXBlRGF0YSgpCisgICAgICAgICAgICA6IG1faGFzUHVi
bGljSWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgICAgICwgbV9oYXNTeXN0ZW1JZGVudGlmaWVy
KGZhbHNlKQorICAgICAgICAgICAgLCBtX2ZvcmNlUXVpcmtzKGZhbHNlKQorICAgICAgICB7Cisg
ICAgICAgIH0KKworICAgICAgICBib29sIG1faGFzUHVibGljSWRlbnRpZmllcjsKKyAgICAgICAg
Ym9vbCBtX2hhc1N5c3RlbUlkZW50aWZpZXI7CisgICAgICAgIGJvb2wgbV9mb3JjZVF1aXJrczsK
KyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmllcjsKKyAgICAgICAg
V1RGOjpWZWN0b3I8VUNoYXI+IG1fc3lzdGVtSWRlbnRpZmllcjsKKyAgICB9OworCiAgICAgQXRv
bWljU3RyaW5nIGRhdGFTdHJpbmcoKQogICAgIHsKICAgICAgICAgaWYgKCFtX2RhdGEuaXNFbXB0
eSgpICYmIG1fZGF0YVN0cmluZy5pc0VtcHR5KCkpCkBAIC0xODcsOSArMjQxLDcgQEAgcHJpdmF0
ZToKICAgICBXVEY6OlZlY3RvcjxVQ2hhciwgMTAyND4gbV9kYXRhOwogCiAgICAgLy8gRm9yIERP
Q1RZUEUKLSAgICBTdHJpbmcgbV9wdWJsaWNJZGVudGlmaWVyOwotICAgIFN0cmluZyBtX3N5c3Rl
bUlkZW50aWZpZXI7Ci0gICAgYm9vbCBtX2ZvcmNlUXVpcmtzOworICAgIE93blB0cjxEb2N0eXBl
RGF0YT4gbV9kb2N0eXBlRGF0YTsKIAogICAgIC8vIEZvciBTdGFydFRhZyBhbmQgRW5kVGFnCiAg
ICAgYm9vbCBtX3NlbGZDbG9zaW5nOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L1NlZ21lbnRlZFN0cmluZy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmlu
Zy5oCmluZGV4IGM1ZGFhYWEwMWMwMmJlMjgzNmY4YWRmOGY1NTYwMzAzM2VkMjk5ZTIuLjA2MzNm
NDQ3ZTUyMDdiZTVkYjJkN2U1NmI5MzgzYzY4ZDA2YTYyOWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3Rl
eHQvU2VnbWVudGVkU3RyaW5nLmgKQEAgLTEyMiw2ICsxMjIsMTkgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gRGlkTm90TWF0Y2g7CiAgICAgfQogCisgICAgLy8gV0FSTklORzogVGhpcyBtZXRo
b2QgaXMgY3VycmVudGx5IHVzZWQgb25seSBieSB0aGUgSFRNTDUgcGFyc2VyIGFuZCBpcyBpbmNv
bXBsZXRlLgorICAgIExvb2tBaGVhZFJlc3VsdCBsb29rQWhlYWRJZ25vcmluZ0Nhc2UoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgc3Ry
aW5nLmxlbmd0aCgpIDw9ICh1bnNpZ25lZCkgbV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoKSB7Cisg
ICAgICAgICAgICBpZiAoV1RGOjpVbmljb2RlOjp1bWVtY2FzZWNtcChzdHJpbmcuY2hhcmFjdGVy
cygpLCBtX2N1cnJlbnRTdHJpbmcubV9jdXJyZW50LCBzdHJpbmcubGVuZ3RoKCkpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKKyAgICAgICAgICAgIHJldHVybiBEaWRNYXRj
aDsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSBoYXZlbid0IGltcGxlbWVudGVkIHRoZSBzbG93
IGNhc2UgeWV0LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJu
IERpZE5vdE1hdGNoOworICAgIH0KKwogICAgIHZvaWQgYWR2YW5jZSgpCiAgICAgewogICAgICAg
ICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgbV9jdXJyZW50U3RyaW5nLm1fbGVuZ3RoID4gMSkgewpA
QCAtMTM4LDYgKzE1MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFkdmFuY2UoKTsKICAgICB9CiAK
KyAgICB2b2lkIGFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoVUNoYXIgZXhwZWN0ZWRDaGFy
YWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGV4cGVjdGVkQ2hhcmFjdGVyLCBX
VEY6OlVuaWNvZGU6OmZvbGRDYXNlKCpjdXJyZW50KCkpID09IFdURjo6VW5pY29kZTo6Zm9sZENh
c2UoZXhwZWN0ZWRDaGFyYWN0ZXIpKTsKKyAgICAgICAgYWR2YW5jZSgpOworICAgIH0KKwogICAg
IHZvaWQgYWR2YW5jZVBhc3ROZXdsaW5lKGludCYgbGluZU51bWJlcikKICAgICB7CiAgICAgICAg
IEFTU0VSVCgqY3VycmVudCgpID09ICdcbicpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56923</attachid>
            <date>2010-05-24 14:08:29 -0700</date>
            <delta_ts>2010-05-24 14:52:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39571-20100524140827.patch</filename>
            <type>text/plain</type>
            <size>29107</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OThkZjFhMTU0ODI0M2Y5MzYyOTg3ZjFiYTU1MzU3ZWVlN2VhOWFjLi40NTMwZDYw
ZGIxOGQzMTdhYjJiYjE0Yzc3N2ZmZTBiYmUzNzQ3YjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWFjaCB0aGUgSFRNTDUgcGFy
c2VyIHRvIGxleCBET0NUWVBFcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk1NzEKKworICAgICAgICBBZGQgdGVzdHMgZm9yIERPQ1RZUEVzLgorCisg
ICAgICAgICogaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQ6IEFkZGVkLgorICAgICAg
ICAqIGh0bWw1bGliL3dlYmtpdC1ydW5uZXIuaHRtbDoKKwogMjAxMC0wNS0yNCAgU2hpbmljaGly
byBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnJv
a2VuIFF0IHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL2RvY3R5cGUwMS5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NzUxMjljMTQ2NjY5YmY0ZjM1ZTE0MDdiZTM2NWNjZDAxZmUz
ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Rv
Y3R5cGUwMS5kYXQKQEAgLTAsMCArMSwzMzUgQEAKKyNkYXRhCis8IURPQ1RZUEUgaHRtbD5IZWxs
bworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8
aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhZE9jdFlwRSBIdE1s
PkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
aHRtbD5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRt
bD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9D
VFlQRT5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSA+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
ID5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSA+Cit8IDxodG1sPgorfCAg
IDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBv
dGF0bz5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFE
T0NUWVBFIHBvdGF0byA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90
YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKwor
I2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8gdGFjbz5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8
IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAg
ICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byB0YWNvICJkZGQ+SGVsbG8KKyNl
cnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8g
c1lzdEVNPkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wg
PGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8
IURPQ1RZUEUgcG90YXRvIHNZc3RFTSAgICA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8
IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
ICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSAgIHBvdGF0byAgICAgICBzWXN0RU0gIGdnZz5I
ZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
IHBvdGF0byBTWVNURU0gdGFjbyAgPkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NU
WVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVs
bG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZU1RFTSAndGFjbyInPkhlbGxvCisjZXJy
b3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+
Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZ
U1RFTSAidGFjbyI+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRv
PgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2Rh
dGEKKzwhRE9DVFlQRSBwb3RhdG8gU1lTVEVNICJ0YWknY28iPkhlbGxvCisjZXJyb3JzCisjZG9j
dW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJv
ZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZU1RFTXRhY28g
ImRkZCI+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8
aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwh
RE9DVFlQRSBwb3RhdG8gZ3Jhc3MgU1lTVEVNIHRhY28+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVu
dAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4K
K3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8gcFViTEljPkhlbGxvCisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhl
YWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRv
IHBVYkxJYyA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgor
fCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEK
KzwhRE9DVFlQRSBwb3RhdG8gcFViTEljZ29vZj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8
IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAg
ICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgZ29vZj5IZWxsbwor
I2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxo
ZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0
byBQVUJMSUMgImdvJ29mIj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBw
b3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgor
CisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgJ2dvJ29mJz5IZWxsbworI2Vycm9ycwor
I2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAg
IDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMg
J2dvOmhoICAgb2YnID5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3Rh
dG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisj
ZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgIlczQy0vL2RmZGYiIFNZU1RFTSBnZ2c+SGVs
bG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wg
ICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwh
RE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJI
ZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSAuLi4+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAor
fCA8IURPQ1RZUEUgLi4uPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
ICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhU
TUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NU
WVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorCisjZGF0YQorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgRnJhbWVzZXQvL0VOIgor
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLWZyYW1lc2V0LmR0ZCI+Cisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorCisjZGF0YQorPCFET0NUWVBFIHJvb3QtZWxlbWVudCBbU1lTVEVNIE9S
IFBVQkxJQyBGUEldICJ1cmkiIFsgCis8IS0tIGludGVybmFsIGRlY2xhcmF0aW9ucyAtLT4KK10+
CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHJvb3QtZWxlbWVudD4KK3wgPGh0bWw+
Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiCitdPiIKKworI2RhdGEKKzwhRE9DVFlQ
RSBodG1sIFBVQkxJQworICAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4wLy9FTiIK
KyAgICAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3hodG1sLW1vYmlsZTEwLmR0ZCI+Cisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorCisjZGF0YQorPCFET0NUWVBFIEhUTUwgU1lTVEVNICJodHRwOi8vd3d3
LnczLm9yZy9EVEQvSFRNTDQtc3RyaWN0LmR0ZCI+PGJvZHk+PGI+TWluZSE8L2I+PC9ib2R5Pgor
I2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgIDxiPgorfCAgICAgICAiTWluZSEiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcnVubmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi93ZWJraXQtcnVubmVyLmh0bWwKaW5kZXggNmMwZDg1ZWMwODQ0MjE3OGIzMDZmYzU1MzNm
Nzk0MzFlZjQyYzFhYS4uZDRlNGZjM2ZmMWZiYjVkMGQwZmFjZDQ0ZjEyZDNjNDQ4MDMzOWMxZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJ1bm5lci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0bWw1bGliL3dlYmtpdC1ydW5uZXIuaHRtbApAQCAtMTcyLDcgKzE3Miwx
MSBAQCBkaXNwbGF5OiBub25lOwogPHA+U2NyaXB0IGRpZCBub3QgcnVuPC9wPgogPGlmcmFtZT48
L2lmcmFtZT4KIDxzY3JpcHQ+Ci12YXIgdGVzdF9maWxlcyA9IFsncmVzb3VyY2VzL3dlYmtpdDAx
LmRhdCcsICdyZXNvdXJjZXMvY29tbWVudHMwMS5kYXQnXSwKK3ZhciB0ZXN0X2ZpbGVzID0gWwor
ICAgICAgICAncmVzb3VyY2VzL3dlYmtpdDAxLmRhdCcsCisgICAgICAgICdyZXNvdXJjZXMvZG9j
dHlwZTAxLmRhdCcsCisgICAgICAgICdyZXNvdXJjZXMvY29tbWVudHMwMS5kYXQnCisgICAgXSwK
ICAgICB0ZXN0cyA9IFtdLAogICAgIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJpZnJhbWUiKVswXSwKICAgICBzdGF0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInAiKVswXS5maXJzdENoaWxkLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZjM3NTZmOGE4NGU3NzVlNjNmMWRjMjgwYjBlNmZlNThj
NGUyMGI2Li4zMGM0ZDc3NTJiY2Q2MDRlNmNjYjdiMmZiNDAzMTcyOGVlNzJlYTVmIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDM0IEBACisyMDEwLTA1LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggdGhlIEhU
TUw1IHBhcnNlciB0byBsZXggRE9DVFlQRXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NTcxCisKKyAgICAgICAgV2UgZmFpbCB0d28gb2YgdGhlIG5l
dyB0ZXN0cywgYnV0IEkgdGhpbmsgdGhhdCdzIGEgcGFyc2VyIHByb2JsZW0gbm90IGEKKyAgICAg
ICAgbGV4ZXIgcHJvYmxlbS4gIEluIGFueSBjYXNlLCBJJ2QgbGlrZSB0byBsb29rIGF0IHRoZW0g
aW4gYSBzZWNvbmQKKyAgICAgICAgcGF0Y2guICBPdGhlcndpc2UsIHRoaXMgaXMgYSBwcmV0dHkg
c3RyYWlnaHRmb3J3YXJkIHRyYW5zY3JpcHRpb24gb2YKKyAgICAgICAgdGhlIHNwZWMuCisKKyAg
ICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhl
cjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUw1VG9rZW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW46OmJlZ2luRE9D
VFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW46OnN5c3RlbUlkZW50aWZpZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6c2V0U3lzdGVtSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6YXBwZW5kVG9QdWJsaWNJ
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9rZW46OmFwcGVuZFRvU3lzdGVt
SWRlbnRpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRva2VuOjpEb2N0eXBlRGF0YTo6
RG9jdHlwZURhdGEpOgorICAgICAgICAqIGh0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpjb252ZXJ0VG9PbGRTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
NVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcik6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0
cmluZzo6bG9va0FoZWFkSWdub3JpbmdDYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRl
ZFN0cmluZzo6YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSk6CisKIDIwMTAtMDUtMjQgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4
IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwIGIvV2ViQ29y
ZS9odG1sL0hUTUw1TGV4ZXIuY3BwCmluZGV4IDQ0ZWFlODM5ZTNhMzBkYjBhMWY2MDliOGE1MDEz
ZjMxODNhNTNiMDcuLjcwOWM5M2EyOWFjNDZmMzU2MDU4YWZjZDRjNjJiYmM1YjYxZWVmODAgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MNUxleGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTDVMZXhlci5jcHAKQEAgLTg3NCw2ICs4NzQsNyBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRU
b2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBNYXJrdXBEZWNsYXJhdGlvbk9wZW5TdGF0ZTogewogICAgICAgICAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRhc2hEYXNoU3RyaW5nLCAoIi0tIikpOwor
ICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGRvY3R5cGVTdHJpbmcsICgi
ZG9jdHlwZSIpKTsKICAgICAgICAgICAgIGlmIChjYyA9PSAnLScpIHsKICAgICAgICAgICAgICAg
ICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0Fo
ZWFkKGRhc2hEYXNoU3RyaW5nKTsKICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21l
bnRlZFN0cmluZzo6RGlkTWF0Y2gpIHsKQEAgLTg4NCw5ICs4ODUsMjcgQEAgYm9vbCBIVE1MNUxl
eGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2UgbmVlZCB0byB3YWl0IGZvciBtb3Jl
IGNoYXJhY3RlcnMgdG8gYXJyaXZlLgorICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnRCcg
fHwgY2MgPT0gJ2QnKSB7CisgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShkb2N0eXBlU3Ry
aW5nKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6RGlk
TWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25v
cmluZ0Nhc2UoJ2QnKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NF
UlRJZ25vcmluZ0Nhc2UoJ28nKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VB
bmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAgc291cmNlLmFk
dmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ3QnKTsKKyAgICAgICAgICAgICAgICAgICAgc291
cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ3knKTsKKyAgICAgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ3AnKTsKKyAgICAgICAgICAg
ICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ2UnKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTdGF0ZTsKKyAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVu
dGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7IC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBjaGFyYWN0ZXJzIHRvIGFycml2
ZS4KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBXZSdyZSBzdGlsbCBtaXNzaW5nIHRo
ZSBiaXRzIGFib3V0IHRoZSBpbnNlcnRpb24gbW9kZSBiZWluZyBpbiBmb3JlaWduIGNvbnRlbnQ6
CisgICAgICAgICAgICAvLyBodHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3Vy
cmVudC13b3JrL211bHRpcGFnZS90b2tlbml6YXRpb24uaHRtbCNtYXJrdXAtZGVjbGFyYXRpb24t
b3Blbi1zdGF0ZQorICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKKyAgICAgICAgICAgIG1f
c3RhdGUgPSBCb2d1c0NvbW1lbnRTdGF0ZTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB9CiAgICAgICAgIGNhc2UgQ29tbWVudFN0YXJ0U3RhdGU6IHsKICAgICAgICAgICAgIGlmIChj
YyA9PSAnLScpCkBAIC0xMDEyLDE1ICsxMDMxLDE1IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRv
a2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAg
ICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdceDBDJyB8fCBj
YyA9PSAnICcpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBlbHNlIGlmIChj
YyA+PSAnQScgJiYgY2MgPD0gJ1onKSB7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUodG9Mb3dlckNhc2UoY2Mp
KTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRU5hbWVTdGF0ZTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAg
ICAgICAgbV90b2tlbi0+YmVnaW5ET0NUWVBFKGNjKTsKICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRE9DVFlQRU5hbWVTdGF0ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIEZJWE1F
OiBIYW5kbGUgRU9GIHByb3Blcmx5LgpAQCAtMTAzMCwyMyArMTA0OSw1NSBAQCBib29sIEhUTUw1
TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9r
ZW4pCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRP
Q1RZUEVOYW1lU3RhdGU7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVt
aXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA+PSAnQScgJiYgY2MgPD0gJ1onKQotICAgICAgICAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5k
VG9OYW1lKHRvTG93ZXJDYXNlKGNjKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUoY2MpOwogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEFmdGVyRE9DVFlQRU5hbWVT
dGF0ZTogewogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwg
Y2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50
RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAg
ICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7Ci0gICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHB1YmxpY1N0cmluZywgKCJwdWJs
aWMiKSk7CisgICAgICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHN5c3Rl
bVN0cmluZywgKCJzeXN0ZW0iKSk7CisgICAgICAgICAgICAgICAgaWYgKGNjID09ICdQJyB8fCBj
YyA9PSAncCcpIHsKKyAgICAgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29rQWhl
YWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZElnbm9yaW5nQ2FzZShwdWJsaWNTdHJp
bmcpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IFNlZ21lbnRlZFN0cmluZzo6
RGlkTWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNT
RVJUSWdub3JpbmdDYXNlKCdwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2
YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgndScpOworICAgICAgICAgICAgICAgICAgICAgICAg
c291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ2InKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKCdsJyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgn
aScpOworICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25v
cmluZ0Nhc2UoJ2MnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRP
Q1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3Ry
aW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1MnIHx8IGNjID09ICdz
JykgeworICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJlc3Vs
dCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHN5c3RlbVN0cmluZyk7Cisg
ICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRNYXRj
aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25v
cmluZ0Nhc2UoJ3MnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5k
QVNTRVJUSWdub3JpbmdDYXNlKCd5Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgncycpOworICAgICAgICAgICAgICAgICAgICAg
ICAgc291cmNlLmFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2UoJ3QnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHNvdXJjZS5hZHZhbmNlQW5kQVNTRVJUSWdub3JpbmdDYXNlKCdlJyk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UuYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2Fz
ZSgnbScpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQRVN5
c3RlbUtleXdvcmRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5v
dEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAg
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gQm9ndXNET0NUWVBFU3RhdGU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhN
RTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBA
IC0xMDU1LDE2ICsxMTA2LDE2IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICBtX3N0
YXRlID0gQmVmb3JlRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTdGF0ZTsKICAgICAgICAgICAgIGVs
c2UgaWYgKGNjID09ICciJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0g
ICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2Vu
LT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOwogICAgICAg
ICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVQdWJsaWNJZGVudGlmaWVyU2luZ2xlUXVvdGVkU3Rh
dGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAg
IGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAg
ICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRl
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigp
OwpAQCAtMTA3OCwxNSArMTEyOSwxNSBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJyIn
KSB7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBt
X3Rva2VuLT5zZXRQdWJsaWNJZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAg
ICAgIG1fc3RhdGUgPSBET0NUWVBFUHVibGljSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOwog
ICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVudGlm
aWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFUHVi
bGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChj
YyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAg
ICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0
eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAg
ICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTExMDIsMTAgKzExNTMsMTAgQEAgYm9v
bCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9r
ZW4mIHRva2VuKQogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAg
ICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvUHVibGljSWRlbnRpZmllcihj
Yyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTE1LDEwICsxMTY2LDEwIEBAIGJvb2wgSFRNTDVM
ZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tl
bikKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVt
aXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVt
aXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwog
ICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwogICAg
ICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMTEyNiwxNSArMTE3NywxNSBAQCBib29sIEhUTUw1TGV4ZXI6Om5l
eHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAg
ICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycg
fHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBCZXR3ZWVuRE9DVFlQRVB1
YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGU7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9
PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAg
ICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1w
dHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50
aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wn
JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJZGVu
dGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBF
U3lzdGVtSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTE0OCwxMyArMTE5OSwxMyBA
QCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdc
eDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIG1fc3Rh
dGUgPSBCZXR3ZWVuRE9DVFlQRVB1YmxpY0FuZFN5c3RlbUlkZW50aWZpZXJzU3RhdGU7CiAgICAg
ICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlm
IChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAg
ICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVv
dGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAg
ICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5
c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMTY5LDE2ICsx
MjIwLDE2IEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmVmb3Jl
RE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTdGF0ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09
ICciJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1J
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NU
WVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKLSAg
ICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4t
PnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9z
dGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU2luZ2xlUXVvdGVkU3RhdGU7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAg
ICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50
VG9rZW4oKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTE5MSwx
NiArMTI0MiwxNiBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcm
IHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgIGNhc2UgQmVmb3JlRE9DVFlQRVN5
c3RlbUlkZW50aWZpZXJTdGF0ZTogewogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBj
YyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAg
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gJyInKSB7CisgICAg
ICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsK
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3VibGVR
dW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewotICAgICAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0
U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRl
ID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3Io
KTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAgIGVt
aXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRUb2tl
bigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CkBAIC0xMjE2LDEwICsx
MjY3LDEwIEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291
cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigp
OworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb1N5c3Rl
bUlkZW50aWZpZXIoY2MpOwogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVy
bHkuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTIyOSwxMCArMTI4MCwxMCBA
QCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRN
TDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAg
ICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVu
dGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlm
aWVyKGNjKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTEyNDAsNyArMTI5MSw3IEBAIGJvb2wgSFRN
TDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0
b2tlbikKICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNj
ID09ICdceDBDJyB8fCBjYyA9PSAnICcpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERv
Y3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAg
ICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTI1MCw4ICsxMzAxLDEwIEBAIGJv
b2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRv
a2VuJiB0b2tlbikKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
Qm9ndXNET0NUWVBFU3RhdGU6IHsKLSAgICAgICAgICAgIGlmIChjYyA9PSAnPicpCi0gICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgIGlmIChjYyA9
PSAnPicpIHsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CisgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8v
IEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KQEAgLTEzMTIsOCArMTM2NSw0IEBAIGlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRDdXJy
ZW50VG9rZW4oKQogICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5h
bWUoKTsKIH0KIAotaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdEN1cnJlbnREb2N0eXBlVG9r
ZW4oKQotewotfQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oIGIv
V2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuaAppbmRleCA2ZDYxY2MyMmRhMTM4ODUxMDg3M2QyNzVk
NGRkN2JhMzQyMTU2NGZhLi5iMzIyODJiOTlhMzMzY2QwMzE4ODYzM2ZlM2I4MjFmNGIzOGU0N2Y2
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MNUxleGVyLmgKQEAgLTEyOSw3ICsxMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIGlubGluZSB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIpOwogICAgICAgICBpbmxpbmUg
dm9pZCBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q3VycmVudFRv
a2VuKCk7Ci0gICAgICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CiAK
ICAgICAgICAgaW5saW5lIGJvb2wgdGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgY2hhciopOwogCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbi5oIGIvV2ViQ29yZS9odG1sL0hUTUw1
VG9rZW4uaAppbmRleCAxOTE4NTg5OWQ4N2NkYzA1OWQyZTc0NjNhOWZmNjA5NGYwZjQ5ZThiLi43
Y2ZkYzg5MmZiNmI3N2UzNjZkOWVmMjI2MzRmZmM4OGRmZGI0YjUxIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTDVUb2tlbi5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmgKQEAg
LTEwMSw2ICsxMDEsMTYgQEAgcHVibGljOgogICAgICAgICBtX2RhdGFTdHJpbmcgPSBBdG9taWNT
dHJpbmcoKTsKICAgICB9CiAKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIp
CisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAg
ICBtX3R5cGUgPSBET0NUWVBFOworICAgICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9k
YXRhU3RyaW5nID0gQXRvbWljU3RyaW5nKCk7CisgICAgICAgIG1fZG9jdHlwZURhdGEuc2V0KG5l
dyBEb2N0eXBlRGF0YSgpKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAg
IH0KKwogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5
cGUgPT0gRE9DVFlQRSk7CkBAIC0xNzEsNyArMTgxLDY5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGRhdGFTdHJpbmcoKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0
d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIGNv
bnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpCisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisg
ICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5
cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRQdWJsaWNJ
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IERPQ1RZUEUpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIg
PSB0cnVlOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIo
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIG1fZG9j
dHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgYXBw
ZW5kVG9QdWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5t
X2hhc1B1YmxpY0lkZW50aWZpZXIpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1N5
c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllcik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmll
ci5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKIHByaXZhdGU6CisgICAgY2xhc3MgRG9jdHlw
ZURhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG9jdHlwZURhdGEoKQorICAgICAgICAgICAg
OiBtX2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCisgICAgICAgICAgICAsIG1faGFzU3lzdGVt
SWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgICAgICwgbV9mb3JjZVF1aXJrcyhmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtX2hhc1B1YmxpY0lkZW50aWZpZXI7
CisgICAgICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOworICAgICAgICBib29sIG1fZm9y
Y2VRdWlya3M7CisKKyAgICAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IG1fcHVibGljSWRlbnRpZmll
cjsKKyAgICAgICAgU3RyaW5nIG1fcHVibGljSWRlbnRpZmllclN0cmluZzsKKworICAgICAgICBX
VEY6OlZlY3RvcjxVQ2hhcj4gbV9zeXN0ZW1JZGVudGlmaWVyOworICAgICAgICBTdHJpbmcgbV9z
eXN0ZW1JZGVudGlmaWVyU3RyaW5nOworICAgIH07CisKICAgICBBdG9taWNTdHJpbmcgZGF0YVN0
cmluZygpCiAgICAgewogICAgICAgICBpZiAoIW1fZGF0YS5pc0VtcHR5KCkgJiYgbV9kYXRhU3Ry
aW5nLmlzRW1wdHkoKSkKQEAgLTE4Nyw5ICsyNTksNyBAQCBwcml2YXRlOgogICAgIFdURjo6VmVj
dG9yPFVDaGFyLCAxMDI0PiBtX2RhdGE7CiAKICAgICAvLyBGb3IgRE9DVFlQRQotICAgIFN0cmlu
ZyBtX3B1YmxpY0lkZW50aWZpZXI7Ci0gICAgU3RyaW5nIG1fc3lzdGVtSWRlbnRpZmllcjsKLSAg
ICBib29sIG1fZm9yY2VRdWlya3M7CisgICAgT3duUHRyPERvY3R5cGVEYXRhPiBtX2RvY3R5cGVE
YXRhOwogCiAgICAgLy8gRm9yIFN0YXJ0VGFnIGFuZCBFbmRUYWcKICAgICBib29sIG1fc2VsZkNs
b3Npbmc7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKaW5kZXggYWY1M2FjNmI5MmRiZDVhNWU3
NWQxNGY3MmQ0NzIxMmI1OWI0Nzk3ZC4uODI1ZDU1NGU4Y2YyNDFlYjc2ODBjZDUxZTJiY2QzYmJm
Nzc1ZTg3MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxkZXIuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNwcApAQCAtNTIsOSArNTIsOSBAQCBz
dGF0aWMgdm9pZCBjb252ZXJ0VG9PbGRTdHlsZShIVE1MNVRva2VuJiB0b2tlbiwgVG9rZW4mIG9s
ZFN0eWxlVG9rZW4pCiB7CiAgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsKICAgICBjYXNlIEhU
TUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQ6CisgICAgY2FzZSBIVE1MNVRva2VuOjpET0NUWVBFOgog
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBI
VE1MNVRva2VuOjpET0NUWVBFOgogICAgIGNhc2UgSFRNTDVUb2tlbjo6RW5kT2ZGaWxlOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKQEAg
LTk2LDYgKzk2LDIwIEBAIFBhc3NSZWZQdHI8Tm9kZT4gSFRNTDVUcmVlQnVpbGRlcjo6cGFzc1Rv
a2VuVG9MZWdhY3lQYXJzZXIoSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgIC8vIHdoZW4gdXNp
bmcgdGhlIG9sZCBwYXJzZXIgZm9yIHdlIGhhdmUgdG8gZG8gdGhpcyBtYW51YWxseS4KICAgICAg
ICAgbV9sZXhlci0+c2V0U3RhdGUoSFRNTDVMZXhlcjo6U2NyaXB0RGF0YVN0YXRlKTsKICAgICB9
CisKKyAgICBpZiAodG9rZW4udHlwZSgpID09IEhUTUw1VG9rZW46OlVuaW5pdGlhbGl6ZWQpCisg
ICAgICAgIHJldHVybiAwOworCisgICAgaWYgKHRva2VuLnR5cGUoKSA9PSBIVE1MNVRva2VuOjpE
T0NUWVBFKSB7CisgICAgICAgIERvY3R5cGVUb2tlbiBkb2N0eXBlVG9rZW47CisgICAgICAgIGRv
Y3R5cGVUb2tlbi5tX25hbWUuYXBwZW5kKHRva2VuLm5hbWUoKS5jaGFyYWN0ZXJzKCksIHRva2Vu
Lm5hbWUoKS5sZW5ndGgoKSk7CisgICAgICAgIGRvY3R5cGVUb2tlbi5tX3B1YmxpY0lEID0gdG9r
ZW4ucHVibGljSWRlbnRpZmllcigpOworICAgICAgICBkb2N0eXBlVG9rZW4ubV9zeXN0ZW1JRCA9
IHRva2VuLnN5c3RlbUlkZW50aWZpZXIoKTsKKworICAgICAgICBtX2xlZ2FjeUhUTUxQYXJzZXIt
PnBhcnNlRG9jdHlwZVRva2VuKCZkb2N0eXBlVG9rZW4pOworICAgICAgICByZXR1cm4gMDsKKyAg
ICB9CisKICAgICAvLyBGb3Igbm93LCB3ZSB0cmFuc2xhdGUgaW50byBhbiBvbGQtc3R5bGUgdG9r
ZW4gZm9yIHRlc3RpbmcuCiAgICAgVG9rZW4gb2xkU3R5bGVUb2tlbjsKICAgICBjb252ZXJ0VG9P
bGRTdHlsZSh0b2tlbiwgb2xkU3R5bGVUb2tlbik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVu
dGVkU3RyaW5nLmgKaW5kZXggYzVkYWFhYTAxYzAyYmUyODM2ZjhhZGY4ZjU1NjAzMDMzZWQyOTll
Mi4uMDYzM2Y0NDdlNTIwN2JlNWRiMmQ3ZTU2YjkzODNjNjhkMDZhNjI5YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaApAQCAtMTIyLDYgKzEyMiwxOSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKICAgICB9CiAKKyAgICAvLyBXQVJOSU5HOiBU
aGlzIG1ldGhvZCBpcyBjdXJyZW50bHkgdXNlZCBvbmx5IGJ5IHRoZSBIVE1MNSBwYXJzZXIgYW5k
IGlzIGluY29tcGxldGUuCisgICAgTG9va0FoZWFkUmVzdWx0IGxvb2tBaGVhZElnbm9yaW5nQ2Fz
ZShjb25zdCBTdHJpbmcmIHN0cmluZykKKyAgICB7CisgICAgICAgIGlmICghbV9wdXNoZWRDaGFy
MSAmJiBzdHJpbmcubGVuZ3RoKCkgPD0gKHVuc2lnbmVkKSBtX2N1cnJlbnRTdHJpbmcubV9sZW5n
dGgpIHsKKyAgICAgICAgICAgIGlmIChXVEY6OlVuaWNvZGU6OnVtZW1jYXNlY21wKHN0cmluZy5j
aGFyYWN0ZXJzKCksIG1fY3VycmVudFN0cmluZy5tX2N1cnJlbnQsIHN0cmluZy5sZW5ndGgoKSkp
CisgICAgICAgICAgICAgICAgcmV0dXJuIERpZE5vdE1hdGNoOworICAgICAgICAgICAgcmV0dXJu
IERpZE1hdGNoOworICAgICAgICB9CisgICAgICAgIC8vIFdlIGhhdmVuJ3QgaW1wbGVtZW50ZWQg
dGhlIHNsb3cgY2FzZSB5ZXQuCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gRGlkTm90TWF0Y2g7CisgICAgfQorCiAgICAgdm9pZCBhZHZhbmNlKCkKICAgICB7
CiAgICAgICAgIGlmICghbV9wdXNoZWRDaGFyMSAmJiBtX2N1cnJlbnRTdHJpbmcubV9sZW5ndGgg
PiAxKSB7CkBAIC0xMzgsNiArMTUxLDEyIEBAIHB1YmxpYzoKICAgICAgICAgYWR2YW5jZSgpOwog
ICAgIH0KIAorICAgIHZvaWQgYWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZShVQ2hhciBleHBl
Y3RlZENoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXhwZWN0ZWRDaGFy
YWN0ZXIsIFdURjo6VW5pY29kZTo6Zm9sZENhc2UoKmN1cnJlbnQoKSkgPT0gV1RGOjpVbmljb2Rl
Ojpmb2xkQ2FzZShleHBlY3RlZENoYXJhY3RlcikpOworICAgICAgICBhZHZhbmNlKCk7CisgICAg
fQorCiAgICAgdm9pZCBhZHZhbmNlUGFzdE5ld2xpbmUoaW50JiBsaW5lTnVtYmVyKQogICAgIHsK
ICAgICAgICAgQVNTRVJUKCpjdXJyZW50KCkgPT0gJ1xuJyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56932</attachid>
            <date>2010-05-24 14:52:54 -0700</date>
            <delta_ts>2010-05-24 14:58:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39571-20100524145253.patch</filename>
            <type>text/plain</type>
            <size>28490</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2OThkZjFhMTU0ODI0M2Y5MzYyOTg3ZjFiYTU1MzU3ZWVlN2VhOWFjLi40NTMwZDYw
ZGIxOGQzMTdhYjJiYjE0Yzc3N2ZmZTBiYmUzNzQ3YjdlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMTAtMDUtMjQgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZWFjaCB0aGUgSFRNTDUgcGFy
c2VyIHRvIGxleCBET0NUWVBFcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzk1NzEKKworICAgICAgICBBZGQgdGVzdHMgZm9yIERPQ1RZUEVzLgorCisg
ICAgICAgICogaHRtbDVsaWIvcmVzb3VyY2VzL2RvY3R5cGUwMS5kYXQ6IEFkZGVkLgorICAgICAg
ICAqIGh0bWw1bGliL3dlYmtpdC1ydW5uZXIuaHRtbDoKKwogMjAxMC0wNS0yNCAgU2hpbmljaGly
byBIYW1hamkgIDxoYW1hamlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgYnJv
a2VuIFF0IHRlc3QgZml4LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3Vy
Y2VzL2RvY3R5cGUwMS5kYXQgYi9MYXlvdXRUZXN0cy9odG1sNWxpYi9yZXNvdXJjZXMvZG9jdHlw
ZTAxLmRhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41NzUxMjljMTQ2NjY5YmY0ZjM1ZTE0MDdiZTM2NWNjZDAxZmUz
ZTUyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHRtbDVsaWIvcmVzb3VyY2VzL2Rv
Y3R5cGUwMS5kYXQKQEAgLTAsMCArMSwzMzUgQEAKKyNkYXRhCis8IURPQ1RZUEUgaHRtbD5IZWxs
bworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8
aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhZE9jdFlwRSBIdE1s
PkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
aHRtbD5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRt
bD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9D
VFlQRT5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSA+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
ID5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSA+Cit8IDxodG1sPgorfCAg
IDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBv
dGF0bz5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxo
dG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFE
T0NUWVBFIHBvdGF0byA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90
YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKwor
I2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8gdGFjbz5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8
IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAg
ICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byB0YWNvICJkZGQ+SGVsbG8KKyNl
cnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8g
c1lzdEVNPkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wg
PGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8
IURPQ1RZUEUgcG90YXRvIHNZc3RFTSAgICA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8
IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
ICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSAgIHBvdGF0byAgICAgICBzWXN0RU0gIGdnZz5I
ZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgor
fCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBF
IHBvdGF0byBTWVNURU0gdGFjbyAgPkhlbGxvCisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NU
WVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVs
bG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZU1RFTSAndGFjbyInPkhlbGxvCisjZXJy
b3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+
Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZ
U1RFTSAidGFjbyI+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRv
PgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2Rh
dGEKKzwhRE9DVFlQRSBwb3RhdG8gU1lTVEVNICJ0YWknY28iPkhlbGxvCisjZXJyb3JzCisjZG9j
dW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhlYWQ+Cit8ICAgPGJv
ZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRvIFNZU1RFTXRhY28g
ImRkZCI+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8
aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwh
RE9DVFlQRSBwb3RhdG8gZ3Jhc3MgU1lTVEVNIHRhY28+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVu
dAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4K
K3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBwb3RhdG8gcFViTEljPkhlbGxvCisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHBvdGF0bz4KK3wgPGh0bWw+Cit8ICAgPGhl
YWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiSGVsbG8iCisKKyNkYXRhCis8IURPQ1RZUEUgcG90YXRv
IHBVYkxJYyA+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgor
fCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEK
KzwhRE9DVFlQRSBwb3RhdG8gcFViTEljZ29vZj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8
IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAg
ICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgZ29vZj5IZWxsbwor
I2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxo
ZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0
byBQVUJMSUMgImdvJ29mIj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBw
b3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgor
CisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgJ2dvJ29mJz5IZWxsbworI2Vycm9ycwor
I2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3RhdG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAg
IDxib2R5PgorfCAgICAgIkhlbGxvIgorCisjZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMg
J2dvOmhoICAgb2YnID5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBwb3Rh
dG8+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorfCAgICAgIkhlbGxvIgorCisj
ZGF0YQorPCFET0NUWVBFIHBvdGF0byBQVUJMSUMgIlczQy0vL2RmZGYiIFNZU1RFTSBnZ2c+SGVs
bG8KKyNlcnJvcnMKKyNkb2N1bWVudAorfCA8IURPQ1RZUEUgcG90YXRvPgorfCA8aHRtbD4KK3wg
ICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIKKyAgICJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9odG1sNC9zdHJpY3QuZHRkIj5IZWxsbworI2Vycm9ycworI2RvY3VtZW50Cit8IDwh
RE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAgICJI
ZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSAuLi4+SGVsbG8KKyNlcnJvcnMKKyNkb2N1bWVudAor
fCA8IURPQ1RZUEUgLi4uPgorfCA8aHRtbD4KK3wgICA8aGVhZD4KK3wgICA8Ym9keT4KK3wgICAg
ICJIZWxsbyIKKworI2RhdGEKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhU
TUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iCisiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RU
RC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NU
WVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFkPgorfCAgIDxib2R5PgorCisjZGF0YQorPCFE
T0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgRnJhbWVzZXQvL0VOIgor
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLWZyYW1lc2V0LmR0ZCI+Cisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorCisjZGF0YQorPCFET0NUWVBFIHJvb3QtZWxlbWVudCBbU1lTVEVNIE9S
IFBVQkxJQyBGUEldICJ1cmkiIFsgCis8IS0tIGludGVybmFsIGRlY2xhcmF0aW9ucyAtLT4KK10+
CisjZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIHJvb3QtZWxlbWVudD4KK3wgPGh0bWw+
Cit8ICAgPGhlYWQ+Cit8ICAgPGJvZHk+Cit8ICAgICAiCitdPiIKKworI2RhdGEKKzwhRE9DVFlQ
RSBodG1sIFBVQkxJQworICAiLS8vV0FQRk9SVU0vL0RURCBYSFRNTCBNb2JpbGUgMS4wLy9FTiIK
KyAgICAiaHR0cDovL3d3dy53YXBmb3J1bS5vcmcvRFREL3hodG1sLW1vYmlsZTEwLmR0ZCI+Cisj
ZXJyb3JzCisjZG9jdW1lbnQKK3wgPCFET0NUWVBFIGh0bWw+Cit8IDxodG1sPgorfCAgIDxoZWFk
PgorfCAgIDxib2R5PgorCisjZGF0YQorPCFET0NUWVBFIEhUTUwgU1lTVEVNICJodHRwOi8vd3d3
LnczLm9yZy9EVEQvSFRNTDQtc3RyaWN0LmR0ZCI+PGJvZHk+PGI+TWluZSE8L2I+PC9ib2R5Pgor
I2Vycm9ycworI2RvY3VtZW50Cit8IDwhRE9DVFlQRSBodG1sPgorfCA8aHRtbD4KK3wgICA8aGVh
ZD4KK3wgICA8Ym9keT4KK3wgICAgIDxiPgorfCAgICAgICAiTWluZSEiCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odG1sNWxpYi93ZWJraXQtcnVubmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9odG1s
NWxpYi93ZWJraXQtcnVubmVyLmh0bWwKaW5kZXggNmMwZDg1ZWMwODQ0MjE3OGIzMDZmYzU1MzNm
Nzk0MzFlZjQyYzFhYS4uZDRlNGZjM2ZmMWZiYjVkMGQwZmFjZDQ0ZjEyZDNjNDQ4MDMzOWMxZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHRtbDVsaWIvd2Via2l0LXJ1bm5lci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2h0bWw1bGliL3dlYmtpdC1ydW5uZXIuaHRtbApAQCAtMTcyLDcgKzE3Miwx
MSBAQCBkaXNwbGF5OiBub25lOwogPHA+U2NyaXB0IGRpZCBub3QgcnVuPC9wPgogPGlmcmFtZT48
L2lmcmFtZT4KIDxzY3JpcHQ+Ci12YXIgdGVzdF9maWxlcyA9IFsncmVzb3VyY2VzL3dlYmtpdDAx
LmRhdCcsICdyZXNvdXJjZXMvY29tbWVudHMwMS5kYXQnXSwKK3ZhciB0ZXN0X2ZpbGVzID0gWwor
ICAgICAgICAncmVzb3VyY2VzL3dlYmtpdDAxLmRhdCcsCisgICAgICAgICdyZXNvdXJjZXMvZG9j
dHlwZTAxLmRhdCcsCisgICAgICAgICdyZXNvdXJjZXMvY29tbWVudHMwMS5kYXQnCisgICAgXSwK
ICAgICB0ZXN0cyA9IFtdLAogICAgIGlmcmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJpZnJhbWUiKVswXSwKICAgICBzdGF0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInAiKVswXS5maXJzdENoaWxkLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCBjZjM3NTZmOGE4NGU3NzVlNjNmMWRjMjgwYjBlNmZlNThj
NGUyMGI2Li4wYjc2YjA5ZDNkM2EwNjUzNDE4ZDI3YjdlZjJjZmZhODA1MjY1ZTQyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI5IEBACisyMDEwLTA1LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVhY2ggdGhlIEhU
TUw1IHBhcnNlciB0byBsZXggRE9DVFlQRXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTM5NTcxCisKKyAgICAgICAgKiBodG1sL0hUTUw1TGV4ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVMZXhlcjo6bmV4dFRva2VuKToKKyAgICAgICAgKiBo
dG1sL0hUTUw1TGV4ZXIuaDoKKyAgICAgICAgKiBodG1sL0hUTUw1VG9rZW4uaDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUw1VG9rZW46OmJlZ2luRE9DVFlQRSk6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MNVRva2VuOjpwdWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUw1VG9r
ZW46OnN5c3RlbUlkZW50aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVUb2tlbjo6c2V0
UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTDVU
b2tlbjo6c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTDVUb2tlbjo6YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkhUTUw1VG9rZW46OmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcik6CisgICAgICAgIChXZWJD
b3JlOjpIVE1MNVRva2VuOjpEb2N0eXBlRGF0YTo6RG9jdHlwZURhdGEpOgorICAgICAgICAqIGh0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb252ZXJ0VG9PbGRT
dHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xl
Z2FjeVBhcnNlcik6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6bG9va0FoZWFkSWdub3JpbmdDYXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlZ21lbnRlZFN0cmluZzo6YWR2YW5jZUFuZEFTU0VSVEln
bm9yaW5nQ2FzZSk6CisKIDIwMTAtMDUtMjQgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFw
cGxlLmNvbT4KIAogICAgICAgICBUcnkgdG8gZml4IGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUw1TGV4ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUw1TGV4ZXIuY3BwCmluZGV4
IDQ0ZWFlODM5ZTNhMzBkYjBhMWY2MDliOGE1MDEzZjMxODNhNTNiMDcuLmIwNzUzYjMxYTkyZjA4
YzM1NGZiY2M5ZjZmOTgzMjhmYTExNWJhYzkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
NUxleGVyLmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5jcHAKQEAgLTU3LDYgKzU3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwog
CituYW1lc3BhY2UgeworCiBpbmxpbmUgVUNoYXIgdG9Mb3dlckNhc2UoVUNoYXIgY2MpCiB7CiAg
ICAgQVNTRVJUKGNjID49ICdBJyAmJiBjYyA8PSAnWicpOwpAQCAtNjQsNiArNjYsMTQgQEAgaW5s
aW5lIFVDaGFyIHRvTG93ZXJDYXNlKFVDaGFyIGNjKQogICAgIHJldHVybiBjYyArIGxvd2VyQ2Fz
ZU9mZnNldDsKIH0KIAoraW5saW5lIHZvaWQgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVElnbm9yaW5n
Q2FzZShTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgY29uc3QgY2hhciogZXhwZWN0ZWRDaGFyYWN0
ZXJzKQoreworICAgIHdoaWxlICgqZXhwZWN0ZWRDaGFyYWN0ZXJzKQorICAgICAgICBzb3VyY2Uu
YWR2YW5jZUFuZEFTU0VSVElnbm9yaW5nQ2FzZSgqZXhwZWN0ZWRDaGFyYWN0ZXJzKyspOworfQor
Cit9CisKIEhUTUw1TGV4ZXI6OkhUTUw1TGV4ZXIoKQogewogICAgIHJlc2V0KCk7CkBAIC04NzQs
NiArODg0LDcgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBz
b3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICB9CiAgICAgICAgIGNhc2UgTWFya3Vw
RGVjbGFyYXRpb25PcGVuU3RhdGU6IHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwo
U3RyaW5nLCBkYXNoRGFzaFN0cmluZywgKCItLSIpKTsKKyAgICAgICAgICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBkb2N0eXBlU3RyaW5nLCAoImRvY3R5cGUiKSk7CiAgICAgICAgICAg
ICBpZiAoY2MgPT0gJy0nKSB7CiAgICAgICAgICAgICAgICAgU2VnbWVudGVkU3RyaW5nOjpMb29r
QWhlYWRSZXN1bHQgcmVzdWx0ID0gc291cmNlLmxvb2tBaGVhZChkYXNoRGFzaFN0cmluZyk7CiAg
ICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7
CkBAIC04ODQsOSArODk1LDIxIEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2VuKFNlZ21lbnRl
ZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIFdlIG5lZWQgdG8gd2FpdCBmb3IgbW9yZSBjaGFyYWN0ZXJzIHRvIGFycml2ZS4K
KyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ0QnIHx8IGNjID09ICdkJykgeworICAgICAg
ICAgICAgICAgIFNlZ21lbnRlZFN0cmluZzo6TG9va0FoZWFkUmVzdWx0IHJlc3VsdCA9IHNvdXJj
ZS5sb29rQWhlYWRJZ25vcmluZ0Nhc2UoZG9jdHlwZVN0cmluZyk7CisgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBTZWdtZW50ZWRTdHJpbmc6OkRpZE1hdGNoKSB7CisgICAgICAgICAgICAg
ICAgICAgIGFkdmFuY2VTdHJpbmdBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uoc291cmNlLCAiZG9jdHlw
ZSIpOworICAgICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN0YXRlOworICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlc3Vs
dCA9PSBTZWdtZW50ZWRTdHJpbmc6Ok5vdEVub3VnaENoYXJhY3RlcnMpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsgLy8gV2UgbmVlZCB0byB3YWl0IGZvciBtb3JlIGNoYXJhY3Rl
cnMgdG8gYXJyaXZlLgogICAgICAgICAgICAgfQogICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgLy8gRklYTUU6IFdlJ3JlIHN0aWxs
IG1pc3NpbmcgdGhlIGJpdHMgYWJvdXQgdGhlIGluc2VydGlvbiBtb2RlIGJlaW5nIGluIGZvcmVp
Z24gY29udGVudDoKKyAgICAgICAgICAgIC8vIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93
ZWItYXBwcy9jdXJyZW50LXdvcmsvbXVsdGlwYWdlL3Rva2VuaXphdGlvbi5odG1sI21hcmt1cC1k
ZWNsYXJhdGlvbi1vcGVuLXN0YXRlCisgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOworICAg
ICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzQ29tbWVudFN0YXRlOworICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDb21tZW50U3RhcnRTdGF0ZTogewogICAgICAg
ICAgICAgaWYgKGNjID09ICctJykKQEAgLTEwMTIsMTUgKzEwMzUsMTYgQEAgYm9vbCBIVE1MNUxl
eGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2Vu
KQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0g
J1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpIHsKLSAgICAgICAgICAgICAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSh0b0xv
d2VyQ2FzZShjYykpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFTmFtZVN0YXRl
OwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmJlZ2luRE9DVFlQRSgp
OwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1p
dEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2Vu
KCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAg
ICBtX3Rva2VuLT5iZWdpbkRPQ1RZUEUoY2MpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBE
T0NUWVBFTmFtZVN0YXRlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhh
bmRsZSBFT0YgcHJvcGVybHkuCkBAIC0xMDMwLDIzICsxMDU0LDQ1IEBAIGJvb2wgSFRNTDVMZXhl
cjo6bmV4dFRva2VuKFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikK
ICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEFmdGVyRE9DVFlQ
RU5hbWVTdGF0ZTsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICc+JykgewotICAgICAgICAg
ICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1
cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAg
ICAgICAgICB9IGVsc2UgaWYgKGNjID49ICdBJyAmJiBjYyA8PSAnWicpCi0gICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5hcHBlbmRUb05h
bWUodG9Mb3dlckNhc2UoY2MpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBu
b3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPmFwcGVuZFRvTmFtZShj
Yyk7CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQWZ0ZXJET0NUWVBFTmFtZVN0YXRl
OiB7CiAgICAgICAgICAgICBpZiAoY2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9
PSAnXHgwQycgfHwgY2MgPT0gJyAnKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0
eXBlVG9rZW4oKTsKKyAgICAgICAgICAgIGlmIChjYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAg
ICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0
ZTsKLSAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgcHVibGljU3RyaW5nLCAoInB1YmxpYyIp
KTsKKyAgICAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgc3lzdGVtU3Ry
aW5nLCAoInN5c3RlbSIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2MgPT0gJ1AnIHx8IGNjID09
ICdwJykgeworICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6Okxvb2tBaGVhZFJl
c3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHB1YmxpY1N0cmluZyk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpEaWRN
YXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmluZ0FuZEFTU0VSVEln
bm9yaW5nQ2FzZShzb3VyY2UsICJwdWJsaWMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3RhdGUgPSBBZnRlckRPQ1RZUEVQdWJsaWNLZXl3b3JkU3RhdGU7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQg
PT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
J1MnIHx8IGNjID09ICdzJykgeworICAgICAgICAgICAgICAgICAgICBTZWdtZW50ZWRTdHJpbmc6
Okxvb2tBaGVhZFJlc3VsdCByZXN1bHQgPSBzb3VyY2UubG9va0FoZWFkSWdub3JpbmdDYXNlKHN5
c3RlbVN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gU2VnbWVudGVk
U3RyaW5nOjpEaWRNYXRjaCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVN0cmlu
Z0FuZEFTU0VSVElnbm9yaW5nQ2FzZShzb3VyY2UsICJzeXN0ZW0iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG1fc3RhdGUgPSBBZnRlckRPQ1RZUEVTeXN0ZW1LZXl3b3JkU3RhdGU7CisgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNl
IGlmIChyZXN1bHQgPT0gU2VnbWVudGVkU3RyaW5nOjpOb3RFbm91Z2hDaGFyYWN0ZXJzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJvZ3VzRE9DVFlQRVN0YXRlOwor
ICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gRklYTUU6IEhhbmRsZSBFT0YgcHJvcGVybHku
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMTA1NSwxNiArMTEwMSwxNiBAQCBi
b29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVU
b2tlbiYgdG9rZW4pCiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVQdWJs
aWNJZGVudGlmaWVyU3RhdGU7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAg
ICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRv
RW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVB1YmxpY0lk
ZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0g
J1wnJykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRQdWJsaWNJ
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NU
WVBFUHVibGljSWRlbnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNl
IGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAg
ICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJl
bnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAg
ICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTEwNzgsMTUgKzExMjQsMTUg
QEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhU
TUw1VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAn
XHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIGVsc2UgaWYgKGNjID09ICciJykgewotICAgICAgICAgICAgICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRp
ZmllclRvRW1wdHlTdHJpbmcoKTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVB1
YmxpY0lkZW50aWZpZXJEb3VibGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
Y2MgPT0gJ1wnJykgewotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAg
ICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsKICAg
ICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVB1YmxpY0lkZW50aWZpZXJTaW5nbGVRdW90
ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgp
OwotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAg
ICAgICAgZW1pdEN1cnJlbnRUb2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRh
U3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVy
cm9yKCk7CkBAIC0xMTAyLDEwICsxMTQ4LDEwIEBAIGJvb2wgSFRNTDVMZXhlcjo6bmV4dFRva2Vu
KFNlZ21lbnRlZFN0cmluZyYgc291cmNlLCBIVE1MNVRva2VuJiB0b2tlbikKICAgICAgICAgICAg
IGVsc2UgaWYgKGNjID09ICc+JykgewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7
CiAgICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0
Q3VycmVudERvY3R5cGVUb2tlbigpOworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4o
KTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBt
X3Rva2VuLT5hcHBlbmRUb1B1YmxpY0lkZW50aWZpZXIoY2MpOwogICAgICAgICAgICAgLy8gRklY
TUU6IEhhbmRsZSBFT0YgcHJvcGVybHkuCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpA
QCAtMTExNSwxMCArMTE2MSwxMCBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdtZW50
ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBlbHNlIGlm
IChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAg
ICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRE
b2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAg
ICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgICAgICAgICAgICAgbV90b2tlbi0+
YXBwZW5kVG9QdWJsaWNJZGVudGlmaWVyKGNjKTsKICAgICAgICAgICAgIC8vIEZJWE1FOiBIYW5k
bGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExMjYs
MTUgKzExNzIsMTUgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5n
JiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAgICAgICAgaWYgKGNjID09ICdceDA5
JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8IGNjID09ICcgJykKICAgICAgICAg
ICAgICAgICBtX3N0YXRlID0gQmV0d2VlbkRPQ1RZUEVQdWJsaWNBbmRTeXN0ZW1JZGVudGlmaWVy
c1N0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7Ci0gICAgICAgICAgICAg
ICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVu
dFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY2MgPT0gJyInKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAgICAg
IG1fdG9rZW4tPnNldFB1YmxpY0lkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAg
ICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKICAgICAgICAgICAgICAgICBl
bWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgICAgICAgICAgbV90b2tlbi0+c2V0UHVibGljSWRlbnRpZmllclRvRW1wdHlTdHJpbmcoKTsK
ICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJTaW5nbGVR
dW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdFBh
cnNlRXJyb3IoKTsKQEAgLTExNDgsMTMgKzExOTQsMTMgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgaWYgKGNjID09ICdceDA5JyB8fCBjYyA9PSAnXHgwQScgfHwgY2MgPT0gJ1x4MEMnIHx8
IGNjID09ICcgJykKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gQmV0d2VlbkRPQ1RZUEVQdWJs
aWNBbmRTeXN0ZW1JZGVudGlmaWVyc1N0YXRlOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0g
Jz4nKSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAg
ICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9
IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJyInKSB7Ci0gICAgICAg
ICAgICAgICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRT
eXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUg
PSBET0NUWVBFU3lzdGVtSWRlbnRpZmllckRvdWJsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAg
fSBlbHNlIGlmIChjYyA9PSAnXCcnKSB7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVtZW50ZWQo
KTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9FbXB0eVN0
cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRlbnRpZmll
clNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTE2OSwxNiArMTIxNSwxNiBAQCBib29sIEhUTUw1TGV4
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVy
U3RhdGU7CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnIicpIHsKICAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Cisg
ICAgICAgICAgICAgICAgbV90b2tlbi0+c2V0U3lzdGVtSWRlbnRpZmllclRvRW1wdHlTdHJpbmco
KTsKICAgICAgICAgICAgICAgICBtX3N0YXRlID0gRE9DVFlQRVN5c3RlbUlkZW50aWZpZXJEb3Vi
bGVRdW90ZWRTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2MgPT0gJ1wnJykgewogICAg
ICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7Ci0gICAgICAgICAgICAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKKyAgICAgICAgICAgICAgICBtX3Rva2VuLT5zZXRTeXN0ZW1JZGVudGlmaWVyVG9F
bXB0eVN0cmluZygpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBET0NUWVBFU3lzdGVtSWRl
bnRpZmllclNpbmdsZVF1b3RlZFN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIGlmIChjYyA9PSAn
PicpIHsKICAgICAgICAgICAgICAgICBlbWl0UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9r
ZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAg
ICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgZW1pdFBhcnNlRXJyb3IoKTsKQEAgLTExOTEsMTYgKzEyMzcsMTYgQEAgYm9vbCBIVE1M
NUxleGVyOjpuZXh0VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRv
a2VuKQogICAgICAgICBjYXNlIEJlZm9yZURPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyU3RhdGU6IHsK
ICAgICAgICAgICAgIGlmIChjYyA9PSAnXHgwOScgfHwgY2MgPT0gJ1x4MEEnIHx8IGNjID09ICdc
eDBDJyB8fCBjYyA9PSAnICcpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBl
bHNlIGlmIChjYyA9PSAnIicpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgICAgICAgICAgaWYgKGNjID09ICciJykgeworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNl
dFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0
ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlmaWVyRG91YmxlUXVvdGVkU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UgaWYgKGNjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgICAgICAgICAgICAgIG1fdG9rZW4tPnNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5
U3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERPQ1RZUEVTeXN0ZW1JZGVudGlm
aWVyU2luZ2xlUXVvdGVkU3RhdGU7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGNjID09ICc+Jykg
ewogICAgICAgICAgICAgICAgIGVtaXRQYXJzZUVycm9yKCk7CiAgICAgICAgICAgICAgICAgbm90
SW1wbGVtZW50ZWQoKTsKLSAgICAgICAgICAgICAgICBlbWl0Q3VycmVudERvY3R5cGVUb2tlbigp
OworICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50VG9rZW4oKTsKICAgICAgICAgICAgICAgICBt
X3N0YXRlID0gRGF0YVN0YXRlOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBlbWl0UGFyc2VFcnJvcigpOwpAQCAtMTIxNiwxMCArMTI2MiwxMCBAQCBib29sIEhUTUw1TGV4
ZXI6Om5leHRUb2tlbihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4p
CiAgICAgICAgICAgICBlbHNlIGlmIChjYyA9PSAnPicpIHsKICAgICAgICAgICAgICAgICBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgICAg
ICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAgICAgICAgICBlbWl0
Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERhdGFTdGF0ZTsKICAg
ICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
ICAgICAgICAgICAgbV90b2tlbi0+YXBwZW5kVG9TeXN0ZW1JZGVudGlmaWVyKGNjKTsKICAgICAg
ICAgICAgIC8vIEZJWE1FOiBIYW5kbGUgRU9GIHByb3Blcmx5LgogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTEyMjksMTAgKzEyNzUsMTAgQEAgYm9vbCBIVE1MNUxleGVyOjpuZXh0
VG9rZW4oU2VnbWVudGVkU3RyaW5nJiBzb3VyY2UsIEhUTUw1VG9rZW4mIHRva2VuKQogICAgICAg
ICAgICAgZWxzZSBpZiAoY2MgPT0gJz4nKSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNlRXJy
b3IoKTsKICAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgICAgICAgICAgICAg
IGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CisgICAgICAgICAgICAgICAgZW1pdEN1cnJlbnRU
b2tlbigpOwogICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3RhdGU7CiAgICAgICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgICAgICBub3RJbXBsZW1lbnRlZCgpOworICAgICAgICAgICAg
ICAgIG1fdG9rZW4tPmFwcGVuZFRvU3lzdGVtSWRlbnRpZmllcihjYyk7CiAgICAgICAgICAgICAv
LyBGSVhNRTogSGFuZGxlIEVPRiBwcm9wZXJseS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICB9CkBAIC0xMjQwLDcgKzEyODYsNyBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tlbihTZWdt
ZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAgICBpZiAo
Y2MgPT0gJ1x4MDknIHx8IGNjID09ICdceDBBJyB8fCBjYyA9PSAnXHgwQycgfHwgY2MgPT0gJyAn
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZWxzZSBpZiAoY2MgPT0gJz4n
KSB7Ci0gICAgICAgICAgICAgICAgZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKTsKKyAgICAgICAg
ICAgICAgICBlbWl0Q3VycmVudFRva2VuKCk7CiAgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IERh
dGFTdGF0ZTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgZW1pdFBhcnNl
RXJyb3IoKTsKQEAgLTEyNTAsOCArMTI5NiwxMCBAQCBib29sIEhUTUw1TGV4ZXI6Om5leHRUb2tl
bihTZWdtZW50ZWRTdHJpbmcmIHNvdXJjZSwgSFRNTDVUb2tlbiYgdG9rZW4pCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEJvZ3VzRE9DVFlQRVN0YXRlOiB7Ci0g
ICAgICAgICAgICBpZiAoY2MgPT0gJz4nKQotICAgICAgICAgICAgICAgIGVtaXRDdXJyZW50RG9j
dHlwZVRva2VuKCk7CisgICAgICAgICAgICBpZiAoY2MgPT0gJz4nKSB7CisgICAgICAgICAgICAg
ICAgZW1pdEN1cnJlbnRUb2tlbigpOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBEYXRhU3Rh
dGU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBGSVhNRTogSGFuZGxlIEVPRiBwcm9w
ZXJseS4KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMzA3LDEzICsxMzU1LDEw
IEBAIGlubGluZSB2b2lkIEhUTUw1TGV4ZXI6OmVtaXRQYXJzZUVycm9yKCkKIAogaW5saW5lIHZv
aWQgSFRNTDVMZXhlcjo6ZW1pdEN1cnJlbnRUb2tlbigpCiB7CisgICAgQVNTRVJUKG1fdG9rZW4t
PnR5cGUoKSAhPSBIVE1MNVRva2VuOjpVbmluaXRpYWxpemVkKTsKICAgICBtX2VtaXRQZW5kaW5n
ID0gdHJ1ZTsKICAgICBpZiAobV90b2tlbi0+dHlwZSgpID09IEhUTUw1VG9rZW46OlN0YXJ0VGFn
KQogICAgICAgICBtX2FwcHJvcHJpYXRlRW5kVGFnTmFtZSA9IG1fdG9rZW4tPm5hbWUoKTsKIH0K
IAotaW5saW5lIHZvaWQgSFRNTDVMZXhlcjo6ZW1pdEN1cnJlbnREb2N0eXBlVG9rZW4oKQotewot
fQotCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oIGIvV2ViQ29yZS9o
dG1sL0hUTUw1TGV4ZXIuaAppbmRleCA2ZDYxY2MyMmRhMTM4ODUxMDg3M2QyNzVkNGRkN2JhMzQy
MTU2NGZhLi5iMzIyODJiOTlhMzMzY2QwMzE4ODYzM2ZlM2I4MjFmNGIzOGU0N2Y2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2h0bWwvSFRNTDVMZXhlci5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNUxl
eGVyLmgKQEAgLTEyOSw3ICsxMjksNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGlu
bGluZSB2b2lkIGVtaXRDaGFyYWN0ZXIoVUNoYXIpOwogICAgICAgICBpbmxpbmUgdm9pZCBlbWl0
UGFyc2VFcnJvcigpOwogICAgICAgICBpbmxpbmUgdm9pZCBlbWl0Q3VycmVudFRva2VuKCk7Ci0g
ICAgICAgIGlubGluZSB2b2lkIGVtaXRDdXJyZW50RG9jdHlwZVRva2VuKCk7CiAKICAgICAgICAg
aW5saW5lIGJvb2wgdGVtcG9yYXJ5QnVmZmVySXMoY29uc3QgY2hhciopOwogCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvSFRNTDVUb2tlbi5oIGIvV2ViQ29yZS9odG1sL0hUTUw1VG9rZW4uaApp
bmRleCAxOTE4NTg5OWQ4N2NkYzA1OWQyZTc0NjNhOWZmNjA5NGYwZjQ5ZThiLi5mOWNjMzUxOTZm
OTVmOTc5NTBjNGQ0NWViODE1YzIxYTczYTgzNTIzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwv
SFRNTDVUb2tlbi5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MNVRva2VuLmgKQEAgLTEwMSw2ICsx
MDEsMjEgQEAgcHVibGljOgogICAgICAgICBtX2RhdGFTdHJpbmcgPSBBdG9taWNTdHJpbmcoKTsK
ICAgICB9CiAKKyAgICB2b2lkIGJlZ2luRE9DVFlQRSgpCisgICAgeworICAgICAgICBBU1NFUlQo
bV90eXBlID09IFVuaW5pdGlhbGl6ZWQpOworICAgICAgICBtX3R5cGUgPSBET0NUWVBFOworICAg
ICAgICBtX2RhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9kYXRhU3RyaW5nID0gQXRvbWljU3RyaW5n
KCk7CisgICAgICAgIG1fZG9jdHlwZURhdGEuc2V0KG5ldyBEb2N0eXBlRGF0YSgpKTsKKyAgICB9
CisKKyAgICB2b2lkIGJlZ2luRE9DVFlQRShVQ2hhciBjaGFyYWN0ZXIpCisgICAgeworICAgICAg
ICBiZWdpbkRPQ1RZUEUoKTsKKyAgICAgICAgbV9kYXRhLmFwcGVuZChjaGFyYWN0ZXIpOworICAg
IH0KKwogICAgIHZvaWQgYXBwZW5kVG9OYW1lKFVDaGFyIGNoYXJhY3RlcikKICAgICB7CiAgICAg
ICAgIEFTU0VSVChtX3R5cGUgPT0gU3RhcnRUYWcgfHwgbV90eXBlID09IEVuZFRhZyB8fCBtX3R5
cGUgPT0gRE9DVFlQRSk7CkBAIC0xNzEsNyArMTg2LDY1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIGRhdGFTdHJpbmcoKTsKICAgICB9CiAKKyAgICAvLyBGSVhNRTogRGlzdGluZ3Vpc2ggYmV0
d2VlbiBhIG1pc3NpbmcgcHVibGljIGlkZW50aWZlciBhbmQgYW4gZW1wdHkgb25lLgorICAgIGNv
bnN0IFdURjo6VmVjdG9yPFVDaGFyPiYgcHVibGljSWRlbnRpZmllcigpCisgICAgeworICAgICAg
ICBBU1NFUlQobV90eXBlID09IERPQ1RZUEUpOworICAgICAgICByZXR1cm4gbV9kb2N0eXBlRGF0
YS0+bV9wdWJsaWNJZGVudGlmaWVyOworICAgIH0KKworICAgIC8vIEZJWE1FOiBEaXN0aW5ndWlz
aCBiZXR3ZWVuIGEgbWlzc2luZyBzeXN0ZW0gaWRlbnRpZmVyIGFuZCBhbiBlbXB0eSBvbmUuCisg
ICAgY29uc3QgV1RGOjpWZWN0b3I8VUNoYXI+JiBzeXN0ZW1JZGVudGlmaWVyKCkKKyAgICB7Cisg
ICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIHJldHVybiBtX2RvY3R5
cGVEYXRhLT5tX3N5c3RlbUlkZW50aWZpZXI7CisgICAgfQorCisgICAgdm9pZCBzZXRQdWJsaWNJ
ZGVudGlmaWVyVG9FbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBBU1NFUlQobV90eXBlID09
IERPQ1RZUEUpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX2hhc1B1YmxpY0lkZW50aWZpZXIg
PSB0cnVlOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lkZW50aWZpZXIuY2xlYXIo
KTsKKyAgICB9CisKKyAgICB2b2lkIHNldFN5c3RlbUlkZW50aWZpZXJUb0VtcHR5U3RyaW5nKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIG1fZG9j
dHlwZURhdGEtPm1faGFzU3lzdGVtSWRlbnRpZmllciA9IHRydWU7CisgICAgICAgIG1fZG9jdHlw
ZURhdGEtPm1fc3lzdGVtSWRlbnRpZmllci5jbGVhcigpOworICAgIH0KKworICAgIHZvaWQgYXBw
ZW5kVG9QdWJsaWNJZGVudGlmaWVyKFVDaGFyIGNoYXJhY3RlcikKKyAgICB7CisgICAgICAgIEFT
U0VSVChtX3R5cGUgPT0gRE9DVFlQRSk7CisgICAgICAgIEFTU0VSVChtX2RvY3R5cGVEYXRhLT5t
X2hhc1B1YmxpY0lkZW50aWZpZXIpOworICAgICAgICBtX2RvY3R5cGVEYXRhLT5tX3B1YmxpY0lk
ZW50aWZpZXIuYXBwZW5kKGNoYXJhY3Rlcik7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRUb1N5
c3RlbUlkZW50aWZpZXIoVUNoYXIgY2hhcmFjdGVyKQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
dHlwZSA9PSBET0NUWVBFKTsKKyAgICAgICAgQVNTRVJUKG1fZG9jdHlwZURhdGEtPm1faGFzU3lz
dGVtSWRlbnRpZmllcik7CisgICAgICAgIG1fZG9jdHlwZURhdGEtPm1fc3lzdGVtSWRlbnRpZmll
ci5hcHBlbmQoY2hhcmFjdGVyKTsKKyAgICB9CisKIHByaXZhdGU6CisgICAgY2xhc3MgRG9jdHlw
ZURhdGEgeworICAgIHB1YmxpYzoKKyAgICAgICAgRG9jdHlwZURhdGEoKQorICAgICAgICAgICAg
OiBtX2hhc1B1YmxpY0lkZW50aWZpZXIoZmFsc2UpCisgICAgICAgICAgICAsIG1faGFzU3lzdGVt
SWRlbnRpZmllcihmYWxzZSkKKyAgICAgICAgICAgICwgbV9mb3JjZVF1aXJrcyhmYWxzZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBtX2hhc1B1YmxpY0lkZW50aWZpZXI7
CisgICAgICAgIGJvb2wgbV9oYXNTeXN0ZW1JZGVudGlmaWVyOworICAgICAgICBib29sIG1fZm9y
Y2VRdWlya3M7CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3B1YmxpY0lkZW50aWZpZXI7
CisgICAgICAgIFdURjo6VmVjdG9yPFVDaGFyPiBtX3N5c3RlbUlkZW50aWZpZXI7CisgICAgfTsK
KwogICAgIEF0b21pY1N0cmluZyBkYXRhU3RyaW5nKCkKICAgICB7CiAgICAgICAgIGlmICghbV9k
YXRhLmlzRW1wdHkoKSAmJiBtX2RhdGFTdHJpbmcuaXNFbXB0eSgpKQpAQCAtMTg3LDkgKzI2MCw3
IEBAIHByaXZhdGU6CiAgICAgV1RGOjpWZWN0b3I8VUNoYXIsIDEwMjQ+IG1fZGF0YTsKIAogICAg
IC8vIEZvciBET0NUWVBFCi0gICAgU3RyaW5nIG1fcHVibGljSWRlbnRpZmllcjsKLSAgICBTdHJp
bmcgbV9zeXN0ZW1JZGVudGlmaWVyOwotICAgIGJvb2wgbV9mb3JjZVF1aXJrczsKKyAgICBPd25Q
dHI8RG9jdHlwZURhdGE+IG1fZG9jdHlwZURhdGE7CiAKICAgICAvLyBGb3IgU3RhcnRUYWcgYW5k
IEVuZFRhZwogICAgIGJvb2wgbV9zZWxmQ2xvc2luZzsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MNVRyZWVCdWlsZGVyLmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MNVRyZWVCdWlsZGVyLmNw
cAppbmRleCBhZjUzYWM2YjkyZGJkNWE1ZTc1ZDE0ZjcyZDQ3MjEyYjU5YjQ3OTdkLi4yMDQ4ODg2
Njk5NGE4ZjFlNWExNjAyZjc5NzgyMDY3ZDliOTk1OGRiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvSFRNTDVUcmVlQnVpbGRlci5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUw1VHJlZUJ1aWxk
ZXIuY3BwCkBAIC01Miw5ICs1Miw5IEBAIHN0YXRpYyB2b2lkIGNvbnZlcnRUb09sZFN0eWxlKEhU
TUw1VG9rZW4mIHRva2VuLCBUb2tlbiYgb2xkU3R5bGVUb2tlbikKIHsKICAgICBzd2l0Y2ggKHRv
a2VuLnR5cGUoKSkgewogICAgIGNhc2UgSFRNTDVUb2tlbjo6VW5pbml0aWFsaXplZDoKKyAgICBj
YXNlIEhUTUw1VG9rZW46OkRPQ1RZUEU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEhUTUw1VG9rZW46OkRPQ1RZUEU6CiAgICAgY2FzZSBI
VE1MNVRva2VuOjpFbmRPZkZpbGU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAg
ICAgICBub3RJbXBsZW1lbnRlZCgpOwpAQCAtOTYsNiArOTYsMTcgQEAgUGFzc1JlZlB0cjxOb2Rl
PiBIVE1MNVRyZWVCdWlsZGVyOjpwYXNzVG9rZW5Ub0xlZ2FjeVBhcnNlcihIVE1MNVRva2VuJiB0
b2tlbikKICAgICAgICAgLy8gd2hlbiB1c2luZyB0aGUgb2xkIHBhcnNlciBmb3Igd2UgaGF2ZSB0
byBkbyB0aGlzIG1hbnVhbGx5LgogICAgICAgICBtX2xleGVyLT5zZXRTdGF0ZShIVE1MNUxleGVy
OjpTY3JpcHREYXRhU3RhdGUpOwogICAgIH0KKworICAgIGlmICh0b2tlbi50eXBlKCkgPT0gSFRN
TDVUb2tlbjo6RE9DVFlQRSkgeworICAgICAgICBEb2N0eXBlVG9rZW4gZG9jdHlwZVRva2VuOwor
ICAgICAgICBkb2N0eXBlVG9rZW4ubV9uYW1lLmFwcGVuZCh0b2tlbi5uYW1lKCkuY2hhcmFjdGVy
cygpLCB0b2tlbi5uYW1lKCkubGVuZ3RoKCkpOworICAgICAgICBkb2N0eXBlVG9rZW4ubV9wdWJs
aWNJRCA9IHRva2VuLnB1YmxpY0lkZW50aWZpZXIoKTsKKyAgICAgICAgZG9jdHlwZVRva2VuLm1f
c3lzdGVtSUQgPSB0b2tlbi5zeXN0ZW1JZGVudGlmaWVyKCk7CisKKyAgICAgICAgbV9sZWdhY3lI
VE1MUGFyc2VyLT5wYXJzZURvY3R5cGVUb2tlbigmZG9jdHlwZVRva2VuKTsKKyAgICAgICAgcmV0
dXJuIDA7CisgICAgfQorCiAgICAgLy8gRm9yIG5vdywgd2UgdHJhbnNsYXRlIGludG8gYW4gb2xk
LXN0eWxlIHRva2VuIGZvciB0ZXN0aW5nLgogICAgIFRva2VuIG9sZFN0eWxlVG9rZW47CiAgICAg
Y29udmVydFRvT2xkU3R5bGUodG9rZW4sIG9sZFN0eWxlVG9rZW4pOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1NlZ21lbnRlZFN0cmluZy5oIGIvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1NlZ21lbnRlZFN0cmluZy5oCmluZGV4IGM1ZGFhYWEwMWMwMmJlMjgzNmY4YWRmOGY1NTYw
MzAzM2VkMjk5ZTIuLjA2MzNmNDQ3ZTUyMDdiZTVkYjJkN2U1NmI5MzgzYzY4ZDA2YTYyOWEgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9TZWdtZW50ZWRTdHJpbmcuaAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvU2VnbWVudGVkU3RyaW5nLmgKQEAgLTEyMiw2ICsxMjIsMTkg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gRGlkTm90TWF0Y2g7CiAgICAgfQogCisgICAgLy8g
V0FSTklORzogVGhpcyBtZXRob2QgaXMgY3VycmVudGx5IHVzZWQgb25seSBieSB0aGUgSFRNTDUg
cGFyc2VyIGFuZCBpcyBpbmNvbXBsZXRlLgorICAgIExvb2tBaGVhZFJlc3VsdCBsb29rQWhlYWRJ
Z25vcmluZ0Nhc2UoY29uc3QgU3RyaW5nJiBzdHJpbmcpCisgICAgeworICAgICAgICBpZiAoIW1f
cHVzaGVkQ2hhcjEgJiYgc3RyaW5nLmxlbmd0aCgpIDw9ICh1bnNpZ25lZCkgbV9jdXJyZW50U3Ry
aW5nLm1fbGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoV1RGOjpVbmljb2RlOjp1bWVtY2FzZWNt
cChzdHJpbmcuY2hhcmFjdGVycygpLCBtX2N1cnJlbnRTdHJpbmcubV9jdXJyZW50LCBzdHJpbmcu
bGVuZ3RoKCkpKQorICAgICAgICAgICAgICAgIHJldHVybiBEaWROb3RNYXRjaDsKKyAgICAgICAg
ICAgIHJldHVybiBEaWRNYXRjaDsKKyAgICAgICAgfQorICAgICAgICAvLyBXZSBoYXZlbid0IGlt
cGxlbWVudGVkIHRoZSBzbG93IGNhc2UgeWV0LgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKKyAgICAgICAgcmV0dXJuIERpZE5vdE1hdGNoOworICAgIH0KKwogICAgIHZvaWQgYWR2YW5j
ZSgpCiAgICAgewogICAgICAgICBpZiAoIW1fcHVzaGVkQ2hhcjEgJiYgbV9jdXJyZW50U3RyaW5n
Lm1fbGVuZ3RoID4gMSkgewpAQCAtMTM4LDYgKzE1MSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIGFk
dmFuY2UoKTsKICAgICB9CiAKKyAgICB2b2lkIGFkdmFuY2VBbmRBU1NFUlRJZ25vcmluZ0Nhc2Uo
VUNoYXIgZXhwZWN0ZWRDaGFyYWN0ZXIpCisgICAgeworICAgICAgICBBU1NFUlRfVU5VU0VEKGV4
cGVjdGVkQ2hhcmFjdGVyLCBXVEY6OlVuaWNvZGU6OmZvbGRDYXNlKCpjdXJyZW50KCkpID09IFdU
Rjo6VW5pY29kZTo6Zm9sZENhc2UoZXhwZWN0ZWRDaGFyYWN0ZXIpKTsKKyAgICAgICAgYWR2YW5j
ZSgpOworICAgIH0KKwogICAgIHZvaWQgYWR2YW5jZVBhc3ROZXdsaW5lKGludCYgbGluZU51bWJl
cikKICAgICB7CiAgICAgICAgIEFTU0VSVCgqY3VycmVudCgpID09ICdcbicpOwo=
</data>
<flag name="review"
          id="41429"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>