<?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>36420</bug_id>
          
          <creation_ts>2010-03-20 16:26:36 -0700</creation_ts>
          <short_desc>JSC needs an API to allow custom objects to have aprivate GC-accessible properties</short_desc>
          <delta_ts>2010-03-21 13:19:27 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Oliver Hunt">oliver</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ddkilzer</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>202253</commentid>
    <comment_count>0</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-20 16:26:36 -0700</bug_when>
    <thetext>JSC needs an API to allow custom objects to have aprivate GC-accessible properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202255</commentid>
    <comment_count>1</comment_count>
      <attachid>51238</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-20 16:31:36 -0700</bug_when>
    <thetext>Created attachment 51238
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202262</commentid>
    <comment_count>2</comment_count>
      <attachid>51238</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-03-20 18:57:55 -0700</bug_when>
    <thetext>Comment on attachment 51238
Patch

Comments given on IRC:

Docs:

the headerdoc could maybe explain the purpose of this
i.e. that it&apos;s a way to hold on to JavaScript values in a way that is safe for GC
I think probably in the set one would be the best place to explain the purpose
also maybe add a note to JSValueProtect
to make clear that if you want one JS object to keep another alive, you shouldn&apos;t use it, you should use a private property
otherwise you may get uncollectable reference cycles


Error cases:

JSObjectSetPrivateProperty seems to fail silently if the argument is not a callback object
maybe it should have a boolean return? or raise an exception?
it looks like JSObjectGetPrivateProperty will return garbage when called on a non-API object
I think it would make more sense to return undefined
Silent failure on delete seems ok

Testing:

you could try harder in the test case to avoid the possibility that a copy of aHeapRef remains on the stack
I think you should test calling these on non-API objects in the test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202263</commentid>
    <comment_count>3</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-20 20:19:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 51238 [details])
&gt; Comments given on IRC:
&gt; 
&gt; Docs:
&gt; 
&gt; the headerdoc could maybe explain the purpose of this
&gt; i.e. that it&apos;s a way to hold on to JavaScript values in a way that is safe for
&gt; GC
&gt; I think probably in the set one would be the best place to explain the purpose
&gt; also maybe add a note to JSValueProtect
&gt; to make clear that if you want one JS object to keep another alive, you
&gt; shouldn&apos;t use it, you should use a private property
&gt; otherwise you may get uncollectable reference cycles
I&apos;m not sure about adding references to the new API from actual API until the new API has gone through review.

&gt; 
&gt; 
&gt; Error cases:
&gt; 
&gt; JSObjectSetPrivateProperty seems to fail silently if the argument is not a
&gt; callback object
&gt; maybe it should have a boolean return? or raise an exception?

i&apos;ll make it return bool as setPrivate does

&gt; it looks like JSObjectGetPrivateProperty will return garbage when called on a
&gt; non-API object
&gt; I think it would make more sense to return undefined

It returns NULL

&gt; Silent failure on delete seems ok
I&apos;ll return bool to be consistent with SetPrivateProperty


&gt; 
&gt; Testing:
&gt; 
&gt; you could try harder in the test case to avoid the possibility that a copy of
&gt; aHeapRef remains on the stack

It does get blown from the stack -- i verified the test failed before i added marking support :D

&gt; I think you should test calling these on non-API objects in the test case

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202265</commentid>
    <comment_count>4</comment_count>
      <attachid>51240</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-20 20:25:45 -0700</bug_when>
    <thetext>Created attachment 51240
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202272</commentid>
    <comment_count>5</comment_count>
      <attachid>51240</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-03-20 23:57:47 -0700</bug_when>
    <thetext>Comment on attachment 51240
Patch

Please add @result to the headerdoc for JSObjectSetPrivateProperty. Otherwise r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202276</commentid>
    <comment_count>6</comment_count>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-03-21 00:40:20 -0700</bug_when>
    <thetext>Committed r56314: &lt;http://trac.webkit.org/changeset/56314&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202280</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-03-21 05:11:51 -0700</bug_when>
    <thetext>This appears to have broken the windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>202311</commentid>
    <comment_count>8</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2010-03-21 13:19:27 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; This appears to have broken the windows build.

Blind attempt #1 to fix the Windows build (failed):
&lt;http://trac.webkit.org/changeset/56317&gt;

Blind attempt #2 (worked):
&lt;http://trac.webkit.org/changeset/56318&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51238</attachid>
            <date>2010-03-20 16:31:36 -0700</date>
            <delta_ts>2010-03-20 20:25:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36420-20100320163135.patch</filename>
            <type>text/plain</type>
            <size>19328</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDBjMzM0Y2QuLjFjZjdhMDIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMzMsNiArMzMsODQgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0YSB7CisgICAg
SlNDYWxsYmFja09iamVjdERhdGEodm9pZCogcHJpdmF0ZURhdGEsIEpTQ2xhc3NSZWYganNDbGFz
cykKKyAgICAgICAgOiBwcml2YXRlRGF0YShwcml2YXRlRGF0YSkKKyAgICAgICAgLCBqc0NsYXNz
KGpzQ2xhc3MpCisgICAgeworICAgICAgICBKU0NsYXNzUmV0YWluKGpzQ2xhc3MpOworICAgIH0K
KyAgICAKKyAgICB+SlNDYWxsYmFja09iamVjdERhdGEoKQorICAgIHsKKyAgICAgICAgSlNDbGFz
c1JlbGVhc2UoanNDbGFzcyk7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUgZ2V0UHJpdmF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5nZXRQcml2YXRlUHJvcGVy
dHkocHJvcGVydHlOYW1lKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgbV9wcml2YXRl
UHJvcGVydGllcy5zZXQobmV3IEpTUHJpdmF0ZVByb3BlcnR5TWFwKTsKKyAgICAgICAgbV9wcml2
YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRp
ZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPmRl
bGV0ZVByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworICAgIH0KKworICAgIHZvaWQgbWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3By
aXZhdGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzLT5tYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICB9CisKKyAgICB2b2lkKiBw
cml2YXRlRGF0YTsKKyAgICBKU0NsYXNzUmVmIGpzQ2xhc3M7CisgICAgc3RydWN0IEpTUHJpdmF0
ZVByb3BlcnR5TWFwIHsKKyAgICAgICAgSlNWYWx1ZSBnZXRQcml2YXRlUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBQ
cml2YXRlUHJvcGVydHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGxvY2F0aW9uID0gbV9wcm9wZXJ0eU1h
cC5maW5kKHByb3BlcnR5TmFtZS51c3RyaW5nKCkucmVwKCkpOworICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uID09IG1fcHJvcGVydHlNYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fcHJvcGVydHlNYXAuc2V0KHByb3BlcnR5TmFtZS51c3RyaW5nKCkucmVwKCksIHZhbHVlKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBt
X3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUudXN0cmluZygpLnJlcCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKFByaXZhdGVQcm9wZXJ0eU1hcDo6aXRlcmF0b3Ig
cHRyID0gbV9wcm9wZXJ0eU1hcC5iZWdpbigpOyBwdHIgIT0gbV9wcm9wZXJ0eU1hcC5lbmQoKTsg
KytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHRyLT5zZWNvbmQpCisgICAgICAgICAgICAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQocHRyLT5zZWNvbmQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVT
dHJpbmc6OlJlcD4sIEpTVmFsdWUsIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlN
YXA7CisgICAgICAgIFByaXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOworICAgIH07Cisg
ICAgT3duUHRyPEpTUHJpdmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOworfTsK
KworICAgIAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IDog
cHVibGljIEJhc2UgewogcHVibGljOgpAQCAtNTIsNiArMTMwLDIxIEBAIHB1YmxpYzoKICAgICB7
IAogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQmFzZTo6QW5vbnltb3VzU2xvdENvdW50KTsgCiAgICAg
fQorICAgIAorICAgIEpTVmFsdWUgZ2V0UHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YS0+Z2V0UHJpdmF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2tPYmplY3REYXRhLT5z
ZXRQcml2YXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2tPYmplY3REYXRhLT5kZWxldGVQcml2YXRlUHJv
cGVydHkocHJvcGVydHlOYW1lKTsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSB8IE92ZXJyaWRl
c01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKQEAgLTc5LDYgKzE3MiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KIAorICAgIHZpcnR1YWwgdm9pZCBt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAgeworICAgICAgICBCYXNlOjpt
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPm1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIH0KKwogICAgIHZvaWQgaW5pdChFeGVjU3RhdGUq
KTsKICAKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxsYmFja09iamVjdChKU1Zh
bHVlKTsKQEAgLTkwLDIzICsxODksNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIHN0
YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CiAKLSAgICBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEg
ewotICAgICAgICBKU0NhbGxiYWNrT2JqZWN0RGF0YSh2b2lkKiBwcml2YXRlRGF0YSwgSlNDbGFz
c1JlZiBqc0NsYXNzKQotICAgICAgICAgICAgOiBwcml2YXRlRGF0YShwcml2YXRlRGF0YSkKLSAg
ICAgICAgICAgICwganNDbGFzcyhqc0NsYXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBKU0Ns
YXNzUmV0YWluKGpzQ2xhc3MpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB+SlNDYWxs
YmFja09iamVjdERhdGEoKQotICAgICAgICB7Ci0gICAgICAgICAgICBKU0NsYXNzUmVsZWFzZShq
c0NsYXNzKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCogcHJpdmF0ZURhdGE7
Ci0gICAgICAgIEpTQ2xhc3NSZWYganNDbGFzczsKLSAgICB9OwotICAgIAogICAgIE93blB0cjxK
U0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERhdGE7CiB9OwogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA4MWFjNWI1Li5kNjMwNWI3IDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCisjaW5jbHVkZSAiSlNPYmplY3RSZWZQcml2YXRl
LmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC0z
NjMsNiArMzY0LDQ1IEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamVj
dCwgdm9pZCogZGF0YSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0pTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIElkZW50
aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSkp
OworICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+OjppbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1l
KTsKKyAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNP
YmplY3Q+OjppbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU09iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAg
ICByZXR1cm4gdG9SZWYoZXhlYywgcmVzdWx0KTsKK30KKwordm9pZCBKU09iamVjdFNldFByaXZh
dGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
dG9KUyhleGVjLCB2YWx1ZSk7CisgICAgSWRlbnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRl
bnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0
cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmluZm8pKQorICAgICAgICBzdGF0
aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0
UHJpdmF0ZVByb3BlcnR5KG5hbWUsIGpzVmFsdWUpOworICAgIGVsc2UgaWYgKGpzT2JqZWN0LT5p
bmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU09iamVjdD46OmluZm8pKQorICAgICAgICBzdGF0
aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pio+KGpzT2JqZWN0KS0+c2V0UHJpdmF0
ZVByb3BlcnR5KG5hbWUsIGpzVmFsdWUpOworfQorCit2b2lkIEpTT2JqZWN0RGVsZXRlUHJpdmF0
ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdS
ZWYgcHJvcGVydHlOYW1lKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY3R4KTsKKyAg
ICBBUElFbnRyeVNoaW0gZW50cnlTaGltKGV4ZWMpOworICAgIEpTT2JqZWN0KiBqc09iamVjdCA9
IHRvSlMob2JqZWN0KTsKKyAgICBJZGVudGlmaWVyIG5hbWUocHJvcGVydHlOYW1lLT5pZGVudGlm
aWVyKCZleGVjLT5nbG9iYWxEYXRhKCkpKTsKKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZK
U0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0Pjo6aW5mbykpCisgICAgICAgIHN0YXRpY19j
YXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQ
cml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgZWxzZSBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZK
U0NhbGxiYWNrT2JqZWN0PEpTT2JqZWN0Pjo6aW5mbykpCisgICAgICAgIHN0YXRpY19jYXN0PEpT
Q2FsbGJhY2tPYmplY3Q8SlNPYmplY3Q+Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVy
dHkobmFtZSk7Cit9CisKIGJvb2wgSlNPYmplY3RJc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiwgSlNP
YmplY3RSZWYgb2JqZWN0KQogewogICAgIENhbGxEYXRhIGNhbGxEYXRhOwpkaWZmIC0tZ2l0IGEv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmUHJpdmF0ZS5oIGIvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmUHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLjI2MDU4NmIKLS0tIC9kZXYvbnVsbAorKysgYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmpl
Y3RSZWZQcml2YXRlLmgKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNP
YmplY3RSZWZQcml2YXRlX2gKKyNkZWZpbmUgSlNPYmplY3RSZWZQcml2YXRlX2gKKworI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cwor
ZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0IFNldHMg
YSBwcml2YXRlIHByb3BlcnR5IG9uIGFuIG9iamVjdC4gIFRoaXMgcHJpdmF0ZSBwcm9wZXJ0eSBj
YW5ub3QgYmUgYWNjZXNzZWQgZnJvbSB3aXRoaW4gSmF2YVNjcmlwdC4KKyBAcGFyYW0gY3R4IFRo
ZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCisgQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qg
d2hvc2UgcHJpdmF0ZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBzZXQuCisgQHBhcmFtIHByb3BlcnR5
TmFtZSBBIEpTU3RyaW5nIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5J3MgbmFtZS4KKyBAcGFyYW0g
dmFsdWUgQSBKU1ZhbHVlIHRvIHVzZSBhcyB0aGUgcHJvcGVydHkncyB2YWx1ZS4gIFRoaXMgbWF5
IGJlIE5VTEwuCisgKi8KK0pTX0VYUE9SVCB2b2lkIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlKTsKKworLyohCisgQGZ1bmN0aW9uCisgQGFic3RyYWN0
IEdldHMgYSBwcml2YXRlIHByb3BlcnR5IGZyb20gYW4gb2JqZWN0LgorIEBwYXJhbSBjdHggVGhl
IGV4ZWN1dGlvbiBjb250ZXh0IHRvIHVzZS4KKyBAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3
aG9zZSBwcml2YXRlIHByb3BlcnR5IHlvdSB3YW50IHRvIGdldC4KKyBAcGFyYW0gcHJvcGVydHlO
YW1lIEEgSlNTdHJpbmcgY29udGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgorIEByZXN1bHQg
VGhlIHByb3BlcnR5J3MgdmFsdWUgaWYgb2JqZWN0IGhhcyB0aGUgcHJvcGVydHksIG90aGVyd2lz
ZSBOVUxMLgorICovCitKU19FWFBPUlQgSlNWYWx1ZVJlZiBKU09iamVjdEdldFByaXZhdGVQcm9w
ZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHBy
b3BlcnR5TmFtZSk7CisKKy8qIQorIEBmdW5jdGlvbgorIEBhYnN0cmFjdCBEZWxldGVzIGEgcHJp
dmF0ZSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC4KKyBAcGFyYW0gY3R4IFRoZSBleGVjdXRpb24g
Y29udGV4dCB0byB1c2UuCisgQHBhcmFtIG9iamVjdCBUaGUgSlNPYmplY3Qgd2hvc2UgcHJpdmF0
ZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBkZWxldGUuCisgQHBhcmFtIHByb3BlcnR5TmFtZSBBIEpT
U3RyaW5nIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5J3MgbmFtZS4KKyAqLworSlNfRVhQT1JUIHZv
aWQgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmpl
Y3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpOworCisjaWZkZWYgX19jcGx1
c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLy8gSlNPYmplY3RSZWZQcml2YXRlX2gKZGlmZiAt
LWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMgYi9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvdGVzdGFwaS5jCmluZGV4IDJkZjYzMzQuLmRiNjFjYjcgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKKysrIGIvSmF2YVNjcmlwdENvcmUv
QVBJL3Rlc3RzL3Rlc3RhcGkuYwpAQCAtNDIsNiArNDIsMTAgQEAgc3RhdGljIGRvdWJsZSBuYW4o
Y29uc3QgY2hhciopCiAKICNlbmRpZgogCit2b2lkIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5
KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlUmVmIHZhbHVlKTsKK0pTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2YXRl
UHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1Jl
ZiBwcm9wZXJ0eU5hbWUpOwordm9pZCBKU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eShKU0Nv
bnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFt
ZSk7CisKIHN0YXRpYyBKU0dsb2JhbENvbnRleHRSZWYgY29udGV4dDsKIHN0YXRpYyBpbnQgZmFp
bGVkOwogc3RhdGljIHZvaWQgYXNzZXJ0RXF1YWxzQXNCb29sZWFuKEpTVmFsdWVSZWYgdmFsdWUs
IGJvb2wgZXhwZWN0ZWRWYWx1ZSkKQEAgLTc1NCw2ICs3NTgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
SW5pdGlhbGl6ZUZpbmFsaXplKCkKIAogc3RhdGljIEpTVmFsdWVSZWYganNOdW1iZXJWYWx1ZSA9
ICBOVUxMOwogCitzdGF0aWMgSlNPYmplY3RSZWYgYUhlYXBSZWYgPSBOVUxMOworCiBzdGF0aWMg
dm9pZCBtYWtlR2xvYmFsTnVtYmVyVmFsdWUoSlNDb250ZXh0UmVmIGNvbnRleHQpIHsKICAgICBK
U1ZhbHVlUmVmIHYgPSBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0LCA0MjApOwogICAgIEpTVmFs
dWVQcm90ZWN0KGNvbnRleHQsIHYpOwpAQCAtODY5LDcgKzg3NSwzNiBAQCBpbnQgbWFpbihpbnQg
YXJnYywgY2hhciogYXJndltdKQogICAgIEpTU3RyaW5nUmVmIEVtcHR5T2JqZWN0SVN0cmluZyA9
IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJFbXB0eU9iamVjdCIpOwogICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHkoY29udGV4dCwgZ2xvYmFsT2JqZWN0LCBFbXB0eU9iamVjdElTdHJpbmcs
IEVtcHR5T2JqZWN0LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIE5VTEwpOwogICAgIEpTU3Ry
aW5nUmVsZWFzZShFbXB0eU9iamVjdElTdHJpbmcpOworICAgIAorICAgIEpTU3RyaW5nUmVmIGxl
bmd0aFN0ciA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJsZW5ndGgiKTsKKyAgICBh
SGVhcFJlZiA9IEpTT2JqZWN0TWFrZUFycmF5KGNvbnRleHQsIDAsIDAsIDApOworICAgIEpTT2Jq
ZWN0U2V0UHJvcGVydHkoY29udGV4dCwgYUhlYXBSZWYsIGxlbmd0aFN0ciwgSlNWYWx1ZU1ha2VO
dW1iZXIoY29udGV4dCwgMTApLCAwLCAwKTsKKyAgICBKU1N0cmluZ1JlZiBwcml2YXRlUHJvcGVy
dHlOYW1lID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENTdHJpbmcoInByaXZhdGVQcm9wZXJ0eSIp
OworICAgIEpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KGNvbnRleHQsIG15T2JqZWN0LCBwcml2
YXRlUHJvcGVydHlOYW1lLCBhSGVhcFJlZik7CisgICAgaWYgKEpTT2JqZWN0R2V0UHJpdmF0ZVBy
b3BlcnR5KGNvbnRleHQsIG15T2JqZWN0LCBwcml2YXRlUHJvcGVydHlOYW1lKSAhPSBhSGVhcFJl
ZikgeworICAgICAgICBwcmludGYoIkZBSUw6IENvdWxkIG5vdCByZXRyaWV2ZSBwcml2YXRlIHBy
b3BlcnR5LlxuIik7CisgICAgICAgIGZhaWxlZCA9IDE7CisgICAgfSBlbHNlCisgICAgICAgIHBy
aW50ZigiUEFTUzogUmV0cmlldmVkIHByaXZhdGUgcHJvcGVydHkuXG4iKTsKKyAgICAKKyAgICBp
ZiAoSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0LCBteU9iamVjdCwgcHJpdmF0ZVByb3BlcnR5
TmFtZSwgMCkgPT0gYUhlYXBSZWYpIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBBY2Nlc3NlZCBw
cml2YXRlIHByb3BlcnR5IHRocm91Z2ggb3JkaW5hcnkgcHJvcGVydHkgbG9va3VwLlxuIik7Cisg
ICAgICAgIGZhaWxlZCA9IDE7CisgICAgfSBlbHNlCisgICAgICAgIHByaW50ZigiUEFTUzogQ2Fu
bm90IGFjY2VzcyBwcml2YXRlIHByb3BlcnR5IHRocm91Z2ggb3JkaW5hcnkgcHJvcGVydHkgbG9v
a3VwLlxuIik7CisgICAgCisgICAgSlNHYXJiYWdlQ29sbGVjdChjb250ZXh0KTsKKyAgICAKKyAg
ICBmb3IgKGludCBpID0gMDsgaSA8IDEwMDAwOyBpKyspCisgICAgICAgIEpTT2JqZWN0TWFrZShj
b250ZXh0LCAwLCAwKTsKIAorICAgIGlmIChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmpl
Y3RHZXRQcm9wZXJ0eShjb250ZXh0LCBhSGVhcFJlZiwgbGVuZ3RoU3RyLCAwKSwgMCkgIT0gMTAp
IHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBQcml2YXRlIHByb3BlcnR5IGhhcyBiZWVuIGNvbGxl
Y3RlZC5cbiIpOworICAgICAgICBmYWlsZWQgPSAxOworICAgIH0gZWxzZQorICAgICAgICBwcmlu
dGYoIlBBU1M6IFByaXZhdGUgcHJvcGVydHkgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYmVlbiBj
b2xsZWN0ZWQuXG4iKTsKKyAgICBKU1N0cmluZ1JlbGVhc2UobGVuZ3RoU3RyKTsKKyAgICAKICAg
ICBKU1N0cmluZ1JlZiB2YWxpZEpTT04gPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygi
e1wiYVByb3BlcnR5XCI6dHJ1ZX0iKTsKICAgICBKU1ZhbHVlUmVmIGpzb25PYmplY3QgPSBKU1Zh
bHVlTWFrZUZyb21KU09OU3RyaW5nKGNvbnRleHQsIHZhbGlkSlNPTik7CiAgICAgSlNTdHJpbmdS
ZWxlYXNlKHZhbGlkSlNPTik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cg
Yi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggNzIyMjBiYS4uN2UwMTU0YiAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEwLTAzLTIwICBPbGl2ZXIgSHVudCAgPG9saXZlckBh
cHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSlNDIG5lZWRzIGFuIEFQSSB0byBhbGxvdyBjdXN0b20gb2JqZWN0cyB0byBoYXZlIGFwcml2
YXRlIEdDLWFjY2Vzc2libGUgcHJvcGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzY0MjAKKworICAgICAgICBBZGQgbmV3IEFQSSBtZXRob2Rz
IHRvIHN1cHBvcnQgInByaXZhdGUiIHByb3BlcnRpZXMgb24gY3VzdG9tCisgICAgICAgIG9iamVj
dHMuCisKKyAgICAgICAgKiBBUEkvSlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpK
U0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNDYWxsYmFja09iamVjdERhdGEpOgorICAgICAgICAoSlND
OjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6fkpTQ2FsbGJhY2tPYmplY3REYXRhKToKKyAgICAgICAg
KEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OmdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6Om1hcmtDaGlsZHJlbik6CisgICAgICAg
IChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6Z2V0UHJp
dmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJp
dmF0ZVByb3BlcnR5TWFwOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0Nh
bGxiYWNrT2JqZWN0RGF0YTo6SlNQcml2YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9w
ZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9w
ZXJ0eU1hcDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6
Z2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6c2V0
UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6ZGVsZXRl
UHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6bWFya0No
aWxkcmVuKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmpl
Y3RHZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmplY3RTZXRQcml2YXRlUHJvcGVy
dHkpOgorICAgICAgICAoSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAq
IEFQSS9KU09iamVjdFJlZlByaXZhdGUuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rl
c3RhcGkuYzoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoK
KyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAy
MDEwLTAzLTE4ICBUb20gQ2FsbGF3YXkgIDx0Y2FsbGF3YUByZWRoYXQuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUuZXhwIGIvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4
IGJmZDQwYmQuLmY4OGM5M2MgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLmV4cAorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTE4LDgg
KzE4LDEwIEBAIF9KU0dsb2JhbENvbnRleHRSZXRhaW4KIF9KU09iamVjdENhbGxBc0NvbnN0cnVj
dG9yCiBfSlNPYmplY3RDYWxsQXNGdW5jdGlvbgogX0pTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMK
K19KU09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eQogX0pTT2JqZWN0RGVsZXRlUHJvcGVydHkK
IF9KU09iamVjdEdldFByaXZhdGUKK19KU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eQogX0pTT2Jq
ZWN0R2V0UHJvcGVydHkKIF9KU09iamVjdEdldFByb3BlcnR5QXRJbmRleAogX0pTT2JqZWN0R2V0
UHJvdG90eXBlCkBAIC0zNSw2ICszNyw3IEBAIF9KU09iamVjdE1ha2VGdW5jdGlvbgogX0pTT2Jq
ZWN0TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrCiBfSlNPYmplY3RNYWtlUmVnRXhwCiBfSlNPYmpl
Y3RTZXRQcml2YXRlCitfSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkKIF9KU09iamVjdFNldFBy
b3BlcnR5CiBfSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgKIF9KU09iamVjdFNldFByb3RvdHlw
ZQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvaiBiL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggYTBkNDU1Ni4uOTRjNTIwYyAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNzAsNiArMjcwLDcgQEAKIAkJQTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5P
YmplY3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTcyNzAwNzgwREFDNjA1NjAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovOyB9OwogCQlB
NzI3MDFCOTBEQURFOTQ5MDBFNTQ4RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0
OEQ3IC8qIEV4Y2VwdGlvbkhlbHBlcnMuaCAqLzsgfTsKIAkJQTcyN0ZGNkIwREEzMDkyMjAwRTU0
OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJv
cGVydHlOYW1lSXRlcmF0b3IuY3BwICovOyB9OworCQlBNzI4MEEyODExNTU3RTMwMDBENTY5NTcg
LyogSlNPYmplY3RSZWZQcml2YXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2
YXRlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTc0QjM0OTkxMDJBNUY4RTAwMzJBQjk4IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTgg
LyogTWFya1N0YWNrLmNwcCAqLzsgfTsKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE3QjQ4REI1MEVFNzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9y
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc2
RUU2NTkwRkFFNTlENTAwM0YwNjlBIC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTc2RUU2NTgwRkFFNTlENTAw
M0YwNjlBIC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04MjksNiArODMwLDcgQEAKIAkJQTc4MkYxQTQw
RUVDOUZBMjAwMzYyNzNGIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yUG9zaXguY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNzkxRUYyNjBGMTFFMDc5MDBBRTFGNjgg
LyogSlNCeXRlQXJyYXkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRl
QXJyYXkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTc5MUVGMjcwRjExRTA3OTAw
QUUxRjY4IC8qIEpTQnl0ZUFycmF5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQnl0ZUFycmF5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5
RURCMDgxMTUzMUNENjAwMTlFOTEyIC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU09iamVjdFJlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTdBMUY3QUEwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlQXJyYXkuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0ExRjdBQjBGMjUyQjNDMDBFMTg0RTIgLyog
Qnl0ZUFycmF5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVBcnJheS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYg
LyogRXhlY3V0YWJsZUFsbG9jYXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBFeGVjdXRhYmxlQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0x
MTk1LDYgKzExOTcsNyBAQAogCQkJCTE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRl
eHRSZWZQcml2YXRlLmggKi8sCiAJCQkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2Jq
ZWN0UmVmLmNwcCAqLywKIAkJCQkxNDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RS
ZWYuaCAqLywKKwkJCQlBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2
YXRlLmggKi8sCiAJCQkJOTU5ODhCQTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2
YXRlLmNwcCAqLywKIAkJCQk5NTJDNjNBQzBFNDc3N0Q2MDBDMTM5MzYgLyogSlNQcm9maWxlclBy
aXZhdGUuaCAqLywKIAkJCQk5NUMxOEQzRTBDOTBFN0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIu
aCAqLywKQEAgLTIwMDEsNiArMjAwNCw3IEBACiAJCQkJMTQyMEJFN0IxMEFBNkREQjAwRjQ1NUQy
IC8qIFdlYWtSYW5kb20uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDdBMEUxNkY1Q0QwMEIz
NDQ2MCAvKiBXZWJLaXRBdmFpbGFiaWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2
MEVEMTJCNEUwMDFENjQ5RiAvKiBYODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3
MjgwQTI4MTE1NTdFMzAwMEQ1Njk1NyAvKiBKU09iamVjdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwog
CQl9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>51240</attachid>
            <date>2010-03-20 20:25:45 -0700</date>
            <delta_ts>2010-03-20 23:57:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-36420-20100320202543.patch</filename>
            <type>text/plain</type>
            <size>20504</size>
            <attacher name="Oliver Hunt">oliver</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmggYi9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdC5oCmluZGV4IDBjMzM0Y2QuLjFjZjdhMDIg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0LmgKKysrIGIv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3QuaApAQCAtMzMsNiArMzMsODQgQEAK
IAogbmFtZXNwYWNlIEpTQyB7CiAKK3N0cnVjdCBKU0NhbGxiYWNrT2JqZWN0RGF0YSB7CisgICAg
SlNDYWxsYmFja09iamVjdERhdGEodm9pZCogcHJpdmF0ZURhdGEsIEpTQ2xhc3NSZWYganNDbGFz
cykKKyAgICAgICAgOiBwcml2YXRlRGF0YShwcml2YXRlRGF0YSkKKyAgICAgICAgLCBqc0NsYXNz
KGpzQ2xhc3MpCisgICAgeworICAgICAgICBKU0NsYXNzUmV0YWluKGpzQ2xhc3MpOworICAgIH0K
KyAgICAKKyAgICB+SlNDYWxsYmFja09iamVjdERhdGEoKQorICAgIHsKKyAgICAgICAgSlNDbGFz
c1JlbGVhc2UoanNDbGFzcyk7CisgICAgfQorICAgIAorICAgIEpTVmFsdWUgZ2V0UHJpdmF0ZVBy
b3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICB7CisgICAg
ICAgIGlmICghbV9wcml2YXRlUHJvcGVydGllcykKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
KCk7CisgICAgICAgIHJldHVybiBtX3ByaXZhdGVQcm9wZXJ0aWVzLT5nZXRQcml2YXRlUHJvcGVy
dHkocHJvcGVydHlOYW1lKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRQcml2YXRlUHJvcGVy
dHkoY29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlIHZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKCFtX3ByaXZhdGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgbV9wcml2YXRl
UHJvcGVydGllcy5zZXQobmV3IEpTUHJpdmF0ZVByb3BlcnR5TWFwKTsKKyAgICAgICAgbV9wcml2
YXRlUHJvcGVydGllcy0+c2V0UHJpdmF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUpOwor
ICAgIH0KKyAgICAKKyAgICB2b2lkIGRlbGV0ZVByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUpCisgICAgeworICAgICAgICBpZiAoIW1fcHJpdmF0ZVByb3BlcnRp
ZXMpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fcHJpdmF0ZVByb3BlcnRpZXMtPmRl
bGV0ZVByaXZhdGVQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpOworICAgIH0KKworICAgIHZvaWQgbWFy
a0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3By
aXZhdGVQcm9wZXJ0aWVzKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3ByaXZhdGVQ
cm9wZXJ0aWVzLT5tYXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICB9CisKKyAgICB2b2lkKiBw
cml2YXRlRGF0YTsKKyAgICBKU0NsYXNzUmVmIGpzQ2xhc3M7CisgICAgc3RydWN0IEpTUHJpdmF0
ZVByb3BlcnR5TWFwIHsKKyAgICAgICAgSlNWYWx1ZSBnZXRQcml2YXRlUHJvcGVydHkoY29uc3Qg
SWRlbnRpZmllciYgcHJvcGVydHlOYW1lKSBjb25zdAorICAgICAgICB7CisgICAgICAgICAgICBQ
cml2YXRlUHJvcGVydHlNYXA6OmNvbnN0X2l0ZXJhdG9yIGxvY2F0aW9uID0gbV9wcm9wZXJ0eU1h
cC5maW5kKHByb3BlcnR5TmFtZS51c3RyaW5nKCkucmVwKCkpOworICAgICAgICAgICAgaWYgKGxv
Y2F0aW9uID09IG1fcHJvcGVydHlNYXAuZW5kKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWUoKTsKKyAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi0+c2Vjb25kOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICB2b2lkIHNldFByaXZhdGVQcm9wZXJ0eShjb25zdCBJZGVudGlm
aWVyJiBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUgdmFsdWUpCisgICAgICAgIHsKKyAgICAgICAgICAg
IG1fcHJvcGVydHlNYXAuc2V0KHByb3BlcnR5TmFtZS51c3RyaW5nKCkucmVwKCksIHZhbHVlKTsK
KyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZWxldGVQcml2YXRlUHJvcGVydHko
Y29uc3QgSWRlbnRpZmllciYgcHJvcGVydHlOYW1lKQorICAgICAgICB7CisgICAgICAgICAgICBt
X3Byb3BlcnR5TWFwLnJlbW92ZShwcm9wZXJ0eU5hbWUudXN0cmluZygpLnJlcCgpKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHZvaWQgbWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQor
ICAgICAgICB7CisgICAgICAgICAgICBmb3IgKFByaXZhdGVQcm9wZXJ0eU1hcDo6aXRlcmF0b3Ig
cHRyID0gbV9wcm9wZXJ0eU1hcC5iZWdpbigpOyBwdHIgIT0gbV9wcm9wZXJ0eU1hcC5lbmQoKTsg
KytwdHIpIHsKKyAgICAgICAgICAgICAgICBpZiAocHRyLT5zZWNvbmQpCisgICAgICAgICAgICAg
ICAgICAgIG1hcmtTdGFjay5hcHBlbmQocHRyLT5zZWNvbmQpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPFVT
dHJpbmc6OlJlcD4sIEpTVmFsdWUsIElkZW50aWZpZXJSZXBIYXNoPiBQcml2YXRlUHJvcGVydHlN
YXA7CisgICAgICAgIFByaXZhdGVQcm9wZXJ0eU1hcCBtX3Byb3BlcnR5TWFwOworICAgIH07Cisg
ICAgT3duUHRyPEpTUHJpdmF0ZVByb3BlcnR5TWFwPiBtX3ByaXZhdGVQcm9wZXJ0aWVzOworfTsK
KworICAgIAogdGVtcGxhdGUgPGNsYXNzIEJhc2U+CiBjbGFzcyBKU0NhbGxiYWNrT2JqZWN0IDog
cHVibGljIEJhc2UgewogcHVibGljOgpAQCAtNTIsNiArMTMwLDIxIEBAIHB1YmxpYzoKICAgICB7
IAogICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUocHJvdG8sIFR5cGVJbmZvKE9iamVj
dFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgQmFzZTo6QW5vbnltb3VzU2xvdENvdW50KTsgCiAgICAg
fQorICAgIAorICAgIEpTVmFsdWUgZ2V0UHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXIm
IHByb3BlcnR5TmFtZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2NhbGxiYWNrT2Jq
ZWN0RGF0YS0+Z2V0UHJpdmF0ZVByb3BlcnR5KHByb3BlcnR5TmFtZSk7CisgICAgfQorICAgIAor
ICAgIHZvaWQgc2V0UHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2tPYmplY3REYXRhLT5z
ZXRQcml2YXRlUHJvcGVydHkocHJvcGVydHlOYW1lLCB2YWx1ZSk7CisgICAgfQorICAgIAorICAg
IHZvaWQgZGVsZXRlUHJpdmF0ZVByb3BlcnR5KGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFt
ZSkKKyAgICB7CisgICAgICAgIG1fY2FsbGJhY2tPYmplY3REYXRhLT5kZWxldGVQcml2YXRlUHJv
cGVydHkocHJvcGVydHlOYW1lKTsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBPdmVycmlkZXNHZXRPd25Qcm9wZXJ0eVNsb3Qg
fCBJbXBsZW1lbnRzSGFzSW5zdGFuY2UgfCBPdmVycmlkZXNIYXNJbnN0YW5jZSB8IE92ZXJyaWRl
c01hcmtDaGlsZHJlbiB8IE92ZXJyaWRlc0dldFByb3BlcnR5TmFtZXMgfCBCYXNlOjpTdHJ1Y3R1
cmVGbGFnczsKQEAgLTc5LDYgKzE3MiwxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgQ2FsbFR5
cGUgZ2V0Q2FsbERhdGEoQ2FsbERhdGEmKTsKICAgICB2aXJ0dWFsIGNvbnN0IENsYXNzSW5mbyog
Y2xhc3NJbmZvKCkgY29uc3QgeyByZXR1cm4gJmluZm87IH0KIAorICAgIHZpcnR1YWwgdm9pZCBt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCisgICAgeworICAgICAgICBCYXNlOjpt
YXJrQ2hpbGRyZW4obWFya1N0YWNrKTsKKyAgICAgICAgbV9jYWxsYmFja09iamVjdERhdGEtPm1h
cmtDaGlsZHJlbihtYXJrU3RhY2spOworICAgIH0KKwogICAgIHZvaWQgaW5pdChFeGVjU3RhdGUq
KTsKICAKICAgICBzdGF0aWMgSlNDYWxsYmFja09iamVjdCogYXNDYWxsYmFja09iamVjdChKU1Zh
bHVlKTsKQEAgLTkwLDIzICsxODksNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBKU1ZhbHVlIHN0
YXRpY0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGNvbnN0IElkZW50aWZpZXIm
KTsKICAgICBzdGF0aWMgSlNWYWx1ZSBjYWxsYmFja0dldHRlcihFeGVjU3RhdGUqLCBKU1ZhbHVl
LCBjb25zdCBJZGVudGlmaWVyJik7CiAKLSAgICBzdHJ1Y3QgSlNDYWxsYmFja09iamVjdERhdGEg
ewotICAgICAgICBKU0NhbGxiYWNrT2JqZWN0RGF0YSh2b2lkKiBwcml2YXRlRGF0YSwgSlNDbGFz
c1JlZiBqc0NsYXNzKQotICAgICAgICAgICAgOiBwcml2YXRlRGF0YShwcml2YXRlRGF0YSkKLSAg
ICAgICAgICAgICwganNDbGFzcyhqc0NsYXNzKQotICAgICAgICB7Ci0gICAgICAgICAgICBKU0Ns
YXNzUmV0YWluKGpzQ2xhc3MpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB+SlNDYWxs
YmFja09iamVjdERhdGEoKQotICAgICAgICB7Ci0gICAgICAgICAgICBKU0NsYXNzUmVsZWFzZShq
c0NsYXNzKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCogcHJpdmF0ZURhdGE7
Ci0gICAgICAgIEpTQ2xhc3NSZWYganNDbGFzczsKLSAgICB9OwotICAgIAogICAgIE93blB0cjxK
U0NhbGxiYWNrT2JqZWN0RGF0YT4gbV9jYWxsYmFja09iamVjdERhdGE7CiB9OwogCmRpZmYgLS1n
aXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwIGIvSmF2YVNjcmlwdENvcmUv
QVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA4MWFjNWI1Li44ZmRiZGFiIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKIAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkpTT2JqZWN0UmVmLmgiCisjaW5jbHVkZSAiSlNPYmplY3RSZWZQcml2YXRl
LmgiCiAKICNpbmNsdWRlICJBUElDYXN0LmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCkBAIC0z
NjMsNiArMzY0LDU1IEBAIGJvb2wgSlNPYmplY3RTZXRQcml2YXRlKEpTT2JqZWN0UmVmIG9iamVj
dCwgdm9pZCogZGF0YSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK0pTVmFsdWVSZWYgSlNPYmpl
Y3RHZXRQcml2YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBKU1N0cmluZ1JlZiBwcm9wZXJ0eU5hbWUpCit7CisgICAgRXhlY1N0YXRlKiBleGVjID0gdG9K
UyhjdHgpOworICAgIEFQSUVudHJ5U2hpbSBlbnRyeVNoaW0oZXhlYyk7CisgICAgSlNPYmplY3Qq
IGpzT2JqZWN0ID0gdG9KUyhvYmplY3QpOworICAgIEpTVmFsdWUgcmVzdWx0OworICAgIElkZW50
aWZpZXIgbmFtZShwcm9wZXJ0eU5hbWUtPmlkZW50aWZpZXIoJmV4ZWMtPmdsb2JhbERhdGEoKSkp
OworICAgIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxP
YmplY3Q+OjppbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU0dsb2JhbE9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1l
KTsKKyAgICBlbHNlIGlmIChqc09iamVjdC0+aW5oZXJpdHMoJkpTQ2FsbGJhY2tPYmplY3Q8SlNP
YmplY3Q+OjppbmZvKSkKKyAgICAgICAgcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU09iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGVQcm9wZXJ0eShuYW1lKTsKKyAg
ICByZXR1cm4gdG9SZWYoZXhlYywgcmVzdWx0KTsKK30KKworYm9vbCBKU09iamVjdFNldFByaXZh
dGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5n
UmVmIHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSlNWYWx1ZSBqc1ZhbHVlID0g
dG9KUyhleGVjLCB2YWx1ZSk7CisgICAgSWRlbnRpZmllciBuYW1lKHByb3BlcnR5TmFtZS0+aWRl
bnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CisgICAgaWYgKGpzT2JqZWN0LT5pbmhlcml0
cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmluZm8pKSB7CisgICAgICAgIHN0
YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+Kj4oanNPYmplY3QpLT5z
ZXRQcml2YXRlUHJvcGVydHkobmFtZSwganNWYWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2JqZWN0PEpTT2Jq
ZWN0Pjo6aW5mbykpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09iamVjdDxKU09i
amVjdD4qPihqc09iamVjdCktPnNldFByaXZhdGVQcm9wZXJ0eShuYW1lLCBqc1ZhbHVlKTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBK
U09iamVjdERlbGV0ZVByaXZhdGVQcm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJl
ZiBvYmplY3QsIEpTU3RyaW5nUmVmIHByb3BlcnR5TmFtZSkKK3sKKyAgICBFeGVjU3RhdGUqIGV4
ZWMgPSB0b0pTKGN0eCk7CisgICAgQVBJRW50cnlTaGltIGVudHJ5U2hpbShleGVjKTsKKyAgICBK
U09iamVjdCoganNPYmplY3QgPSB0b0pTKG9iamVjdCk7CisgICAgSWRlbnRpZmllciBuYW1lKHBy
b3BlcnR5TmFtZS0+aWRlbnRpZmllcigmZXhlYy0+Z2xvYmFsRGF0YSgpKSk7CisgICAgaWYgKGpz
T2JqZWN0LT5pbmhlcml0cygmSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmluZm8p
KSB7CisgICAgICAgIHN0YXRpY19jYXN0PEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+
Kj4oanNPYmplY3QpLT5kZWxldGVQcml2YXRlUHJvcGVydHkobmFtZSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0KKyAgICBpZiAoanNPYmplY3QtPmluaGVyaXRzKCZKU0NhbGxiYWNrT2Jq
ZWN0PEpTT2JqZWN0Pjo6aW5mbykpIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8SlNDYWxsYmFja09i
amVjdDxKU09iamVjdD4qPihqc09iamVjdCktPmRlbGV0ZVByaXZhdGVQcm9wZXJ0eShuYW1lKTsK
KyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogYm9v
bCBKU09iamVjdElzRnVuY3Rpb24oSlNDb250ZXh0UmVmLCBKU09iamVjdFJlZiBvYmplY3QpCiB7
CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNPYmplY3RSZWZQcml2YXRlLmggYi9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWZQcml2
YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc0ZmMyZAotLS0gL2Rl
di9udWxsCisrKyBiL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZlByaXZhdGUuaApAQCAt
MCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU09iamVjdFJlZlByaXZhdGVfaAor
I2RlZmluZSBKU09iamVjdFJlZlByaXZhdGVfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SlNPYmplY3RSZWYuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRp
ZgorCisvKiEKKyBAZnVuY3Rpb24KKyBAYWJzdHJhY3QgU2V0cyBhIHByaXZhdGUgcHJvcGVydHkg
b24gYW4gb2JqZWN0LiAgVGhpcyBwcml2YXRlIHByb3BlcnR5IGNhbm5vdCBiZSBhY2Nlc3NlZCBm
cm9tIHdpdGhpbiBKYXZhU2NyaXB0LgorIEBwYXJhbSBjdHggVGhlIGV4ZWN1dGlvbiBjb250ZXh0
IHRvIHVzZS4KKyBAcGFyYW0gb2JqZWN0IFRoZSBKU09iamVjdCB3aG9zZSBwcml2YXRlIHByb3Bl
cnR5IHlvdSB3YW50IHRvIHNldC4KKyBAcGFyYW0gcHJvcGVydHlOYW1lIEEgSlNTdHJpbmcgY29u
dGFpbmluZyB0aGUgcHJvcGVydHkncyBuYW1lLgorIEBwYXJhbSB2YWx1ZSBBIEpTVmFsdWUgdG8g
dXNlIGFzIHRoZSBwcm9wZXJ0eSdzIHZhbHVlLiAgVGhpcyBtYXkgYmUgTlVMTC4KKyBAZGlzY3Vz
c2lvbiBUaGlzIEFQSSBhbGxvd3MgeW91IHRvIHN0b3JlIEpTIHZhbHVlcyBkaXJlY3RseSBhbiBv
YmplY3QgaW4gYSB3YXkgdGhhdCB3aWxsIGJlIGVuc3VyZSB0aGF0IHRoZXkgYXJlIGtlcHQgYWxp
dmUgd2l0aG91dCBleHBvc2luZyB0aGVtIHRvIEphdmFTY3JpcHQgY29kZSBhbmQgd2l0aG91dCBp
bnRyb2R1Y2luZyB0aGUgcmVmZXJlbmNlIGN5Y2xlcyB0aGF0IG1heSBvY2N1ciB3aGVuIHVzaW5n
IEpTVmFsdWVQcm90ZWN0LgorICovCitKU19FWFBPUlQgYm9vbCBKU09iamVjdFNldFByaXZhdGVQ
cm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSk7CisKKy8qIQorIEBmdW5jdGlvbgorIEBh
YnN0cmFjdCBHZXRzIGEgcHJpdmF0ZSBwcm9wZXJ0eSBmcm9tIGFuIG9iamVjdC4KKyBAcGFyYW0g
Y3R4IFRoZSBleGVjdXRpb24gY29udGV4dCB0byB1c2UuCisgQHBhcmFtIG9iamVjdCBUaGUgSlNP
YmplY3Qgd2hvc2UgcHJpdmF0ZSBwcm9wZXJ0eSB5b3Ugd2FudCB0byBnZXQuCisgQHBhcmFtIHBy
b3BlcnR5TmFtZSBBIEpTU3RyaW5nIGNvbnRhaW5pbmcgdGhlIHByb3BlcnR5J3MgbmFtZS4KKyBA
cmVzdWx0IFRoZSBwcm9wZXJ0eSdzIHZhbHVlIGlmIG9iamVjdCBoYXMgdGhlIHByb3BlcnR5LCBv
dGhlcndpc2UgTlVMTC4KKyAqLworSlNfRVhQT1JUIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcml2
YXRlUHJvcGVydHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmlu
Z1JlZiBwcm9wZXJ0eU5hbWUpOworCisvKiEKKyBAZnVuY3Rpb24KKyBAYWJzdHJhY3QgRGVsZXRl
cyBhIHByaXZhdGUgcHJvcGVydHkgZnJvbSBhbiBvYmplY3QuCisgQHBhcmFtIGN0eCBUaGUgZXhl
Y3V0aW9uIGNvbnRleHQgdG8gdXNlLgorIEBwYXJhbSBvYmplY3QgVGhlIEpTT2JqZWN0IHdob3Nl
IHByaXZhdGUgcHJvcGVydHkgeW91IHdhbnQgdG8gZGVsZXRlLgorIEBwYXJhbSBwcm9wZXJ0eU5h
bWUgQSBKU1N0cmluZyBjb250YWluaW5nIHRoZSBwcm9wZXJ0eSdzIG5hbWUuCisgKi8KK0pTX0VY
UE9SVCBib29sIEpTT2JqZWN0RGVsZXRlUHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgs
IEpTT2JqZWN0UmVmIG9iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lKTsKKworI2lmZGVm
IF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIEpTT2JqZWN0UmVmUHJpdmF0ZV9o
CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jIGIvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL3Rlc3RhcGkuYwppbmRleCAyZGY2MzM0Li42ZTFjZjJkIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvdGVzdGFwaS5jCisrKyBiL0phdmFTY3Jp
cHRDb3JlL0FQSS90ZXN0cy90ZXN0YXBpLmMKQEAgLTQyLDYgKzQyLDEwIEBAIHN0YXRpYyBkb3Vi
bGUgbmFuKGNvbnN0IGNoYXIqKQogCiAjZW5kaWYKIAorYm9vbCBKU09iamVjdFNldFByaXZhdGVQ
cm9wZXJ0eShKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIEpTU3RyaW5nUmVm
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZVJlZiB2YWx1ZSk7CitKU1ZhbHVlUmVmIEpTT2JqZWN0R2V0
UHJpdmF0ZVByb3BlcnR5KEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNT
dHJpbmdSZWYgcHJvcGVydHlOYW1lKTsKK2Jvb2wgSlNPYmplY3REZWxldGVQcml2YXRlUHJvcGVy
dHkoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBKU1N0cmluZ1JlZiBwcm9w
ZXJ0eU5hbWUpOworCiBzdGF0aWMgSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQ7CiBzdGF0aWMg
aW50IGZhaWxlZDsKIHN0YXRpYyB2b2lkIGFzc2VydEVxdWFsc0FzQm9vbGVhbihKU1ZhbHVlUmVm
IHZhbHVlLCBib29sIGV4cGVjdGVkVmFsdWUpCkBAIC03NTQsNiArNzU4LDggQEAgc3RhdGljIHZv
aWQgdGVzdEluaXRpYWxpemVGaW5hbGl6ZSgpCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGpzTnVtYmVy
VmFsdWUgPSAgTlVMTDsKIAorc3RhdGljIEpTT2JqZWN0UmVmIGFIZWFwUmVmID0gTlVMTDsKKwog
c3RhdGljIHZvaWQgbWFrZUdsb2JhbE51bWJlclZhbHVlKEpTQ29udGV4dFJlZiBjb250ZXh0KSB7
CiAgICAgSlNWYWx1ZVJlZiB2ID0gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgNDIwKTsKICAg
ICBKU1ZhbHVlUHJvdGVjdChjb250ZXh0LCB2KTsKQEAgLTg2OSw3ICs4NzUsNTIgQEAgaW50IG1h
aW4oaW50IGFyZ2MsIGNoYXIqIGFyZ3ZbXSkKICAgICBKU1N0cmluZ1JlZiBFbXB0eU9iamVjdElT
dHJpbmcgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygiRW1wdHlPYmplY3QiKTsKICAg
ICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIGdsb2JhbE9iamVjdCwgRW1wdHlPYmplY3RJ
U3RyaW5nLCBFbXB0eU9iamVjdCwga0pTUHJvcGVydHlBdHRyaWJ1dGVOb25lLCBOVUxMKTsKICAg
ICBKU1N0cmluZ1JlbGVhc2UoRW1wdHlPYmplY3RJU3RyaW5nKTsKKyAgICAKKyAgICBKU1N0cmlu
Z1JlZiBsZW5ndGhTdHIgPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygibGVuZ3RoIik7
CisgICAgYUhlYXBSZWYgPSBKU09iamVjdE1ha2VBcnJheShjb250ZXh0LCAwLCAwLCAwKTsKKyAg
ICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRleHQsIGFIZWFwUmVmLCBsZW5ndGhTdHIsIEpTVmFs
dWVNYWtlTnVtYmVyKGNvbnRleHQsIDEwKSwgMCwgMCk7CisgICAgSlNTdHJpbmdSZWYgcHJpdmF0
ZVByb3BlcnR5TmFtZSA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJwcml2YXRlUHJv
cGVydHkiKTsKKyAgICBpZiAoIUpTT2JqZWN0U2V0UHJpdmF0ZVByb3BlcnR5KGNvbnRleHQsIG15
T2JqZWN0LCBwcml2YXRlUHJvcGVydHlOYW1lLCBhSGVhcFJlZikpIHsKKyAgICAgICAgcHJpbnRm
KCJGQUlMOiBDb3VsZCBub3Qgc2V0IHByaXZhdGUgcHJvcGVydHkuXG4iKTsKKyAgICAgICAgZmFp
bGVkID0gMTsgICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiUEFTUzogU2V0
IHByaXZhdGUgcHJvcGVydHkuXG4iKTsKKyAgICB9CisgICAgaWYgKEpTT2JqZWN0U2V0UHJpdmF0
ZVByb3BlcnR5KGNvbnRleHQsIGFIZWFwUmVmLCBwcml2YXRlUHJvcGVydHlOYW1lLCBhSGVhcFJl
ZikpIHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSBz
aG91bGQgZmFpbCBvbiBub24tQVBJIG9iamVjdHMuXG4iKTsKKyAgICAgICAgZmFpbGVkID0gMTsg
ICAgICAgIAorICAgIH0gZWxzZSB7CisgICAgICAgIHByaW50ZigiUEFTUzogRGlkIG5vdCBhbGxv
dyBKU09iamVjdFNldFByaXZhdGVQcm9wZXJ0eSBvbiBhIG5vbi1BUEkgb2JqZWN0LlxuIik7Cisg
ICAgfQorICAgIGlmIChKU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eShjb250ZXh0LCBteU9iamVj
dCwgcHJpdmF0ZVByb3BlcnR5TmFtZSkgIT0gYUhlYXBSZWYpIHsKKyAgICAgICAgcHJpbnRmKCJG
QUlMOiBDb3VsZCBub3QgcmV0cmlldmUgcHJpdmF0ZSBwcm9wZXJ0eS5cbiIpOworICAgICAgICBm
YWlsZWQgPSAxOworICAgIH0gZWxzZQorICAgICAgICBwcmludGYoIlBBU1M6IFJldHJpZXZlZCBw
cml2YXRlIHByb3BlcnR5LlxuIik7CisgICAgaWYgKEpTT2JqZWN0R2V0UHJpdmF0ZVByb3BlcnR5
KGNvbnRleHQsIGFIZWFwUmVmLCBwcml2YXRlUHJvcGVydHlOYW1lKSkgeworICAgICAgICBwcmlu
dGYoIkZBSUw6IEpTT2JqZWN0R2V0UHJpdmF0ZVByb3BlcnR5IHNob3VsZCByZXR1cm4gTlVMTCB3
aGVuIGNhbGxlZCBvbiBhIG5vbi1BUEkgb2JqZWN0LlxuIik7CisgICAgICAgIGZhaWxlZCA9IDE7
CisgICAgfSBlbHNlCisgICAgICAgIHByaW50ZigiUEFTUzogSlNPYmplY3RHZXRQcml2YXRlUHJv
cGVydHkgcmV0dXJuIE5VTEwuXG4iKTsKKyAgICAKKyAgICBpZiAoSlNPYmplY3RHZXRQcm9wZXJ0
eShjb250ZXh0LCBteU9iamVjdCwgcHJpdmF0ZVByb3BlcnR5TmFtZSwgMCkgPT0gYUhlYXBSZWYp
IHsKKyAgICAgICAgcHJpbnRmKCJGQUlMOiBBY2Nlc3NlZCBwcml2YXRlIHByb3BlcnR5IHRocm91
Z2ggb3JkaW5hcnkgcHJvcGVydHkgbG9va3VwLlxuIik7CisgICAgICAgIGZhaWxlZCA9IDE7Cisg
ICAgfSBlbHNlCisgICAgICAgIHByaW50ZigiUEFTUzogQ2Fubm90IGFjY2VzcyBwcml2YXRlIHBy
b3BlcnR5IHRocm91Z2ggb3JkaW5hcnkgcHJvcGVydHkgbG9va3VwLlxuIik7CisgICAgCisgICAg
SlNHYXJiYWdlQ29sbGVjdChjb250ZXh0KTsKKyAgICAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8
IDEwMDAwOyBpKyspCisgICAgICAgIEpTT2JqZWN0TWFrZShjb250ZXh0LCAwLCAwKTsKIAorICAg
IGlmIChKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQcm9wZXJ0eShjb250ZXh0
LCBhSGVhcFJlZiwgbGVuZ3RoU3RyLCAwKSwgMCkgIT0gMTApIHsKKyAgICAgICAgcHJpbnRmKCJG
QUlMOiBQcml2YXRlIHByb3BlcnR5IGhhcyBiZWVuIGNvbGxlY3RlZC5cbiIpOworICAgICAgICBm
YWlsZWQgPSAxOworICAgIH0gZWxzZQorICAgICAgICBwcmludGYoIlBBU1M6IFByaXZhdGUgcHJv
cGVydHkgZG9lcyBub3QgYXBwZWFyIHRvIGhhdmUgYmVlbiBjb2xsZWN0ZWQuXG4iKTsKKyAgICBK
U1N0cmluZ1JlbGVhc2UobGVuZ3RoU3RyKTsKKyAgICAKICAgICBKU1N0cmluZ1JlZiB2YWxpZEpT
T04gPSBKU1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZygie1wiYVByb3BlcnR5XCI6dHJ1ZX0i
KTsKICAgICBKU1ZhbHVlUmVmIGpzb25PYmplY3QgPSBKU1ZhbHVlTWFrZUZyb21KU09OU3RyaW5n
KGNvbnRleHQsIHZhbGlkSlNPTik7CiAgICAgSlNTdHJpbmdSZWxlYXNlKHZhbGlkSlNPTik7CmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cKaW5kZXggNzIyMjBiYS4uN2UwMTU0YiAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBA
CisyMDEwLTAzLTIwICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSlNDIG5lZWRzIGFuIEFQSSB0
byBhbGxvdyBjdXN0b20gb2JqZWN0cyB0byBoYXZlIGFwcml2YXRlIEdDLWFjY2Vzc2libGUgcHJv
cGVydGllcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzY0MjAKKworICAgICAgICBBZGQgbmV3IEFQSSBtZXRob2RzIHRvIHN1cHBvcnQgInByaXZhdGUi
IHByb3BlcnRpZXMgb24gY3VzdG9tCisgICAgICAgIG9iamVjdHMuCisKKyAgICAgICAgKiBBUEkv
SlNDYWxsYmFja09iamVjdC5oOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6
SlNDYWxsYmFja09iamVjdERhdGEpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0
YTo6fkpTQ2FsbGJhY2tPYmplY3REYXRhKToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVj
dERhdGE6OmdldFByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3REYXRhOjpzZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2Jq
ZWN0RGF0YTo6ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFj
a09iamVjdERhdGE6Om1hcmtDaGlsZHJlbik6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmpl
Y3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6Z2V0UHJpdmF0ZVByb3BlcnR5KToKKyAgICAg
ICAgKEpTQzo6SlNDYWxsYmFja09iamVjdERhdGE6OkpTUHJpdmF0ZVByb3BlcnR5TWFwOjpzZXRQ
cml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0RGF0YTo6SlNQ
cml2YXRlUHJvcGVydHlNYXA6OmRlbGV0ZVByaXZhdGVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
OkpTQ2FsbGJhY2tPYmplY3REYXRhOjpKU1ByaXZhdGVQcm9wZXJ0eU1hcDo6bWFya0NoaWxkcmVu
KToKKyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6Z2V0UHJpdmF0ZVByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6c2V0UHJpdmF0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6ZGVsZXRlUHJpdmF0ZVByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6SlNDYWxsYmFja09iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBB
UEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RHZXRQcml2YXRlUHJvcGVydHkp
OgorICAgICAgICAoSlNPYmplY3RTZXRQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAoSlNPYmpl
Y3REZWxldGVQcml2YXRlUHJvcGVydHkpOgorICAgICAgICAqIEFQSS9KU09iamVjdFJlZlByaXZh
dGUuaDogQWRkZWQuCisgICAgICAgICogQVBJL3Rlc3RzL3Rlc3RhcGkuYzoKKyAgICAgICAgKG1h
aW4pOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmV4cDoKKyAgICAgICAgKiBKYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDEwLTAzLTE4ICBUb20gQ2FsbGF3
YXkgIDx0Y2FsbGF3YUByZWRoYXQuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFk
bGVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwIGIvSmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZXhwCmluZGV4IGJmZDQwYmQuLmY4OGM5M2MgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmV4cAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5leHAKQEAgLTE4LDggKzE4LDEwIEBAIF9KU0dsb2JhbENv
bnRleHRSZXRhaW4KIF9KU09iamVjdENhbGxBc0NvbnN0cnVjdG9yCiBfSlNPYmplY3RDYWxsQXNG
dW5jdGlvbgogX0pTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMKK19KU09iamVjdERlbGV0ZVByaXZh
dGVQcm9wZXJ0eQogX0pTT2JqZWN0RGVsZXRlUHJvcGVydHkKIF9KU09iamVjdEdldFByaXZhdGUK
K19KU09iamVjdEdldFByaXZhdGVQcm9wZXJ0eQogX0pTT2JqZWN0R2V0UHJvcGVydHkKIF9KU09i
amVjdEdldFByb3BlcnR5QXRJbmRleAogX0pTT2JqZWN0R2V0UHJvdG90eXBlCkBAIC0zNSw2ICsz
Nyw3IEBAIF9KU09iamVjdE1ha2VGdW5jdGlvbgogX0pTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENh
bGxiYWNrCiBfSlNPYmplY3RNYWtlUmVnRXhwCiBfSlNPYmplY3RTZXRQcml2YXRlCitfSlNPYmpl
Y3RTZXRQcml2YXRlUHJvcGVydHkKIF9KU09iamVjdFNldFByb3BlcnR5CiBfSlNPYmplY3RTZXRQ
cm9wZXJ0eUF0SW5kZXgKIF9KU09iamVjdFNldFByb3RvdHlwZQpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXgg
YTBkNDU1Ni4uOTRjNTIwYyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9KYXZhU2NyaXB0Q29yZS9KYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzAsNiArMjcwLDcgQEAKIAkJ
QTcyNzAwOTAwREFDNkJCQzAwRTU0OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcyNzAwNzgwREFDNjA1NjAwRTU0
OEQ3IC8qIEpTTm90QW5PYmplY3QuY3BwICovOyB9OwogCQlBNzI3MDFCOTBEQURFOTQ5MDBFNTQ4
RDcgLyogRXhjZXB0aW9uSGVscGVycy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTcyNzAxQjMwREFERTk0OTAwRTU0OEQ3IC8qIEV4Y2VwdGlvbkhlbHBl
cnMuaCAqLzsgfTsKIAkJQTcyN0ZGNkIwREEzMDkyMjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1l
SXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTcyN0ZGNjYwREEzMDUzQjAwRTU0OEQ3IC8qIEpTUHJvcGVydHlOYW1lSXRlcmF0b3IuY3Bw
ICovOyB9OworCQlBNzI4MEEyODExNTU3RTMwMDBENTY5NTcgLyogSlNPYmplY3RSZWZQcml2YXRl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNzlFREIw
ODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc0QjM0OTkxMDJBNUY4RTAwMzJB
Qjk4IC8qIE1hcmtTdGFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNzRCMzQ5ODEwMkE1RjhFMDAzMkFCOTggLyogTWFya1N0YWNrLmNwcCAqLzsg
fTsKIAkJQTc2NkI0NEYwRUU4RENEMTAwOTUxOENBIC8qIEV4ZWN1dGFibGVBbGxvY2F0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE3QjQ4REI1MEVF
NzRDRkMwMERDQkRCNiAvKiBFeGVjdXRhYmxlQWxsb2NhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTc2RUU2NTkwRkFFNTlENTAwM0YwNjlB
IC8qIE5hdGl2ZUZ1bmN0aW9uV3JhcHBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQTc2RUU2NTgwRkFFNTlENTAwM0YwNjlBIC8qIE5hdGl2ZUZ1bmN0
aW9uV3JhcHBlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CkBAIC04MjksNiArODMwLDcgQEAKIAkJQTc4MkYxQTQwRUVDOUZBMjAwMzYyNzNGIC8qIEV4
ZWN1dGFibGVBbGxvY2F0b3JQb3NpeC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9yUG9zaXguY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBNzkxRUYyNjBGMTFFMDc5MDBBRTFGNjggLyogSlNCeXRlQXJyYXkuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCeXRlQXJyYXkuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTc5MUVGMjcwRjExRTA3OTAwQUUxRjY4IC8qIEpTQnl0ZUFycmF5
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQnl0ZUFycmF5LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTc5RURCMDgxMTUzMUNENjAwMTlFOTEy
IC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU09iamVjdFJlZlByaXZhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTdB
MUY3QUEwRjI1MkIzQzAwRTE4NEUyIC8qIEJ5dGVBcnJheS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBCeXRlQXJyYXkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBN0ExRjdBQjBGMjUyQjNDMDBFMTg0RTIgLyogQnl0ZUFycmF5LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJ5dGVBcnJheS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlBN0I0OERCNTBFRTc0Q0ZDMDBEQ0JEQjYgLyogRXhlY3V0YWJsZUFsbG9jYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRhYmxlQWxsb2NhdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTk1LDYgKzExOTcsNyBAQAogCQkJ
CTE0OENEMUQ3MTA4Q0Y5MDIwMDgxNjNDNiAvKiBKU0NvbnRleHRSZWZQcml2YXRlLmggKi8sCiAJ
CQkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmNwcCAqLywKIAkJCQkx
NDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuaCAqLywKKwkJCQlBNzlFREIw
ODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRlLmggKi8sCiAJCQkJOTU5ODhC
QTkwRTQ3N0JFQzAwRDI4RDREIC8qIEpTUHJvZmlsZXJQcml2YXRlLmNwcCAqLywKIAkJCQk5NTJD
NjNBQzBFNDc3N0Q2MDBDMTM5MzYgLyogSlNQcm9maWxlclByaXZhdGUuaCAqLywKIAkJCQk5NUMx
OEQzRTBDOTBFN0VGMDBFNzJGNzMgLyogSlNSZXRhaW5QdHIuaCAqLywKQEAgLTIwMDEsNiArMjAw
NCw3IEBACiAJCQkJMTQyMEJFN0IxMEFBNkREQjAwRjQ1NUQyIC8qIFdlYWtSYW5kb20uaCBpbiBI
ZWFkZXJzICovLAogCQkJCUJDMThDNDdBMEUxNkY1Q0QwMEIzNDQ2MCAvKiBXZWJLaXRBdmFpbGFi
aWxpdHkuaCBpbiBIZWFkZXJzICovLAogCQkJCTk2ODhDQjE2MEVEMTJCNEUwMDFENjQ5RiAvKiBY
ODZBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCUE3MjgwQTI4MTE1NTdFMzAwMEQ1Njk1
NyAvKiBKU09iamVjdFJlZlByaXZhdGUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="34460"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>