<?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>142795</bug_id>
          
          <creation_ts>2015-03-17 15:03:54 -0700</creation_ts>
          <short_desc>Function bodies should always include braces</short_desc>
          <delta_ts>2015-03-17 17:07:57 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>oliver</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1077982</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 15:03:54 -0700</bug_when>
    <thetext>Function bodies should always include braces</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078019</commentid>
    <comment_count>1</comment_count>
      <attachid>248883</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 16:22:14 -0700</bug_when>
    <thetext>Created attachment 248883
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078022</commentid>
    <comment_count>2</comment_count>
      <attachid>248884</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 16:30:57 -0700</bug_when>
    <thetext>Created attachment 248884
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078032</commentid>
    <comment_count>3</comment_count>
      <attachid>248884</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-03-17 16:57:22 -0700</bug_when>
    <thetext>Comment on attachment 248884
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        * generate-js-builtins: Ditto.

Ditto what?  Looks like you changed from using linkGlobalCode() to link().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078037</commentid>
    <comment_count>4</comment_count>
      <attachid>248884</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2015-03-17 17:05:22 -0700</bug_when>
    <thetext>Comment on attachment 248884
Patch

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

r=me too with comment typo fix.

&gt; Source/JavaScriptCore/ChangeLog:41
&gt; +        leading space because that&apos;s what this functinon&apos;s comment says is required

/functinon/function/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1078039</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-03-17 17:07:57 -0700</bug_when>
    <thetext>Committed r181673: &lt;http://trac.webkit.org/changeset/181673&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248883</attachid>
            <date>2015-03-17 16:22:14 -0700</date>
            <delta_ts>2015-03-17 16:30:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142795-20150317162144.patch</filename>
            <type>text/plain</type>
            <size>26816</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVkZSBicmFjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmluZyBhIG1vZGUgZm9y
IGV4Y2x1ZGluZyB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFjZXMgZnJvbSBhIGZ1bmN0aW9u
CisgICAgICAgIGJvZHkgd2FzIHVubmVjZXNzYXJ5IGFuZCBjb25mdXNpbmcuCisKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVC
bG9jayk6IEFkb3B0IHRoZSBuZXcgb25lIHRydWUgbGlua2luZyBmdW5jdGlvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvZGVCbG9ja0Zvcik6IE5vIG5lZWQgdG8gcGFzcyB0aHJvdWdoCisgICAgICAgIGEgYm9vbGVh
bjogdGhlcmUgaXMgb25seSBvbmUga2luZCBvZiBmdW5jdGlvbiBub3cuCisKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVjdXRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtHbG9i
YWxDb2RlKTogRGVsZXRlZC4gTGV0J3Mgb25seSBoYXZlIG9uZSB3YXkgdG8gZG8gdGhpbmdzLgor
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBnZW5l
cmF0ZS1qcy1idWlsdGluczogRGl0dG8uCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBh
cnNlKTogbmVlZHNSZXBhcnNpbmdBZGp1c3RtZW50IGlzIGFsd2F5cyB0cnVlIG5vdywgc28gSSBy
ZW1vdmVkIGl0LgorCisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJvZHlJbmNsdWRlc0JyYWNl
cyk6IERlbGV0ZWQuIFJlbW92ZWQgdW51c2VkIHN0dWZmLgorCisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOiBBbHdheXMgcHJvdmlkZSBhCisgICAgICAgIGxlYWRp
bmcgc3BhY2UgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGlzIGZ1bmN0aW5vbidzIGNvbW1lbnQgc2F5
cyBpcyByZXF1aXJlZAorICAgICAgICBmb3Igd2ViIGNvbXBhdGliaWxpdHkuIFdlIHVzZWQgdG8g
ZmFrZSB0aGlzIHVwIGFmdGVyIHRoZSBmYWN0IHdoZW4KKyAgICAgICAgc3RyaW5naWZ5aW5nLCBi
YXNlZCBvbiB0aGUgYm9keUluY2x1ZGVzQnJhY2VzIGZsYWcsIGJ1dCB0aGF0IGZsYWcgaXMgZ29u
ZSBub3cuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6aW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKTogTm8gbmVlZCB0byBhZGQgYnJhY2VzIGFuZC9vciBhIHNwYWNl
CisgICAgICAgIGFmdGVyIHRoZSBmYWN0IC0tIHdlIGFsd2F5cyBoYXZlIHRoZW0gbm93LgorCiAy
MDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbHQtaW4gZnVuY3Rpb25zIHNob3VsZCBrbm93IHRoYXQgdGhleSB1c2Ugc3RyaWN0IG1vZGUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMJKHJldmlz
aW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlu
cwkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoIiIiCiAjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKIEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCiB7IFxcCi0gICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rR2xvYmFsQ29kZSh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwK
IH0KIAogSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJl
dmlzaW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxv
Y2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzUzLDcgKzE3NTMsNyBAQCBDb2RlQmxvY2s6OkNv
ZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25E
ZWNsKGkpOwogICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkgfHwgdm0oKS0+Y29udHJv
bEZsb3dQcm9maWxlcigpKQogICAgICAgICAgICAgdm0oKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENh
Y2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQo
KSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5r
ZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwotICAgICAgICBtX2Z1bmN0
aW9uRGVjbHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkRXhlY3V0YWJs
ZS0+bGlua0luc2lkZUV4ZWN1dGFibGUoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCkp
KTsKKyAgICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxl
LCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291cmNl
KCkpKTsKICAgICB9CiAKICAgICBtX2Z1bmN0aW9uRXhwcnMucmVzaXplVG9GaXQodW5saW5rZWRD
b2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25FeHBycygpKTsKQEAgLTE3NjEsNyArMTc2MSw3IEBA
IENvZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG8KICAgICAgICAgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJs
b2NrLT5mdW5jdGlvbkV4cHIoaSk7CiAgICAgICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSB8
fCB2bSgpLT5jb250cm9sRmxvd1Byb2ZpbGVyKCkpCiAgICAgICAgICAgICB2bSgpLT5mdW5jdGlv
bkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVjdXRh
YmxlLT5zb3VyY2VJRCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdTdGFydE9m
ZnNldCgpLCB1bmxpbmtlZEV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdFbmRPZmZzZXQoKSk7Ci0g
ICAgICAgIG1fZnVuY3Rpb25FeHByc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5s
aW5rZWRFeGVjdXRhYmxlLT5saW5rSW5zaWRlRXhlY3V0YWJsZSgqbV92bSwgb3duZXJFeGVjdXRh
YmxlLT5zb3VyY2UoKSkpOworICAgICAgICBtX2Z1bmN0aW9uRXhwcnNbaV0uc2V0KCptX3ZtLCBv
d25lckV4ZWN1dGFibGUsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluaygqbV92bSwgb3duZXJFeGVj
dXRhYmxlLT5zb3VyY2UoKSkpOwogICAgIH0KIAogICAgIGlmICh1bmxpbmtlZENvZGVCbG9jay0+
aGFzUmFyZURhdGEoKSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1Vu
bGlua2VkQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01MiwxMyArNTIsMTMgQEAgY29uc3QgQ2xhc3NJbmZvIFVubGlua2VkRnVuY3Rp
b25Db2RlQmxvYwogc3RhdGljIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGdlbmVyYXRlRnVu
Y3Rpb25Db2RlQmxvY2soCiAgICAgVk0mIHZtLCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLAogICAgIENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCwgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwKLSAgICBVbmxpbmtlZEZ1bmN0aW9uS2luZCBmdW5jdGlvbktpbmQsIGJvb2wg
Ym9keUluY2x1ZGVzQnJhY2VzLCBQYXJzZXJFcnJvciYgZXJyb3IpCisgICAgVW5saW5rZWRGdW5j
dGlvbktpbmQgZnVuY3Rpb25LaW5kLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAgSlNQYXJz
ZXJCdWlsdGluTW9kZSBidWlsdGluTW9kZSA9IGV4ZWN1dGFibGUtPmlzQnVpbHRpbkZ1bmN0aW9u
KCkgPyBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluIDogSlNQYXJzZXJCdWlsdGluTW9kZTo6
Tm90QnVpbHRpbjsKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSA9IGV4ZWN1dGFi
bGUtPmlzSW5TdHJpY3RDb250ZXh0KCkgPyBKU1BhcnNlclN0cmljdE1vZGU6OlN0cmljdCA6IEpT
UGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxGdW5jdGlv
bk5vZGU+IGZ1bmN0aW9uID0gcGFyc2U8RnVuY3Rpb25Ob2RlPigKICAgICAgICAgJnZtLCBzb3Vy
Y2UsIGV4ZWN1dGFibGUtPnBhcmFtZXRlcnMoKSwgZXhlY3V0YWJsZS0+bmFtZSgpLCBidWlsdGlu
TW9kZSwKLSAgICAgICAgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZTo6RnVuY3Rpb24sIGVy
cm9yLCAwLCBib2R5SW5jbHVkZXNCcmFjZXMpOworICAgICAgICBzdHJpY3RNb2RlLCBKU1BhcnNl
ckNvZGVUeXBlOjpGdW5jdGlvbiwgZXJyb3IsIDApOwogCiAgICAgaWYgKCFmdW5jdGlvbikgewog
ICAgICAgICBBU1NFUlQoZXJyb3IuaXNWYWxpZCgpKTsKQEAgLTEyOSwxMiArMTI5LDEzIEBAIHZv
aWQgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OnZpc2l0Q2gKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9zeW1ib2xUYWJsZUZvckNvbnN0cnVjdCk7CiB9CiAKLUZ1bmN0aW9u
RXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVjdXRh
YmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgb3duZXJTb3VyY2UpCitGdW5jdGlvbkV4ZWN1
dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rKFZNJiB2bSwgY29uc3QgU291
cmNlQ29kZSYgb3duZXJTb3VyY2UpCiB7CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtX3NvdXJj
ZU92ZXJyaWRlID8gU291cmNlQ29kZShtX3NvdXJjZU92ZXJyaWRlKSA6IG93bmVyU291cmNlOwog
ICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9IHNvdXJjZS5maXJzdExpbmUoKSArIG1fZmlyc3RMaW5l
T2Zmc2V0OwogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCkg
KyBtX3N0YXJ0T2Zmc2V0OwogCisgICAgLy8gQWRqdXN0IHRvIG9uZS1iYXNlZCBpbmRleGluZy4K
ICAgICBib29sIHN0YXJ0Q29sdW1uSXNPbkZpcnN0U291cmNlTGluZSA9ICFtX2ZpcnN0TGluZU9m
ZnNldDsKICAgICB1bnNpZ25lZCBzdGFydENvbHVtbiA9IG1fdW5saW5rZWRCb2R5U3RhcnRDb2x1
bW4gKyAoc3RhcnRDb2x1bW5Jc09uRmlyc3RTb3VyY2VMaW5lID8gc291cmNlLnN0YXJ0Q29sdW1u
KCkgOiAxKTsKICAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbV9saW5lQ291bnQ7
CkBAIC0xNDQsMjcgKzE0NSw2IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogVW5saW5rZWRGdW5jdGlv
bkV4ZWMKICAgICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGNvZGUsIHRo
aXMsIGZpcnN0TGluZSwgZmlyc3RMaW5lICsgbV9saW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRD
b2x1bW4pOwogfQogCi1GdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlOjpsaW5rR2xvYmFsQ29kZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSkKLXsK
LSAgICBBU1NFUlQoIW1fc291cmNlT3ZlcnJpZGUpOwotICAgIHVuc2lnbmVkIGZpcnN0TGluZSA9
IHNvdXJjZS5maXJzdExpbmUoKSArIG1fZmlyc3RMaW5lT2Zmc2V0OwotICAgIHVuc2lnbmVkIHN0
YXJ0T2Zmc2V0ID0gc291cmNlLnN0YXJ0T2Zmc2V0KCkgKyBtX3N0YXJ0T2Zmc2V0OwotCi0gICAg
Ly8gV2UgZG9uJ3QgaGF2ZSBhbnkgb3duZXIgZXhlY3V0YWJsZS4gVGhlIHNvdXJjZSBzdHJpbmcg
aXMgZWZmZWN0aXZlbHkgbGlrZSBhIGdsb2JhbAotICAgIC8vIHN0cmluZyAobGlrZSBpbiB0aGUg
aGFuZGxpbmcgb2YgZXZhbCkuIEhlbmNlLCB0aGUgc3RhcnRDb2x1bW4gaXMgYWx3YXlzIDEuCi0g
ICAgdW5zaWduZWQgc3RhcnRDb2x1bW4gPSAxOwotICAgIGJvb2wgZW5kQ29sdW1uSXNPblN0YXJ0
TGluZSA9ICFtX2xpbmVDb3VudDsKLSAgICAvLyBUaGUgdW5saW5rZWRCb2R5RW5kQ29sdW1uIGlz
IDAtYmFzZWQuIEhlbmNlLCB3ZSBuZWVkIHRvIGFkZCAxIHRvIGl0LiBCdXQgaWYgdGhlCi0gICAg
Ly8gZW5kQ29sdW1uIGlzIG9uIHRoZSBzdGFydExpbmUsIHRoZW4gd2UgbmVlZCB0byBzdWJ0cmFj
dCBiYWNrIHRoZSBhZGp1c3RtZW50IGZvcgotICAgIC8vIHRoZSBvcGVuIGJyYWNlIHJlc3VsdGlu
ZyBpbiBhbiBhZGp1c3RtZW50IG9mIDAuCi0gICAgdW5zaWduZWQgZW5kQ29sdW1uRXhjbHVkaW5n
QnJhY2VzID0gbV91bmxpbmtlZEJvZHlFbmRDb2x1bW4gKyAoZW5kQ29sdW1uSXNPblN0YXJ0TGlu
ZSA/IDAgOiAxKTsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSA9
IHN0YXJ0T2Zmc2V0ICsgMTsKLSAgICB1bnNpZ25lZCBlbmRPZmZzZXRFeGNsdWRpbmdDbG9zZUJy
YWNlID0gc3RhcnRPZmZzZXQgKyBtX3NvdXJjZUxlbmd0aCAtIDE7Ci0gICAgU291cmNlQ29kZSBj
b2RlKHNvdXJjZS5wcm92aWRlcigpLCBzdGFydE9mZnNldEV4Y2x1ZGluZ09wZW5CcmFjZSwgZW5k
T2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSwgZmlyc3RMaW5lLCBzdGFydENvbHVtbik7Ci0KLSAg
ICByZXR1cm4gRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUodm0sIGNvZGUsIHRoaXMsIGZpcnN0
TGluZSwgZmlyc3RMaW5lICsgbV9saW5lQ291bnQsIHN0YXJ0Q29sdW1uLCBlbmRDb2x1bW5FeGNs
dWRpbmdCcmFjZXMsIGZhbHNlKTsKLX0KLQogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVu
bGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShjb25zdCBJZGVudGlmaWVy
JiBuYW1lLCBFeGVjU3RhdGUmIGV4ZWMsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgSlNPYmpl
Y3QqJiBleGNlcHRpb24pCiB7CiAgICAgUGFyc2VyRXJyb3IgZXJyb3I7CkBAIC0xODYsOCArMTY2
LDcgQEAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuYwogCiBVbmxpbmtl
ZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y29kZUJsb2Nr
Rm9yKAogICAgIFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBDb2RlU3BlY2lhbGl6
YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZCwgCi0gICAgRGVidWdnZXJNb2RlIGRlYnVnZ2Vy
TW9kZSwgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSwgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMs
IAotICAgIFBhcnNlckVycm9yJiBlcnJvcikKKyAgICBEZWJ1Z2dlck1vZGUgZGVidWdnZXJNb2Rl
LCBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlLCBQYXJzZXJFcnJvciYgZXJyb3IpCiB7CiAgICAg
c3dpdGNoIChzcGVjaWFsaXphdGlvbktpbmQpIHsKICAgICBjYXNlIENvZGVGb3JDYWxsOgpAQCAt
MjAzLDcgKzE4Miw3IEBAIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIFVubGlua2VkRnVuY3QK
ICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiByZXN1bHQgPSBnZW5lcmF0ZUZ1bmN0aW9u
Q29kZUJsb2NrKAogICAgICAgICB2bSwgdGhpcywgc291cmNlLCBzcGVjaWFsaXphdGlvbktpbmQs
IGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCAKICAgICAgICAgaXNCdWlsdGluRnVuY3Rpb24o
KSA/IFVubGlua2VkQnVpbHRpbkZ1bmN0aW9uIDogVW5saW5rZWROb3JtYWxGdW5jdGlvbiwgCi0g
ICAgICAgIGJvZHlJbmNsdWRlc0JyYWNlcywgZXJyb3IpOworICAgICAgICBlcnJvcik7CiAgICAg
CiAgICAgaWYgKGVycm9yLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxv
Y2suaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2Rl
L1VubGlua2VkQ29kZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTEzNSwxMiArMTM1LDExIEBA
IHB1YmxpYzoKIAogICAgIFVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2sqIGNvZGVCbG9ja0ZvcigK
ICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwg
RGVidWdnZXJNb2RlLCBQcm9maWxlck1vZGUsIAotICAgICAgICBib29sIGJvZHlJbmNsdWRlc0Jy
YWNlcywgUGFyc2VyRXJyb3ImKTsKKyAgICAgICAgUGFyc2VyRXJyb3ImKTsKIAogICAgIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRp
ZmllciYsIEV4ZWNTdGF0ZSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU09iamVjdComIGV4Y2VwdGlv
bik7CiAKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmtJbnNpZGVFeGVjdXRhYmxlKFZNJiwg
Y29uc3QgU291cmNlQ29kZSYpOwotICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGlua0dsb2JhbENv
ZGUoVk0mLCBjb25zdCBTb3VyY2VDb2RlJik7CisgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBsaW5r
KFZNJiwgY29uc3QgU291cmNlQ29kZSYpOwogCiAgICAgdm9pZCBjbGVhckNvZGVGb3JSZWNvbXBp
bGF0aW9uKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgJ
KHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTQzMyw3ICs0MzMsNyBAQCBwdWJsaWM6CiAgICAgflBhcnNl
cigpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFBhcnNlZE5vZGU+Ci0gICAgc3RkOjp1bmlxdWVf
cHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVycm9yJiwgYm9vbCBuZWVkUmVwYXJzaW5nQWRq
dXN0bWVudCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKFBhcnNlckVy
cm9yJik7CiAKICAgICBKU1RleHRQb3NpdGlvbiBwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCkg
Y29uc3QgeyByZXR1cm4gbV9sZXhlci0+cG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpOyB9CiAg
ICAgVmVjdG9yPFJlZlB0cjxTdHJpbmdJbXBsPj4mJiBjbG9zZWRWYXJpYWJsZXMoKSB7IHJldHVy
biBXVEY6Om1vdmUobV9jbG9zZWRWYXJpYWJsZXMpOyB9CkBAIC05MDQsMTIgKzkwNCwxMiBAQCBw
cml2YXRlOgogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFBhcnNlZE5vZGU+Ci1zdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgYm9vbCBuZWVkUmVwYXJzaW5nQWRqdXN0bWVu
dCkKK3N0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2Uo
UGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIGludCBlcnJMaW5lOwogICAgIFN0cmluZyBlcnJN
c2c7CiAKLSAgICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uICYmIG5lZWRSZXBhcnNp
bmdBZGp1c3RtZW50KQorICAgIGlmIChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCiAgICAg
ICAgIG1fbGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CiAKICAgICBtX3NvdXJjZUVsZW1lbnRzID0g
MDsKQEAgLTk4Nyw4ICs5ODcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2Uo
CiAgICAgVk0qIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywKICAgICBjb25zdCBJZGVudGlmaWVyJiBuYW1lLCBKU1BhcnNlckJ1aWx0
aW5Nb2RlIGJ1aWx0aW5Nb2RlLAogICAgIEpTUGFyc2VyU3RyaWN0TW9kZSBzdHJpY3RNb2RlLCBK
U1BhcnNlckNvZGVUeXBlIGNvZGVUeXBlLAotICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNUZXh0
UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSAwLCAKLSAgICBib29sIG5lZWRS
ZXBhcnNpbmdBZGp1c3RtZW50ID0gZmFsc2UsIAorICAgIFBhcnNlckVycm9yJiBlcnJvciwgSlNU
ZXh0UG9zaXRpb24qIHBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSAwLAogICAgIENvbnN0cnVj
dG9yS2luZCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kID0gQ29uc3RydWN0b3JLaW5kOjpOb25lKQog
ewogICAgIFNhbXBsaW5nUmVnaW9uIHNhbXBsaW5nUmVnaW9uKCJQYXJzaW5nIik7CkBAIC05OTYs
NyArOTk1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIEFTU0VS
VCghc291cmNlLnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzTnVsbCgpKTsKICAgICBpZiAoc291cmNl
LnByb3ZpZGVyKCktPnNvdXJjZSgpLmlzOEJpdCgpKSB7CiAgICAgICAgIFBhcnNlcjxMZXhlcjxM
Q2hhcj4+IHBhcnNlcih2bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwg
c3RyaWN0TW9kZSwgY29kZVR5cGUsIGRlZmF1bHRDb25zdHJ1Y3RvcktpbmQpOwotICAgICAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yLCBuZWVkUmVwYXJzaW5nQWRqdXN0bWVudCk7CisgICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3Ip
OwogICAgICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAgICAgICpw
b3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gcGFyc2VyLnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xp
bmUoKTsKICAgICAgICAgaWYgKGJ1aWx0aW5Nb2RlID09IEpTUGFyc2VyQnVpbHRpbk1vZGU6OkJ1
aWx0aW4pIHsKQEAgLTEwMDgsNyArMTAwNyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2Rl
PiBwYXJzZSgKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgUGFyc2VyPExleGVy
PFVDaGFyPj4gcGFyc2VyKHZtLCBzb3VyY2UsIHBhcmFtZXRlcnMsIG5hbWUsIGJ1aWx0aW5Nb2Rl
LCBzdHJpY3RNb2RlLCBjb2RlVHlwZSk7Ci0gICAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+
IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmVlZFJlcGFyc2luZ0Fk
anVzdG1lbnQpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJz
ZXIucGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IpOwogICAgIGlmIChwb3NpdGlvbkJlZm9yZUxhc3RO
ZXdsaW5lKQogICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSA9IHBhcnNlci5wb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCShyZXZpc2lvbiAxODE2
NjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjM3LDcgKzIzNyw3IEBAIFBhc3NSZWZQdHI8Q29kZUJsb2NrPiBTY3Jp
cHRFeGVjdXRhYmxlOjoKICAgICBQcm9maWxlck1vZGUgcHJvZmlsZXJNb2RlID0gZ2xvYmFsT2Jq
ZWN0LT5oYXNQcm9maWxlcigpID8gUHJvZmlsZXJPbiA6IFByb2ZpbGVyT2ZmOwogICAgIFVubGlu
a2VkRnVuY3Rpb25Db2RlQmxvY2sqIHVubGlua2VkQ29kZUJsb2NrID0KICAgICAgICAgZXhlY3V0
YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvcigKLSAgICAgICAgICAgICp2
bSwgZXhlY3V0YWJsZS0+bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2Rl
LCBleGVjdXRhYmxlLT5ib2R5SW5jbHVkZXNCcmFjZXMoKSwgZXJyb3IpOworICAgICAgICAgICAg
KnZtLCBleGVjdXRhYmxlLT5tX3NvdXJjZSwga2luZCwgZGVidWdnZXJNb2RlLCBwcm9maWxlck1v
ZGUsIGVycm9yKTsKICAgICByZWNvcmRQYXJzZShleGVjdXRhYmxlLT5tX3VubGlua2VkRXhlY3V0
YWJsZS0+ZmVhdHVyZXMoKSwgZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmhhc0Nh
cHR1cmVkVmFyaWFibGVzKCksIGxpbmVObygpLCBsYXN0TGluZSgpLCBzdGFydENvbHVtbigpLCBl
bmRDb2x1bW4oKSk7IAogICAgIGlmICghdW5saW5rZWRDb2RlQmxvY2spIHsKICAgICAgICAgZXhj
ZXB0aW9uID0gdm0tPnRocm93RXhjZXB0aW9uKApAQCAtMzk2LDExICszOTYsOSBAQCBjb25zdCBD
bGFzc0luZm8gRnVuY3Rpb25FeGVjdXRhYmxlOjpzX2luCiAKIEZ1bmN0aW9uRXhlY3V0YWJsZTo6
RnVuY3Rpb25FeGVjdXRhYmxlKFZNJiB2bSwgY29uc3QgU291cmNlQ29kZSYgc291cmNlLCAKICAg
ICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlLCB1bnNpZ25l
ZCBmaXJzdExpbmUsIAotICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVt
biwgdW5zaWduZWQgZW5kQ29sdW1uLCAKLSAgICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcykKKyAg
ICB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbikKICAgICA6IFNjcmlwdEV4ZWN1dGFibGUodm0uZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0
dXJlLmdldCgpLCB2bSwgc291cmNlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmlzSW5TdHJpY3RDb250
ZXh0KCkpCiAgICAgLCBtX3VubGlua2VkRXhlY3V0YWJsZSh2bSwgdGhpcywgdW5saW5rZWRFeGVj
dXRhYmxlKQotICAgICwgbV9ib2R5SW5jbHVkZXNCcmFjZXMoYm9keUluY2x1ZGVzQnJhY2VzKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUKCFzb3VyY2UuaXNOdWxsKCkpOwogICAgIEFTU0VSVChzb3Vy
Y2UubGVuZ3RoKCkpOwpAQCAtNTA4LDcgKzUwNiw3IEBAIEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0
YWJsZTo6aW5pdGlhbGl6ZUcKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25E
ZWNsYXJhdGlvbnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlID0gZnVuY3Rpb25EZWNsYXJhdGlvbnNb
aV0uc2Vjb25kLmdldCgpOwotICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGlua0luc2lkZUV4ZWN1dGFibGUo
dm0sIG1fc291cmNlKSwgc2NvcGUpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0gSlNGdW5jdGlv
bjo6Y3JlYXRlKHZtLCB1bmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZS0+bGluayh2bSwgbV9zb3Vy
Y2UpLCBzY29wZSk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+YWRkRnVuY3Rpb24oY2FsbEZyYW1l
LCBmdW5jdGlvbkRlY2xhcmF0aW9uc1tpXS5maXJzdCwgdmFsdWUpOwogICAgICAgICBpZiAodm0u
dHlwZVByb2ZpbGVyKCkgfHwgdm0uY29udHJvbEZsb3dQcm9maWxlcigpKSB7CiAgICAgICAgICAg
ICB2bS5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKHNv
dXJjZUlEKCksIApAQCAtNjE0LDcgKzYxMiw3IEBAIEZ1bmN0aW9uRXhlY3V0YWJsZSogRnVuY3Rp
b25FeGVjdXRhYmxlOjoKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKG5h
bWUsIGV4ZWMsIHNvdXJjZSwgZXhjZXB0aW9uKTsKICAgICBpZiAoIXVubGlua2VkRXhlY3V0YWJs
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIHVubGlua2VkRXhlY3V0YWJs
ZS0+bGlua0dsb2JhbENvZGUoZXhlYy52bSgpLCBzb3VyY2UpOworICAgIHJldHVybiB1bmxpbmtl
ZEV4ZWN1dGFibGUtPmxpbmsoZXhlYy52bSgpLCBzb3VyY2UpOwogfQogCiBTdHJpbmcgRnVuY3Rp
b25FeGVjdXRhYmxlOjpwYXJhbVN0cmluZygpIGNvbnN0CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCShyZXZpc2lvbiAxODE2NjQpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0
MywxMCArNTQzLDkgQEAgcHVibGljOgogCiAgICAgc3RhdGljIEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y3JlYXRlKAogICAgICAgICBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgCi0gICAgICAgIHVuc2ln
bmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1
bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgICAgICBib29sIGJvZHlJbmNsdWRlc0JyYWNlcyA9IHRy
dWUpCisgICAgICAgIHVuc2lnbmVkIGZpcnN0TGluZSwgdW5zaWduZWQgbGFzdExpbmUsIHVuc2ln
bmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCiAgICAgewotICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxG
dW5jdGlvbkV4ZWN1dGFibGU+KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJj
ZSwgdW5saW5rZWRFeGVjdXRhYmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBzdGFydENvbHVtbiwg
ZW5kQ29sdW1uLCBib2R5SW5jbHVkZXNCcmFjZXMpOworICAgICAgICBGdW5jdGlvbkV4ZWN1dGFi
bGUqIGV4ZWN1dGFibGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxGdW5jdGlvbkV4ZWN1
dGFibGU+KHZtLmhlYXApKSBGdW5jdGlvbkV4ZWN1dGFibGUodm0sIHNvdXJjZSwgdW5saW5rZWRF
eGVjdXRhYmxlLCBmaXJzdExpbmUsIGxhc3RMaW5lLCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsK
ICAgICAgICAgZXhlY3V0YWJsZS0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1cm4g
ZXhlY3V0YWJsZTsKICAgICB9CkBAIC02NDMsMTMgKzY0MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGNsZWFyQ29kZSgpOwogCi0gICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMoKSBjb25zdCB7
IHJldHVybiBtX2JvZHlJbmNsdWRlc0JyYWNlczsgfQotCiBwcml2YXRlOgogICAgIEZ1bmN0aW9u
RXhlY3V0YWJsZSgKICAgICAgICAgVk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgVW5saW5rZWRGdW5j
dGlvbkV4ZWN1dGFibGUqLCB1bnNpZ25lZCBmaXJzdExpbmUsIAotICAgICAgICB1bnNpZ25lZCBs
YXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENvbHVtbiwgCi0gICAg
ICAgIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzKTsKKyAgICAgICAgdW5zaWduZWQgbGFzdExpbmUs
IHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pOwogCiAgICAgYm9vbCBp
c0NvbXBpbGluZygpCiAgICAgewpAQCAtNjY3LDcgKzY2Myw2IEBAIHByaXZhdGU6CiAgICAgV3Jp
dGVCYXJyaWVyPFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlPiBtX3VubGlua2VkRXhlY3V0YWJs
ZTsKICAgICBSZWZQdHI8RnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ2FsbDsKICAg
ICBSZWZQdHI8RnVuY3Rpb25Db2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwotICAg
IGJvb2wgbV9ib2R5SW5jbHVkZXNCcmFjZXM7CiAgICAgUmVmUHRyPFR5cGVTZXQ+IG1fcmV0dXJu
U3RhdGVtZW50VHlwZVNldDsKIH07CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxODE2NjEp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtOTMsOSArOTMsOSBAQCBKU09iamVjdCogY29uc3RydWN0RnVu
Y3Rpb25Ta2lwcGluZ0V2YWxFCiAgICAgLy8gV2UgYWxzbyBuZWVkIFxuIGJlZm9yZSB0aGUgY2xv
c2luZyB9IHRvIGhhbmRsZSAvLyBjb21tZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBsYXN0IGxpbmUK
ICAgICBTdHJpbmcgcHJvZ3JhbTsKICAgICBpZiAoYXJncy5pc0VtcHR5KCkpCi0gICAgICAgIHBy
b2dyYW0gPSBBU0NJSUxpdGVyYWwoIihmdW5jdGlvbigpIHtcbn0pIik7CisgICAgICAgIHByb2dy
YW0gPSBBU0NJSUxpdGVyYWwoIihmdW5jdGlvbigpIHsgXG59KSIpOwogICAgIGVsc2UgaWYgKGFy
Z3Muc2l6ZSgpID09IDEpCi0gICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24o
KSB7IiwgYXJncy5hdCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyksICJcbn0pIik7Cisg
ICAgICAgIHByb2dyYW0gPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oKSB7ICIsIGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59KSIpOwogICAgIGVsc2UgewogICAgICAg
ICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgi
KGZ1bmN0aW9uKCIpOwpAQCAtMTA0LDcgKzEwNCw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5j
dGlvblNraXBwaW5nRXZhbEUKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcsJyk7CiAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShl
eGVjKSk7CiAgICAgICAgIH0KLSAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIHsiKTsK
KyAgICAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCIpIHsgIik7CiAgICAgICAgIGJ1aWxkZXIu
YXBwZW5kKGFyZ3MuYXQoYXJncy5zaXplKCkgLSAxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhl
YykpOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIlxufSkiKTsKICAgICAgICAgcHJv
Z3JhbSA9IGJ1aWxkZXIudG9TdHJpbmcoKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHJldmlzaW9uIDE4MTY2MSkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODIsMTEgKzgyLDggQEAgQ2FsbFR5cGUgRnVuY3Rpb25Qcm90b3R5
cGU6OmdldENhbGxEYXRhKAogLy8gRnVuY3Rpb25zCiAKIC8vIENvbXBhdGliaWxpdHkgaGFjayBm
b3IgdGhlIE9wdGltb3N0IEphdmFTY3JpcHQgbGlicmFyeS4gKFNlZSA8cmRhcjovL3Byb2JsZW0v
NjU5NTA0MD4uKQotc3RhdGljIGlubGluZSB2b2lkIGluc2VydFNlbWljb2xvbklmTmVlZGVkKFN0
cmluZyYgZnVuY3Rpb25Cb2R5LCBib29sIGJvZHlJbmNsdWRlc0JyYWNlcykKK3N0YXRpYyBpbmxp
bmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChTdHJpbmcmIGZ1bmN0aW9uQm9keSkKIHsK
LSAgICBpZiAoIWJvZHlJbmNsdWRlc0JyYWNlcykKLSAgICAgICAgZnVuY3Rpb25Cb2R5ID0gbWFr
ZVN0cmluZygieyAiLCBmdW5jdGlvbkJvZHksICd9Jyk7Ci0KICAgICBBU1NFUlQoZnVuY3Rpb25C
b2R5WzBdID09ICd7Jyk7CiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVtmdW5jdGlvbkJvZHkubGVu
Z3RoKCkgLSAxXSA9PSAnfScpOwogCkBAIC0xMDksNyArMTA2LDcgQEAgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvblBybwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc01ha2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+
bmFtZShleGVjKSwgIigpIHtcbiAgICBbbmF0aXZlIGNvZGVdXG59IikpOwogICAgICAgICBGdW5j
dGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBmdW5jdGlvbi0+anNFeGVjdXRhYmxlKCk7CiAg
ICAgICAgIFN0cmluZyBzb3VyY2VTdHJpbmcgPSBleGVjdXRhYmxlLT5zb3VyY2UoKS50b1N0cmlu
ZygpOwotICAgICAgICBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChzb3VyY2VTdHJpbmcsIGV4ZWN1
dGFibGUtPmJvZHlJbmNsdWRlc0JyYWNlcygpKTsKKyAgICAgICAgaW5zZXJ0U2VtaWNvbG9uSWZO
ZWVkZWQoc291cmNlU3RyaW5nKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc01h
a2VOb250cml2aWFsU3RyaW5nKGV4ZWMsICJmdW5jdGlvbiAiLCBmdW5jdGlvbi0+bmFtZShleGVj
KSwgIigiLCBleGVjdXRhYmxlLT5wYXJhbVN0cmluZygpLCAiKSAiLCBzb3VyY2VTdHJpbmcpKTsK
ICAgICB9CiAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MTY3MCkKKysrIExheW91dFRlc3RzL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI3IEBACisyMDE1LTAzLTE3ICBHZW9mZnJl
eSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAgICAgRnVuY3Rpb24gYm9kaWVzIHNo
b3VsZCBhbHdheXMgaW5jbHVkZSBicmFjZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZWQgdGhlc2UgdGVzdCByZXN1bHRzIHRvIHJlZmxlY3Qg
dGhlIGZhY3QgdGhhdCBKYXZhU2NyaXB0Q29yZSBub3cKKyAgICAgICAgaG9ub3JzIHRoZSBzb3Vy
Y2UgY29kZSB0ZXh0IHBvc2l0aW9ucyBwcm92aWRlZCBieSBXZWJDb3JlLCBldmVuIGZvciAKKyAg
ICAgICAgYXR0cmlidXRlIGV2ZW50IGhhbmRsZXJzLgorCisgICAgICAgIFVuZm9ydHVuYXRlbHks
IHRoZSBjb2x1bW4gbnVtYmVycyB3ZSB1c2VkIHRvIHJlcG9ydCB3ZXJlIHdyb25nLCBhbmQgdGhl
eQorICAgICAgICBhcmUgc3RpbGwgd3Jvbmcgbm93LiBUaGUgb2xkIGNvbHVtbiBudW1iZXJzIHdl
cmUgd3JvbmcgYmVjYXVzZSB3ZSB3b3VsZAorICAgICAgICBhbHdheXMgcHJldGVuZCB0aGF0IHRo
ZXkgc3RhcnRlZCBvbiBjb2x1bW4gMS4gVGhlIG5ldyBjb2x1bW4gbnVtYmVycworICAgICAgICBh
cmUgd3JvbmcgYmVjYXVzZSBXZWJDb3JlIHJlY29yZHMgdGhlIGNvbHVtbiBudW1iZXIgYWZ0ZXIg
aXQgZmluaXNoZXMKKyAgICAgICAgcGFyc2luZyB0aGUgZWxlbWVudCwgcmF0aGVyIHRoYW4gd2hp
bGUgaXQgaXMgcGFyc2luZyB0aGUgZXZlbnQgbGlzdGVuZXIKKyAgICAgICAgYXR0cmlidXRlLgor
CisgICAgICAgICogZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IyLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBmYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50eHQ6CisgICAgICAgICog
ZmFzdC9wcm9maWxlci9pbmxpbmUtZXZlbnQtaGFuZGxlci1leHBlY3RlZC50eHQ6CisgICAgICAg
ICogZmFzdC9wcm9maWxlci9zdG9wLXByb2ZpbGluZy1hZnRlci1zZXRUaW1lb3V0LWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBqcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0
ZWQudHh0OgorCiAyMDE1LTAzLTE3ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0OiBTcGxpdCBmcmFnbWVudHMgb24gcmVuZGVyZXIg
Ym91bmRhcnkgb24gdGhlIGZseS4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL3dpbmRv
dy1vbmVycm9yMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvd2luZG93LW9uZXJyb3IyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTgxNjYxKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvd2luZG93LW9uZXJyb3IyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIFRlc3QgdGhhdCB1bmNhdWdodCBleGNlcHRpb25z
IHdpbGwgYmUgcmVwb3J0ZWQgdG8gdGhlIHdpbmRvdy5vbmVycm9yIGhhbmRsZXIuIEJ1ZyA4NTE5
LgogCiBNYWluIGZyYW1lIHdpbmRvdy5vbmVycm9yOiBFcnJvcjogSW5saW5lIHNjcmlwdCBleGNl
cHRpb24gYXQgd2luZG93LW9uZXJyb3IyLmh0bWwsIGxpbmU6IDM0LCBjb2x1bW46IDQ3Ci1NYWlu
IGZyYW1lIHdpbmRvdy5vbmVycm9yOiBFeGNlcHRpb24gaW4gb25sb2FkIGF0IHdpbmRvdy1vbmVy
cm9yMi5odG1sLCBsaW5lOiAyLCBjb2x1bW46IDY2CitNYWluIGZyYW1lIHdpbmRvdy5vbmVycm9y
OiBFeGNlcHRpb24gaW4gb25sb2FkIGF0IHdpbmRvdy1vbmVycm9yMi5odG1sLCBsaW5lOiAyLCBj
b2x1bW46IDE2NwogTWFpbiBmcmFtZSB3aW5kb3cub25lcnJvcjogRXJyb3I6IEV4Y2VwdGlvbiBp
biBzZXRUaW1lb3V0IGF0IHdpbmRvdy1vbmVycm9yMi5odG1sLCBsaW5lOiAyOSwgY29sdW1uOiA0
NwogCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2RlYWQtdGltZS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9kZWFkLXRpbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAxODE2NjEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3Byb2ZpbGVy
L2RlYWQtdGltZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRv
IHJ1biB0aGlzIHRlc3QgbWFudWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTog
RGVhZCB0aW1lIGluIHByb2ZpbGUuCiBUaHJlYWRfMSAobm8gZmlsZSkgKGxpbmUgMDowKQotICAg
b25sb2FkIGRlYWQtdGltZS5odG1sIChsaW5lIDIxOjEpCisgICBvbmxvYWQgZGVhZC10aW1lLmh0
bWwgKGxpbmUgMjE6NDUpCiAgICAgICBzdGFydFRlc3QgZGVhZC10aW1lLmh0bWwgKGxpbmUgMTM6
MSkKICAgICAgICAgIHNldFRpbWVvdXQgKG5vIGZpbGUpIChsaW5lIDA6MCkKICAgIChwcm9ncmFt
KSBkZWFkLXRpbWUuaHRtbCAobGluZSAxOjEpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3Byb2Zp
bGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L3Byb2ZpbGVyL2lubGluZS1ldmVudC1oYW5kbGVyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMTgxNjYxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9wcm9maWxlci9pbmxpbmUtZXZl
bnQtaGFuZGxlci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBAIFRo
cmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCiAgICBzdGFydFRlc3QgaW5saW5lLWV2ZW50LWhh
bmRsZXIuaHRtbCAobGluZSAxMToxKQogICAgICAgZ2V0RWxlbWVudEJ5SWQgKG5vIGZpbGUpIChs
aW5lIDA6MCkKICAgICAgIGNsaWNrIChubyBmaWxlKSAobGluZSAwOjApCi0gICAgICAgICBvbmNs
aWNrIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMzE6MSkKKyAgICAgICAgIG9uY2xp
Y2sgaW5saW5lLWV2ZW50LWhhbmRsZXIuaHRtbCAobGluZSAzMToxMjcpCiAgICAgICAgICAgICBl
dmVudExpc3RlbmVyIGlubGluZS1ldmVudC1oYW5kbGVyLmh0bWwgKGxpbmUgMTc6MjYpCiAgICAg
ICAgICAgICAgICBhbm9ueW1vdXNGdW5jdGlvbiBwcm9maWxlci10ZXN0LUpTLXJlc291cmNlcy5q
cyAobGluZSAyOTozNykKICAgICAgICAgICAgICAgICAgIGluc2VydE5ld1RleHQgcHJvZmlsZXIt
dGVzdC1KUy1yZXNvdXJjZXMuanMgKGxpbmUgMTc6MjYpCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L3Byb2ZpbGVyL3N0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0
ZXItc2V0VGltZW91dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTY2MSkKKysrIExheW91dFRl
c3RzL2Zhc3QvcHJvZmlsZXIvc3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRvIHJ1biB0aGlzIHRlc3QgbWFu
dWFsbHksIGxvYWQgaXQgaW4gdGgKIAogUHJvZmlsZSB0aXRsZTogU3RvcCBwcm9maWxpbmcgZnJv
bSBhIHRpbWVvdXQKIFRocmVhZF8xIChubyBmaWxlKSAobGluZSAwOjApCi0gICBvbmxvYWQgc3Rv
cC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIxOjEpCisgICBvbmxvYWQg
c3RvcC1wcm9maWxpbmctYWZ0ZXItc2V0VGltZW91dC5odG1sIChsaW5lIDIxOjQ1KQogICAgICAg
c3RhcnRUZXN0IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAxMzox
KQogICAgICAgICAgc2V0VGltZW91dCAobm8gZmlsZSkgKGxpbmUgMDowKQogICAgKHByb2dyYW0p
IHN0b3AtcHJvZmlsaW5nLWFmdGVyLXNldFRpbWVvdXQuaHRtbCAobGluZSAxOjEpCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9kb20vc2NyaXB0LXN0YXJ0LWVuZC1sb2NhdGlvbnMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2RvbS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0
aW9ucy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDE4MTY2MSkKKysrIExheW91dFRlc3RzL2pzL2Rv
bS9zY3JpcHQtc3RhcnQtZW5kLWxvY2F0aW9ucy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTI0MywzMiArMjQzLDMyIEBAIGZ1bmN0aW9uICJleGkyYiIgeyAxOjE0MSAtIDE6MjIxIH0K
IGV2YWwgeyAxOjEgLSAxOjU2IH0KIAogICBuZXcgRnVuY3Rpb24gT2JqZWN0OgotZnVuY3Rpb24g
IiIgeyAxOjEgLSAxOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAxOjYwIC0gMToyMTkgfQotZnVu
Y3Rpb24gIm5mMWIiIHsgMTo5MCAtIDE6MjA5IH0KLWZ1bmN0aW9uICJuZjFjIiB7IDE6MTIwIC0g
MToxOTkgfQorZnVuY3Rpb24gIiIgeyAxOjE2IC0gMToyNDUgfQorZnVuY3Rpb24gIm5mMWEiIHsg
MTo3NyAtIDE6MjM2IH0KK2Z1bmN0aW9uICJuZjFiIiB7IDE6MTA3IC0gMToyMjYgfQorZnVuY3Rp
b24gIm5mMWMiIHsgMToxMzcgLSAxOjIxNiB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlv
biAiIiB7IDE6MSAtIDE3OjggfQorZnVuY3Rpb24gIiIgeyAxOjE2IC0gMTc6OCB9CiBmdW5jdGlv
biAibmYyYSIgeyA0OjIxIC0gMTU6NSB9CiBmdW5jdGlvbiAibmYyYiIgeyA2OjI1IC0gMTM6OSB9
CiBmdW5jdGlvbiAibmYyYyIgeyA4OjI5IC0gMTE6MTMgfQogZXZhbCB7IDE6MSAtIDE6NTYgfQot
ZnVuY3Rpb24gIiIgeyAxOjEgLSAxOjIyOCB9Ci1mdW5jdGlvbiAibmYxYSIgeyAxOjYwIC0gMToy
MTkgfQotZnVuY3Rpb24gIm5mMWIiIHsgMTo5MCAtIDE6MjA5IH0KLWZ1bmN0aW9uICJuZjFjIiB7
IDE6MTIwIC0gMToxOTkgfQotZXZhbCB7IDE6MSAtIDE6NTYgfQotZnVuY3Rpb24gIiIgeyAxOjEg
LSAxOjIzNyB9Ci1mdW5jdGlvbiAibmZpMWEiIHsgMTo2MSAtIDE6MjI3IH0KLWZ1bmN0aW9uICJu
ZmkxYiIgeyAxOjkzIC0gMToyMTYgfQotZnVuY3Rpb24gIm5maTFjIiB7IDE6MTI1IC0gMToyMDUg
fQorZnVuY3Rpb24gIiIgeyAxOjE2IC0gMToyNDUgfQorZnVuY3Rpb24gIm5mMWEiIHsgMTo3NyAt
IDE6MjM2IH0KK2Z1bmN0aW9uICJuZjFiIiB7IDE6MTA3IC0gMToyMjYgfQorZnVuY3Rpb24gIm5m
MWMiIHsgMToxMzcgLSAxOjIxNiB9CitldmFsIHsgMToxIC0gMTo1NiB9CitmdW5jdGlvbiAiIiB7
IDE6MTYgLSAxOjI1NCB9CitmdW5jdGlvbiAibmZpMWEiIHsgMTo3OCAtIDE6MjQ0IH0KK2Z1bmN0
aW9uICJuZmkxYiIgeyAxOjExMCAtIDE6MjMzIH0KK2Z1bmN0aW9uICJuZmkxYyIgeyAxOjE0MiAt
IDE6MjIyIH0KIGV2YWwgeyAxOjEgLSAxOjU2IH0KLWZ1bmN0aW9uICIiIHsgMToxIC0gMTc6OCB9
CitmdW5jdGlvbiAiIiB7IDE6MTYgLSAxNzo4IH0KIGZ1bmN0aW9uICJuZjJhIiB7IDQ6MjEgLSAx
NTo1IH0KIGZ1bmN0aW9uICJuZjJiIiB7IDY6MjUgLSAxMzo5IH0KIGZ1bmN0aW9uICJuZjJjIiB7
IDg6MjkgLSAxMToxMyB9CiBldmFsIHsgMToxIC0gMTo1NiB9Ci1mdW5jdGlvbiAiIiB7IDE6MSAt
IDE3OjkgfQorZnVuY3Rpb24gIiIgeyAxOjE2IC0gMTc6OSB9CiBmdW5jdGlvbiAibmZpMmEiIHsg
NDoyMiAtIDE1OjUgfQogZnVuY3Rpb24gIm5maTJiIiB7IDY6MjYgLSAxMzo5IH0KIGZ1bmN0aW9u
ICJuZmkyYyIgeyA4OjMwIC0gMTE6MTMgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>248884</attachid>
            <date>2015-03-17 16:30:57 -0700</date>
            <delta_ts>2015-03-17 16:57:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-142795-20150317163026.patch</filename>
            <type>text/plain</type>
            <size>21367</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTgxNjY1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgRnVuY3Rpb24gYm9kaWVzIHNob3VsZCBhbHdheXMgaW5jbHVkZSBicmFjZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0Mjc5NQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEhhdmluZyBhIG1vZGUgZm9y
IGV4Y2x1ZGluZyB0aGUgb3BlbmluZyBhbmQgY2xvc2luZyBicmFjZXMgZnJvbSBhIGZ1bmN0aW9u
CisgICAgICAgIGJvZHkgd2FzIHVubmVjZXNzYXJ5IGFuZCBjb25mdXNpbmcuCisKKyAgICAgICAg
KiBieXRlY29kZS9Db2RlQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OkNvZGVC
bG9jayk6IEFkb3B0IHRoZSBuZXcgb25lIHRydWUgbGlua2luZyBmdW5jdGlvbi4KKworICAgICAg
ICAqIGJ5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6Z2VuZXJh
dGVGdW5jdGlvbkNvZGVCbG9jayk6CisgICAgICAgIChKU0M6OlVubGlua2VkRnVuY3Rpb25FeGVj
dXRhYmxlOjpsaW5rKToKKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNvZGVCbG9ja0Zvcik6IE5vIG5lZWQgdG8gcGFzcyB0aHJvdWdoCisgICAgICAgIGEgYm9vbGVh
bjogdGhlcmUgaXMgb25seSBvbmUga2luZCBvZiBmdW5jdGlvbiBub3cuCisKKyAgICAgICAgKEpT
Qzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtJbnNpZGVFeGVjdXRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmxpbmtHbG9i
YWxDb2RlKTogRGVsZXRlZC4gTGV0J3Mgb25seSBoYXZlIG9uZSB3YXkgdG8gZG8gdGhpbmdzLgor
CisgICAgICAgICogYnl0ZWNvZGUvVW5saW5rZWRDb2RlQmxvY2suaDoKKyAgICAgICAgKiBnZW5l
cmF0ZS1qcy1idWlsdGluczogRGl0dG8uCisKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZSk6CisgICAgICAgIChKU0M6OnBh
cnNlKTogbmVlZHNSZXBhcnNpbmdBZGp1c3RtZW50IGlzIGFsd2F5cyB0cnVlIG5vdywgc28gSSBy
ZW1vdmVkIGl0LgorCisgICAgICAgICogcnVudGltZS9FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6bmV3Q29kZUJsb2NrRm9yKToKKyAgICAgICAgKEpTQzo6
RnVuY3Rpb25FeGVjdXRhYmxlOjpGdW5jdGlvbkV4ZWN1dGFibGUpOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAo
SlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKToKKyAgICAgICAgKiBydW50
aW1lL0V4ZWN1dGFibGUuaDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVh
dGUpOgorICAgICAgICAoSlNDOjpGdW5jdGlvbkV4ZWN1dGFibGU6OmJvZHlJbmNsdWRlc0JyYWNl
cyk6IERlbGV0ZWQuIFJlbW92ZWQgdW51c2VkIHN0dWZmLgorCisgICAgICAgICogcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0RnVuY3Rpb25T
a2lwcGluZ0V2YWxFbmFibGVkQ2hlY2spOiBBbHdheXMgcHJvdmlkZSBhCisgICAgICAgIGxlYWRp
bmcgc3BhY2UgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0aGlzIGZ1bmN0aW5vbidzIGNvbW1lbnQgc2F5
cyBpcyByZXF1aXJlZAorICAgICAgICBmb3Igd2ViIGNvbXBhdGliaWxpdHkuIFdlIHVzZWQgdG8g
ZmFrZSB0aGlzIHVwIGFmdGVyIHRoZSBmYWN0IHdoZW4KKyAgICAgICAgc3RyaW5naWZ5aW5nLCBi
YXNlZCBvbiB0aGUgYm9keUluY2x1ZGVzQnJhY2VzIGZsYWcsIGJ1dCB0aGF0IGZsYWcgaXMgZ29u
ZSBub3cuCisKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6aW5zZXJ0U2VtaWNvbG9uSWZOZWVkZWQpOgorICAgICAgICAoSlNDOjpmdW5jdGlv
blByb3RvRnVuY1RvU3RyaW5nKTogTm8gbmVlZCB0byBhZGQgYnJhY2VzIGFuZC9vciBhIHNwYWNl
CisgICAgICAgIGFmdGVyIHRoZSBmYWN0IC0tIHdlIGFsd2F5cyBoYXZlIHRoZW0gbm93LgorCiAy
MDE1LTAzLTE3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CiAKICAgICAgICAg
QnVpbHQtaW4gZnVuY3Rpb25zIHNob3VsZCBrbm93IHRoYXQgdGhleSB1c2Ugc3RyaWN0IG1vZGUK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlucwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZ2VuZXJhdGUtanMtYnVpbHRpbnMJKHJldmlz
aW9uIDE4MTY2MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9nZW5lcmF0ZS1qcy1idWlsdGlu
cwkod29ya2luZyBjb3B5KQpAQCAtMjY3LDcgKzI2Nyw3IEBAIGJ1aWx0aW5zSW1wbGVtZW50YXRp
b24ud3JpdGUoIiIiCiAjZGVmaW5lIEpTQ19ERUZJTkVfQlVJTFRJTl9HRU5FUkFUT1IoY29kZU5h
bWUsIGZ1bmN0aW9uTmFtZSwgYXJndW1lbnRDb3VudCkgXFwKIEZ1bmN0aW9uRXhlY3V0YWJsZSog
Y29kZU5hbWUjI0dlbmVyYXRvcihWTSYgdm0pIFxcCiB7IFxcCi0gICAgcmV0dXJuIHZtLmJ1aWx0
aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5saW5rR2xvYmFsQ29kZSh2
bSwgdm0uYnVpbHRpbkV4ZWN1dGFibGVzKCktPmNvZGVOYW1lIyNTb3VyY2UoKSk7IFxcCisgICAg
cmV0dXJuIHZtLmJ1aWx0aW5FeGVjdXRhYmxlcygpLT5jb2RlTmFtZSMjRXhlY3V0YWJsZSgpLT5s
aW5rKHZtLCB2bS5idWlsdGluRXhlY3V0YWJsZXMoKS0+Y29kZU5hbWUjI1NvdXJjZSgpKTsgXFwK
IH0KIAogSlNDX0ZPUkVBQ0hfQlVJTFRJTihKU0NfREVGSU5FX0JVSUxUSU5fR0VORVJBVE9SKQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5FeGVjdXRhYmxlcy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5F
eGVjdXRhYmxlcy5jcHAJKHJldmlzaW9uIDE4MTY2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9CdWlsdGluRXhlY3V0YWJsZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Miw3
ICs3Miw3IEBAIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBCdWlsdGluRXhlY3UKICAgICAg
ICAgJm1fdm0sIHNvdXJjZSwgMCwgSWRlbnRpZmllcigpLCBidWlsdGluTW9kZSwgCiAgICAgICAg
IEpTUGFyc2VyU3RyaWN0TW9kZTo6Tm90U3RyaWN0LCAKICAgICAgICAgSlNQYXJzZXJDb2RlVHlw
ZTo6UHJvZ3JhbSwKLSAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lLCBm
YWxzZSwgY29uc3RydWN0b3JLaW5kKTsKKyAgICAgICAgZXJyb3IsICZwb3NpdGlvbkJlZm9yZUxh
c3ROZXdsaW5lLCBjb25zdHJ1Y3RvcktpbmQpOwogCiAgICAgaWYgKCFwcm9ncmFtKSB7CiAgICAg
ICAgIGRhdGFMb2coIkZhdGFsIGVycm9yIGNvbXBpbGluZyBidWlsdGluIGZ1bmN0aW9uICciLCBu
YW1lLnN0cmluZygpLCAiJzogIiwgZXJyb3IubWVzc2FnZSgpKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAxODE2NjEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTc1Myw3ICsxNzUzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhl
Y3V0YWJsZSogbwogICAgICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZSogdW5saW5rZWRF
eGVjdXRhYmxlID0gdW5saW5rZWRDb2RlQmxvY2stPmZ1bmN0aW9uRGVjbChpKTsKICAgICAgICAg
aWYgKHZtKCktPnR5cGVQcm9maWxlcigpIHx8IHZtKCktPmNvbnRyb2xGbG93UHJvZmlsZXIoKSkK
ICAgICAgICAgICAgIHZtKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4
ZWN1dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0
YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlw
ZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKLSAgICAgICAgbV9mdW5jdGlvbkRlY2xzW2ldLnNldCgq
bV92bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmtJbnNpZGVFeGVj
dXRhYmxlKCptX3ZtLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CisgICAgICAgIG1fZnVu
Y3Rpb25EZWNsc1tpXS5zZXQoKm1fdm0sIG93bmVyRXhlY3V0YWJsZSwgdW5saW5rZWRFeGVjdXRh
YmxlLT5saW5rKCptX3ZtLCBvd25lckV4ZWN1dGFibGUtPnNvdXJjZSgpKSk7CiAgICAgfQogCiAg
ICAgbV9mdW5jdGlvbkV4cHJzLnJlc2l6ZVRvRml0KHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRXhwcnMoKSk7CkBAIC0xNzYxLDcgKzE3NjEsNyBAQCBDb2RlQmxvY2s6OkNvZGVC
bG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvCiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVCbG9jay0+ZnVuY3Rpb25FeHBy
KGkpOwogICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkgfHwgdm0oKS0+Y29udHJvbEZs
b3dQcm9maWxlcigpKQogICAgICAgICAgICAgdm0oKS0+ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hl
KCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwg
dW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5rZWRF
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwotICAgICAgICBtX2Z1bmN0aW9u
RXhwcnNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFibGUsIHVubGlua2VkRXhlY3V0YWJsZS0+
bGlua0luc2lkZUV4ZWN1dGFibGUoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCkpKTsK
KyAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCgqbV92bSwgb3duZXJFeGVjdXRhYmxlLCB1
bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsoKm1fdm0sIG93bmVyRXhlY3V0YWJsZS0+c291cmNlKCkp
KTsKICAgICB9CiAKICAgICBpZiAodW5saW5rZWRDb2RlQmxvY2stPmhhc1JhcmVEYXRhKCkpIHsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9jay5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2Vk
Q29kZUJsb2NrLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTIsMTMg
KzUyLDEzIEBAIGNvbnN0IENsYXNzSW5mbyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2MKIHN0YXRp
YyBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBnZW5lcmF0ZUZ1bmN0aW9uQ29kZUJsb2NrKAog
ICAgIFZNJiB2bSwgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIGNvbnN0
IFNvdXJjZUNvZGUmIHNvdXJjZSwKICAgICBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQsIERl
YnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9kZSBwcm9maWxlck1vZGUsCi0gICAg
VW5saW5rZWRGdW5jdGlvbktpbmQgZnVuY3Rpb25LaW5kLCBib29sIGJvZHlJbmNsdWRlc0JyYWNl
cywgUGFyc2VyRXJyb3ImIGVycm9yKQorICAgIFVubGlua2VkRnVuY3Rpb25LaW5kIGZ1bmN0aW9u
S2luZCwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIEpTUGFyc2VyQnVpbHRpbk1vZGUgYnVp
bHRpbk1vZGUgPSBleGVjdXRhYmxlLT5pc0J1aWx0aW5GdW5jdGlvbigpID8gSlNQYXJzZXJCdWls
dGluTW9kZTo6QnVpbHRpbiA6IEpTUGFyc2VyQnVpbHRpbk1vZGU6Ok5vdEJ1aWx0aW47CiAgICAg
SlNQYXJzZXJTdHJpY3RNb2RlIHN0cmljdE1vZGUgPSBleGVjdXRhYmxlLT5pc0luU3RyaWN0Q29u
dGV4dCgpID8gSlNQYXJzZXJTdHJpY3RNb2RlOjpTdHJpY3QgOiBKU1BhcnNlclN0cmljdE1vZGU6
Ok5vdFN0cmljdDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RnVuY3Rpb25Ob2RlPiBmdW5jdGlvbiA9
IHBhcnNlPEZ1bmN0aW9uTm9kZT4oCiAgICAgICAgICZ2bSwgc291cmNlLCBleGVjdXRhYmxlLT5w
YXJhbWV0ZXJzKCksIGV4ZWN1dGFibGUtPm5hbWUoKSwgYnVpbHRpbk1vZGUsCi0gICAgICAgIHN0
cmljdE1vZGUsIEpTUGFyc2VyQ29kZVR5cGU6OkZ1bmN0aW9uLCBlcnJvciwgMCwgYm9keUluY2x1
ZGVzQnJhY2VzKTsKKyAgICAgICAgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZTo6RnVuY3Rp
b24sIGVycm9yLCAwKTsKIAogICAgIGlmICghZnVuY3Rpb24pIHsKICAgICAgICAgQVNTRVJUKGVy
cm9yLmlzVmFsaWQoKSk7CkBAIC0xMjksMTIgKzEyOSwxMyBAQCB2b2lkIFVubGlua2VkRnVuY3Rp
b25FeGVjdXRhYmxlOjp2aXNpdENoCiAgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmplY3QtPm1f
c3ltYm9sVGFibGVGb3JDb25zdHJ1Y3QpOwogfQogCi1GdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpsaW5rSW5zaWRlRXhlY3V0YWJsZShWTSYgdm0sIGNvbnN0
IFNvdXJjZUNvZGUmIG93bmVyU291cmNlKQorRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZTo6bGluayhWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIG93bmVyU291
cmNlKQogewogICAgIFNvdXJjZUNvZGUgc291cmNlID0gbV9zb3VyY2VPdmVycmlkZSA/IFNvdXJj
ZUNvZGUobV9zb3VyY2VPdmVycmlkZSkgOiBvd25lclNvdXJjZTsKICAgICB1bnNpZ25lZCBmaXJz
dExpbmUgPSBzb3VyY2UuZmlyc3RMaW5lKCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKICAgICB1bnNp
Z25lZCBzdGFydE9mZnNldCA9IHNvdXJjZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsK
IAorICAgIC8vIEFkanVzdCB0byBvbmUtYmFzZWQgaW5kZXhpbmcuCiAgICAgYm9vbCBzdGFydENv
bHVtbklzT25GaXJzdFNvdXJjZUxpbmUgPSAhbV9maXJzdExpbmVPZmZzZXQ7CiAgICAgdW5zaWdu
ZWQgc3RhcnRDb2x1bW4gPSBtX3VubGlua2VkQm9keVN0YXJ0Q29sdW1uICsgKHN0YXJ0Q29sdW1u
SXNPbkZpcnN0U291cmNlTGluZSA/IHNvdXJjZS5zdGFydENvbHVtbigpIDogMSk7CiAgICAgYm9v
bCBlbmRDb2x1bW5Jc09uU3RhcnRMaW5lID0gIW1fbGluZUNvdW50OwpAQCAtMTQ0LDI3ICsxNDUs
NiBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIFVubGlua2VkRnVuY3Rpb25FeGVjCiAgICAgcmV0dXJu
IEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZp
cnN0TGluZSArIG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uKTsKIH0KIAotRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6bGlua0dsb2JhbENv
ZGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UpCi17Ci0gICAgQVNTRVJUKCFtX3Nv
dXJjZU92ZXJyaWRlKTsKLSAgICB1bnNpZ25lZCBmaXJzdExpbmUgPSBzb3VyY2UuZmlyc3RMaW5l
KCkgKyBtX2ZpcnN0TGluZU9mZnNldDsKLSAgICB1bnNpZ25lZCBzdGFydE9mZnNldCA9IHNvdXJj
ZS5zdGFydE9mZnNldCgpICsgbV9zdGFydE9mZnNldDsKLQotICAgIC8vIFdlIGRvbid0IGhhdmUg
YW55IG93bmVyIGV4ZWN1dGFibGUuIFRoZSBzb3VyY2Ugc3RyaW5nIGlzIGVmZmVjdGl2ZWx5IGxp
a2UgYSBnbG9iYWwKLSAgICAvLyBzdHJpbmcgKGxpa2UgaW4gdGhlIGhhbmRsaW5nIG9mIGV2YWwp
LiBIZW5jZSwgdGhlIHN0YXJ0Q29sdW1uIGlzIGFsd2F5cyAxLgotICAgIHVuc2lnbmVkIHN0YXJ0
Q29sdW1uID0gMTsKLSAgICBib29sIGVuZENvbHVtbklzT25TdGFydExpbmUgPSAhbV9saW5lQ291
bnQ7Ci0gICAgLy8gVGhlIHVubGlua2VkQm9keUVuZENvbHVtbiBpcyAwLWJhc2VkLiBIZW5jZSwg
d2UgbmVlZCB0byBhZGQgMSB0byBpdC4gQnV0IGlmIHRoZQotICAgIC8vIGVuZENvbHVtbiBpcyBv
biB0aGUgc3RhcnRMaW5lLCB0aGVuIHdlIG5lZWQgdG8gc3VidHJhY3QgYmFjayB0aGUgYWRqdXN0
bWVudCBmb3IKLSAgICAvLyB0aGUgb3BlbiBicmFjZSByZXN1bHRpbmcgaW4gYW4gYWRqdXN0bWVu
dCBvZiAwLgotICAgIHVuc2lnbmVkIGVuZENvbHVtbkV4Y2x1ZGluZ0JyYWNlcyA9IG1fdW5saW5r
ZWRCb2R5RW5kQ29sdW1uICsgKGVuZENvbHVtbklzT25TdGFydExpbmUgPyAwIDogMSk7Ci0gICAg
dW5zaWduZWQgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UgPSBzdGFydE9mZnNldCArIDE7
Ci0gICAgdW5zaWduZWQgZW5kT2Zmc2V0RXhjbHVkaW5nQ2xvc2VCcmFjZSA9IHN0YXJ0T2Zmc2V0
ICsgbV9zb3VyY2VMZW5ndGggLSAxOwotICAgIFNvdXJjZUNvZGUgY29kZShzb3VyY2UucHJvdmlk
ZXIoKSwgc3RhcnRPZmZzZXRFeGNsdWRpbmdPcGVuQnJhY2UsIGVuZE9mZnNldEV4Y2x1ZGluZ0Ns
b3NlQnJhY2UsIGZpcnN0TGluZSwgc3RhcnRDb2x1bW4pOwotCi0gICAgcmV0dXJuIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlKHZtLCBjb2RlLCB0aGlzLCBmaXJzdExpbmUsIGZpcnN0TGluZSAr
IG1fbGluZUNvdW50LCBzdGFydENvbHVtbiwgZW5kQ29sdW1uRXhjbHVkaW5nQnJhY2VzLCBmYWxz
ZSk7Ci19Ci0KIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmN0aW9uRXhl
Y3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoY29uc3QgSWRlbnRpZmllciYgbmFtZSwgRXhlY1N0YXRl
JiBleGVjLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTT2JqZWN0KiYgZXhjZXB0aW9uKQog
ewogICAgIFBhcnNlckVycm9yIGVycm9yOwpAQCAtMTg2LDggKzE2Niw3IEBAIFVubGlua2VkRnVu
Y3Rpb25FeGVjdXRhYmxlKiBVbmxpbmtlZEZ1bmMKIAogVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9j
ayogVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNvZGVCbG9ja0ZvcigKICAgICBWTSYgdm0s
IGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFs
aXphdGlvbktpbmQsIAotICAgIERlYnVnZ2VyTW9kZSBkZWJ1Z2dlck1vZGUsIFByb2ZpbGVyTW9k
ZSBwcm9maWxlck1vZGUsIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzLCAKLSAgICBQYXJzZXJFcnJv
ciYgZXJyb3IpCisgICAgRGVidWdnZXJNb2RlIGRlYnVnZ2VyTW9kZSwgUHJvZmlsZXJNb2RlIHBy
b2ZpbGVyTW9kZSwgUGFyc2VyRXJyb3ImIGVycm9yKQogewogICAgIHN3aXRjaCAoc3BlY2lhbGl6
YXRpb25LaW5kKSB7CiAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKQEAgLTIwMyw3ICsxODIsNyBAQCBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBVbmxpbmtlZEZ1bmN0CiAgICAgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jayogcmVzdWx0ID0gZ2VuZXJhdGVGdW5jdGlvbkNvZGVCbG9jaygKICAgICAg
ICAgdm0sIHRoaXMsIHNvdXJjZSwgc3BlY2lhbGl6YXRpb25LaW5kLCBkZWJ1Z2dlck1vZGUsIHBy
b2ZpbGVyTW9kZSwgCiAgICAgICAgIGlzQnVpbHRpbkZ1bmN0aW9uKCkgPyBVbmxpbmtlZEJ1aWx0
aW5GdW5jdGlvbiA6IFVubGlua2VkTm9ybWFsRnVuY3Rpb24sIAotICAgICAgICBib2R5SW5jbHVk
ZXNCcmFjZXMsIGVycm9yKTsKKyAgICAgICAgZXJyb3IpOwogICAgIAogICAgIGlmIChlcnJvci5p
c1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1VubGlua2VkQ29kZUJsb2NrLmgJKHJldmlzaW9uIDE4
MTY2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9VbmxpbmtlZENvZGVCbG9j
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzUsMTIgKzEzNSwxMSBAQCBwdWJsaWM6CiAKICAgICBV
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrKiBjb2RlQmxvY2tGb3IoCiAgICAgICAgIFZNJiwgY29u
c3QgU291cmNlQ29kZSYsIENvZGVTcGVjaWFsaXphdGlvbktpbmQsIERlYnVnZ2VyTW9kZSwgUHJv
ZmlsZXJNb2RlLCAKLSAgICAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMsIFBhcnNlckVycm9y
Jik7CisgICAgICAgIFBhcnNlckVycm9yJik7CiAKICAgICBzdGF0aWMgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIGZyb21HbG9iYWxDb2RlKGNvbnN0IElkZW50aWZpZXImLCBFeGVjU3RhdGUm
LCBjb25zdCBTb3VyY2VDb2RlJiwgSlNPYmplY3QqJiBleGNlcHRpb24pOwogCi0gICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBsaW5rSW5zaWRlRXhlY3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUm
KTsKLSAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGxpbmtHbG9iYWxDb2RlKFZNJiwgY29uc3QgU291
cmNlQ29kZSYpOworICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogbGluayhWTSYsIGNvbnN0IFNvdXJj
ZUNvZGUmKTsKIAogICAgIHZvaWQgY2xlYXJDb2RlRm9yUmVjb21waWxhdGlvbigpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCShyZXZpc2lvbiAxODE2NjQp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MzMsNyArNDMzLDcgQEAgcHVibGljOgogICAgIH5QYXJzZXIoKTsKIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBQYXJzZWROb2RlPgotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBw
YXJzZShQYXJzZXJFcnJvciYsIGJvb2wgbmVlZFJlcGFyc2luZ0FkanVzdG1lbnQpOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZShQYXJzZXJFcnJvciYpOwogCiAgICAgSlNU
ZXh0UG9zaXRpb24gcG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bGV4ZXItPnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUoKTsgfQogICAgIFZlY3RvcjxSZWZQdHI8
U3RyaW5nSW1wbD4+JiYgY2xvc2VkVmFyaWFibGVzKCkgeyByZXR1cm4gV1RGOjptb3ZlKG1fY2xv
c2VkVmFyaWFibGVzKTsgfQpAQCAtOTA0LDEyICs5MDQsMTIgQEAgcHJpdmF0ZToKIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFzcyBQYXJzZWROb2RlPgotc3Rk
Ojp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJF
cnJvciYgZXJyb3IsIGJvb2wgbmVlZFJlcGFyc2luZ0FkanVzdG1lbnQpCitzdGQ6OnVuaXF1ZV9w
dHI8UGFyc2VkTm9kZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJv
cikKIHsKICAgICBpbnQgZXJyTGluZTsKICAgICBTdHJpbmcgZXJyTXNnOwogCi0gICAgaWYgKFBh
cnNlZE5vZGU6OnNjb3BlSXNGdW5jdGlvbiAmJiBuZWVkUmVwYXJzaW5nQWRqdXN0bWVudCkKKyAg
ICBpZiAoUGFyc2VkTm9kZTo6c2NvcGVJc0Z1bmN0aW9uKQogICAgICAgICBtX2xleGVyLT5zZXRJ
c1JlcGFyc2luZygpOwogCiAgICAgbV9zb3VyY2VFbGVtZW50cyA9IDA7CkBAIC05ODcsOCArOTg3
LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5vZGU+IHBhcnNlKAogICAgIFZNKiB2bSwgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsCiAg
ICAgY29uc3QgSWRlbnRpZmllciYgbmFtZSwgSlNQYXJzZXJCdWlsdGluTW9kZSBidWlsdGluTW9k
ZSwKICAgICBKU1BhcnNlclN0cmljdE1vZGUgc3RyaWN0TW9kZSwgSlNQYXJzZXJDb2RlVHlwZSBj
b2RlVHlwZSwKLSAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3NpdGlv
bkJlZm9yZUxhc3ROZXdsaW5lID0gMCwgCi0gICAgYm9vbCBuZWVkUmVwYXJzaW5nQWRqdXN0bWVu
dCA9IGZhbHNlLCAKKyAgICBQYXJzZXJFcnJvciYgZXJyb3IsIEpTVGV4dFBvc2l0aW9uKiBwb3Np
dGlvbkJlZm9yZUxhc3ROZXdsaW5lID0gMCwKICAgICBDb25zdHJ1Y3RvcktpbmQgZGVmYXVsdENv
bnN0cnVjdG9yS2luZCA9IENvbnN0cnVjdG9yS2luZDo6Tm9uZSkKIHsKICAgICBTYW1wbGluZ1Jl
Z2lvbiBzYW1wbGluZ1JlZ2lvbigiUGFyc2luZyIpOwpAQCAtOTk2LDcgKzk5NSw3IEBAIHN0ZDo6
dW5pcXVlX3B0cjxQYXJzZWROb2RlPiBwYXJzZSgKICAgICBBU1NFUlQoIXNvdXJjZS5wcm92aWRl
cigpLT5zb3VyY2UoKS5pc051bGwoKSk7CiAgICAgaWYgKHNvdXJjZS5wcm92aWRlcigpLT5zb3Vy
Y2UoKS5pczhCaXQoKSkgewogICAgICAgICBQYXJzZXI8TGV4ZXI8TENoYXI+PiBwYXJzZXIodm0s
IHNvdXJjZSwgcGFyYW1ldGVycywgbmFtZSwgYnVpbHRpbk1vZGUsIHN0cmljdE1vZGUsIGNvZGVU
eXBlLCBkZWZhdWx0Q29uc3RydWN0b3JLaW5kKTsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPFBh
cnNlZE5vZGU+IHJlc3VsdCA9IHBhcnNlci5wYXJzZTxQYXJzZWROb2RlPihlcnJvciwgbmVlZFJl
cGFyc2luZ0FkanVzdG1lbnQpOworICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4g
cmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5vZGU+KGVycm9yKTsKICAgICAgICAgaWYgKHBv
c2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUpCiAgICAgICAgICAgICAqcG9zaXRpb25CZWZvcmVMYXN0
TmV3bGluZSA9IHBhcnNlci5wb3NpdGlvbkJlZm9yZUxhc3ROZXdsaW5lKCk7CiAgICAgICAgIGlm
IChidWlsdGluTW9kZSA9PSBKU1BhcnNlckJ1aWx0aW5Nb2RlOjpCdWlsdGluKSB7CkBAIC0xMDA4
LDcgKzEwMDcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcGFyc2UoCiAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgfQogICAgIFBhcnNlcjxMZXhlcjxVQ2hhcj4+IHBhcnNlcih2
bSwgc291cmNlLCBwYXJhbWV0ZXJzLCBuYW1lLCBidWlsdGluTW9kZSwgc3RyaWN0TW9kZSwgY29k
ZVR5cGUpOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxQYXJzZWROb2RlPiByZXN1bHQgPSBwYXJzZXIu
cGFyc2U8UGFyc2VkTm9kZT4oZXJyb3IsIG5lZWRSZXBhcnNpbmdBZGp1c3RtZW50KTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9kZT4gcmVzdWx0ID0gcGFyc2VyLnBhcnNlPFBhcnNlZE5v
ZGU+KGVycm9yKTsKICAgICBpZiAocG9zaXRpb25CZWZvcmVMYXN0TmV3bGluZSkKICAgICAgICAg
KnBvc2l0aW9uQmVmb3JlTGFzdE5ld2xpbmUgPSBwYXJzZXIucG9zaXRpb25CZWZvcmVMYXN0TmV3
bGluZSgpOwogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FeGVjdXRhYmxlLmNwcAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIz
Nyw3ICsyMzcsNyBAQCBQYXNzUmVmUHRyPENvZGVCbG9jaz4gU2NyaXB0RXhlY3V0YWJsZTo6CiAg
ICAgUHJvZmlsZXJNb2RlIHByb2ZpbGVyTW9kZSA9IGdsb2JhbE9iamVjdC0+aGFzUHJvZmlsZXIo
KSA/IFByb2ZpbGVyT24gOiBQcm9maWxlck9mZjsKICAgICBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJs
b2NrKiB1bmxpbmtlZENvZGVCbG9jayA9CiAgICAgICAgIGV4ZWN1dGFibGUtPm1fdW5saW5rZWRF
eGVjdXRhYmxlLT5jb2RlQmxvY2tGb3IoCi0gICAgICAgICAgICAqdm0sIGV4ZWN1dGFibGUtPm1f
c291cmNlLCBraW5kLCBkZWJ1Z2dlck1vZGUsIHByb2ZpbGVyTW9kZSwgZXhlY3V0YWJsZS0+Ym9k
eUluY2x1ZGVzQnJhY2VzKCksIGVycm9yKTsKKyAgICAgICAgICAgICp2bSwgZXhlY3V0YWJsZS0+
bV9zb3VyY2UsIGtpbmQsIGRlYnVnZ2VyTW9kZSwgcHJvZmlsZXJNb2RlLCBlcnJvcik7CiAgICAg
cmVjb3JkUGFyc2UoZXhlY3V0YWJsZS0+bV91bmxpbmtlZEV4ZWN1dGFibGUtPmZlYXR1cmVzKCks
IGV4ZWN1dGFibGUtPm1fdW5saW5rZWRFeGVjdXRhYmxlLT5oYXNDYXB0dXJlZFZhcmlhYmxlcygp
LCBsaW5lTm8oKSwgbGFzdExpbmUoKSwgc3RhcnRDb2x1bW4oKSwgZW5kQ29sdW1uKCkpOyAKICAg
ICBpZiAoIXVubGlua2VkQ29kZUJsb2NrKSB7CiAgICAgICAgIGV4Y2VwdGlvbiA9IHZtLT50aHJv
d0V4Y2VwdGlvbigKQEAgLTM5NiwxMSArMzk2LDkgQEAgY29uc3QgQ2xhc3NJbmZvIEZ1bmN0aW9u
RXhlY3V0YWJsZTo6c19pbgogCiBGdW5jdGlvbkV4ZWN1dGFibGU6OkZ1bmN0aW9uRXhlY3V0YWJs
ZShWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwgCiAgICAgVW5saW5rZWRGdW5jdGlv
bkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSwgdW5zaWduZWQgZmlyc3RMaW5lLCAKLSAg
ICB1bnNpZ25lZCBsYXN0TGluZSwgdW5zaWduZWQgc3RhcnRDb2x1bW4sIHVuc2lnbmVkIGVuZENv
bHVtbiwgCi0gICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMpCisgICAgdW5zaWduZWQgbGFzdExp
bmUsIHVuc2lnbmVkIHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4pCiAgICAgOiBTY3Jp
cHRFeGVjdXRhYmxlKHZtLmZ1bmN0aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgdm0sIHNv
dXJjZSwgdW5saW5rZWRFeGVjdXRhYmxlLT5pc0luU3RyaWN0Q29udGV4dCgpKQogICAgICwgbV91
bmxpbmtlZEV4ZWN1dGFibGUodm0sIHRoaXMsIHVubGlua2VkRXhlY3V0YWJsZSkKLSAgICAsIG1f
Ym9keUluY2x1ZGVzQnJhY2VzKGJvZHlJbmNsdWRlc0JyYWNlcykKIHsKICAgICBSRUxFQVNFX0FT
U0VSVCghc291cmNlLmlzTnVsbCgpKTsKICAgICBBU1NFUlQoc291cmNlLmxlbmd0aCgpKTsKQEAg
LTUwOCw3ICs1MDYsNyBAQCBKU09iamVjdCogUHJvZ3JhbUV4ZWN1dGFibGU6OmluaXRpYWxpemVH
CiAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uRGVjbGFyYXRpb25zLnNpemUo
KTsgKytpKSB7CiAgICAgICAgIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEZ1
bmN0aW9uRXhlY3V0YWJsZSA9IGZ1bmN0aW9uRGVjbGFyYXRpb25zW2ldLnNlY29uZC5nZXQoKTsK
LSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5saW5rZWRG
dW5jdGlvbkV4ZWN1dGFibGUtPmxpbmtJbnNpZGVFeGVjdXRhYmxlKHZtLCBtX3NvdXJjZSksIHNj
b3BlKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdW5s
aW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUtPmxpbmsodm0sIG1fc291cmNlKSwgc2NvcGUpOwogICAg
ICAgICBnbG9iYWxPYmplY3QtPmFkZEZ1bmN0aW9uKGNhbGxGcmFtZSwgZnVuY3Rpb25EZWNsYXJh
dGlvbnNbaV0uZmlyc3QsIHZhbHVlKTsKICAgICAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpIHx8
IHZtLmNvbnRyb2xGbG93UHJvZmlsZXIoKSkgewogICAgICAgICAgICAgdm0uZnVuY3Rpb25IYXNF
eGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShzb3VyY2VJRCgpLCAKQEAgLTYx
NCw3ICs2MTIsNyBAQCBGdW5jdGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6CiAg
ICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlOjpmcm9tR2xvYmFsQ29kZShuYW1lLCBleGVjLCBzb3VyY2Us
IGV4Y2VwdGlvbik7CiAgICAgaWYgKCF1bmxpbmtlZEV4ZWN1dGFibGUpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmtHbG9iYWxDb2Rl
KGV4ZWMudm0oKSwgc291cmNlKTsKKyAgICByZXR1cm4gdW5saW5rZWRFeGVjdXRhYmxlLT5saW5r
KGV4ZWMudm0oKSwgc291cmNlKTsKIH0KIAogU3RyaW5nIEZ1bmN0aW9uRXhlY3V0YWJsZTo6cGFy
YW1TdHJpbmcoKSBjb25zdApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4
ZWN1dGFibGUuaAkocmV2aXNpb24gMTgxNjY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01NDMsMTAgKzU0Myw5IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBGdW5jdGlvbkV4ZWN1dGFibGUqIGNyZWF0ZSgKICAgICAgICAg
Vk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRh
YmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUsIAotICAgICAgICB1bnNpZ25lZCBmaXJzdExpbmUsIHVu
c2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwgdW5zaWduZWQgZW5kQ29sdW1u
LCAKLSAgICAgICAgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMgPSB0cnVlKQorICAgICAgICB1bnNp
Z25lZCBmaXJzdExpbmUsIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENvbHVtbiwg
dW5zaWduZWQgZW5kQ29sdW1uKQogICAgIHsKLSAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxl
Pih2bS5oZWFwKSkgRnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0
YWJsZSwgZmlyc3RMaW5lLCBsYXN0TGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbiwgYm9keUlu
Y2x1ZGVzQnJhY2VzKTsKKyAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
bmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RnVuY3Rpb25FeGVjdXRhYmxlPih2bS5oZWFwKSkg
RnVuY3Rpb25FeGVjdXRhYmxlKHZtLCBzb3VyY2UsIHVubGlua2VkRXhlY3V0YWJsZSwgZmlyc3RM
aW5lLCBsYXN0TGluZSwgc3RhcnRDb2x1bW4sIGVuZENvbHVtbik7CiAgICAgICAgIGV4ZWN1dGFi
bGUtPmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICAgICAgcmV0dXJuIGV4ZWN1dGFibGU7CiAgICAg
fQpAQCAtNjQzLDEzICs2NDIsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhckNvZGUoKTsK
IAotICAgIGJvb2wgYm9keUluY2x1ZGVzQnJhY2VzKCkgY29uc3QgeyByZXR1cm4gbV9ib2R5SW5j
bHVkZXNCcmFjZXM7IH0KLQogcHJpdmF0ZToKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUoCiAgICAg
ICAgIFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKiwg
dW5zaWduZWQgZmlyc3RMaW5lLCAKLSAgICAgICAgdW5zaWduZWQgbGFzdExpbmUsIHVuc2lnbmVk
IHN0YXJ0Q29sdW1uLCB1bnNpZ25lZCBlbmRDb2x1bW4sIAotICAgICAgICBib29sIGJvZHlJbmNs
dWRlc0JyYWNlcyk7CisgICAgICAgIHVuc2lnbmVkIGxhc3RMaW5lLCB1bnNpZ25lZCBzdGFydENv
bHVtbiwgdW5zaWduZWQgZW5kQ29sdW1uKTsKIAogICAgIGJvb2wgaXNDb21waWxpbmcoKQogICAg
IHsKQEAgLTY2Nyw3ICs2NjMsNiBAQCBwcml2YXRlOgogICAgIFdyaXRlQmFycmllcjxVbmxpbmtl
ZEZ1bmN0aW9uRXhlY3V0YWJsZT4gbV91bmxpbmtlZEV4ZWN1dGFibGU7CiAgICAgUmVmUHRyPEZ1
bmN0aW9uQ29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7CiAgICAgUmVmUHRyPEZ1bmN0aW9u
Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNvbnN0cnVjdDsKLSAgICBib29sIG1fYm9keUluY2x1
ZGVzQnJhY2VzOwogICAgIFJlZlB0cjxUeXBlU2V0PiBtX3JldHVyblN0YXRlbWVudFR5cGVTZXQ7
CiB9OwogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkNvbnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMTgxNjYxKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTkzLDkgKzkzLDkgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uU2tpcHBpbmdFdmFs
RQogICAgIC8vIFdlIGFsc28gbmVlZCBcbiBiZWZvcmUgdGhlIGNsb3NpbmcgfSB0byBoYW5kbGUg
Ly8gY29tbWVudHMgYXQgdGhlIGVuZCBvZiB0aGUgbGFzdCBsaW5lCiAgICAgU3RyaW5nIHByb2dy
YW07CiAgICAgaWYgKGFyZ3MuaXNFbXB0eSgpKQotICAgICAgICBwcm9ncmFtID0gQVNDSUlMaXRl
cmFsKCIoZnVuY3Rpb24oKSB7XG59KSIpOworICAgICAgICBwcm9ncmFtID0gQVNDSUlMaXRlcmFs
KCIoZnVuY3Rpb24oKSB7IFxufSkiKTsKICAgICBlbHNlIGlmIChhcmdzLnNpemUoKSA9PSAxKQot
ICAgICAgICBwcm9ncmFtID0gbWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyIsIGFyZ3MuYXQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCAiXG59KSIpOworICAgICAgICBwcm9ncmFtID0g
bWFrZVN0cmluZygiKGZ1bmN0aW9uKCkgeyAiLCBhcmdzLmF0KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKSwgIlxufSkiKTsKICAgICBlbHNlIHsKICAgICAgICAgU3RyaW5nQnVpbGRlciBi
dWlsZGVyOwogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIihmdW5jdGlvbigiKTsKQEAg
LTEwNCw3ICsxMDQsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb25Ta2lwcGluZ0V2YWxF
CiAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnLCcpOwogICAgICAgICAgICAgYnVpbGRlci5h
cHBlbmQoYXJncy5hdChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgICAgICB9
Ci0gICAgICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiKSB7Iik7CisgICAgICAgIGJ1aWxkZXIu
YXBwZW5kTGl0ZXJhbCgiKSB7ICIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChhcmdzLmF0KGFy
Z3Muc2l6ZSgpIC0gMSkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpKTsKICAgICAgICAgYnVp
bGRlci5hcHBlbmRMaXRlcmFsKCJcbn0pIik7CiAgICAgICAgIHByb2dyYW0gPSBidWlsZGVyLnRv
U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvblBy
b3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RnVuY3Rpb25Qcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxODE2NjEpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9GdW5jdGlvblByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTgyLDExICs4Miw4IEBAIENhbGxUeXBlIEZ1bmN0aW9uUHJvdG90eXBlOjpnZXRDYWxsRGF0YSgK
IC8vIEZ1bmN0aW9ucwogCiAvLyBDb21wYXRpYmlsaXR5IGhhY2sgZm9yIHRoZSBPcHRpbW9zdCBK
YXZhU2NyaXB0IGxpYnJhcnkuIChTZWUgPHJkYXI6Ly9wcm9ibGVtLzY1OTUwNDA+LikKLXN0YXRp
YyBpbmxpbmUgdm9pZCBpbnNlcnRTZW1pY29sb25JZk5lZWRlZChTdHJpbmcmIGZ1bmN0aW9uQm9k
eSwgYm9vbCBib2R5SW5jbHVkZXNCcmFjZXMpCitzdGF0aWMgaW5saW5lIHZvaWQgaW5zZXJ0U2Vt
aWNvbG9uSWZOZWVkZWQoU3RyaW5nJiBmdW5jdGlvbkJvZHkpCiB7Ci0gICAgaWYgKCFib2R5SW5j
bHVkZXNCcmFjZXMpCi0gICAgICAgIGZ1bmN0aW9uQm9keSA9IG1ha2VTdHJpbmcoInsgIiwgZnVu
Y3Rpb25Cb2R5LCAnfScpOwotCiAgICAgQVNTRVJUKGZ1bmN0aW9uQm9keVswXSA9PSAneycpOwog
ICAgIEFTU0VSVChmdW5jdGlvbkJvZHlbZnVuY3Rpb25Cb2R5Lmxlbmd0aCgpIC0gMV0gPT0gJ30n
KTsKIApAQCAtMTA5LDcgKzEwNiw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25Qcm8KICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJp
dmlhbFN0cmluZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoKSB7
XG4gICAgW25hdGl2ZSBjb2RlXVxufSIpKTsKICAgICAgICAgRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gZnVuY3Rpb24tPmpzRXhlY3V0YWJsZSgpOwogICAgICAgICBTdHJpbmcgc291
cmNlU3RyaW5nID0gZXhlY3V0YWJsZS0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICAgICAgaW5z
ZXJ0U2VtaWNvbG9uSWZOZWVkZWQoc291cmNlU3RyaW5nLCBleGVjdXRhYmxlLT5ib2R5SW5jbHVk
ZXNCcmFjZXMoKSk7CisgICAgICAgIGluc2VydFNlbWljb2xvbklmTmVlZGVkKHNvdXJjZVN0cmlu
Zyk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNNYWtlTm9udHJpdmlhbFN0cmlu
ZyhleGVjLCAiZnVuY3Rpb24gIiwgZnVuY3Rpb24tPm5hbWUoZXhlYyksICIoIiwgZXhlY3V0YWJs
ZS0+cGFyYW1TdHJpbmcoKSwgIikgIiwgc291cmNlU3RyaW5nKSk7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="273743"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>